ROS多机通信

本文档详细介绍了如何在两台局域网电脑上进行ROS(Robot Operating System)的设置,包括获取和确认IP及主机名,修改主机名和hosts文件,以及配置ROS的环境变量,确保节点间通信的正常。主要步骤涉及主机名的查看与修改,以及在双方电脑上设置ROS_HOSTNAME和ROS_MASTER_URI,最后通过ping命令测试连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作:

1、2台局域网电脑,主机A、B

2、获取A、B的IP和主机名(hostname,非user),可以通过已下方式获取

//主机名
cat /etc/hostname
//ip
ifconfig

3、如果要修改主机名(可以不用修改)

//需要修改2个文件
sudo vi /etc/hostname
//这个文件里面和hostname相同的改成同一个
sudo vi /etc/hosts

4、hosts文件增加对方ip和主机名,两边都要加

sudo vi /etc/hosts
127.0.0.1	    localhost
127.0.1.1	    nvidia-desktop
192.168.1.100   Ahostname
//加完ping一下
ping Ahostname

5、环境变量增加ros的配置,两边都要加,注意ROS_HOSTNAME字段写自己的hostname

//修改这个文件
sudo vi ~/.bashrc

//从机B
export ROS_HOSTNAME=Bhostname
export ROS_MASTER_URI=http://Ahostname:11311

//主机A
export ROS_HOSTNAME=Ahostname
export ROS_MASTER_URI=http://Ahostname:11311

//刷新环境变量
source ~/.bashrc

### ROS 多机通信配置与实现方法 #### 主从网络设置 为了确保台计算能够相互通信,必须确认所有设备处于同一网段内。通过 `ifconfig` 命令可以查询各节点的 IP 地址[^1]。 #### 配置环境变量 针对每一台参与通信器(无论是作为主还是从),都需要修改其 `.bashrc` 文件来指定主节点的位置以及本在网络中的身份标识。具体操作如下: - 设置ROS Master URI指向运行roscore服务的那一方; - 设定ROS HOSTNAME为当前电脑的实际IP地址; 例如,在一台充当主的角色中,可能有如下配置: ```bash export ROS_MASTER_URI=http://192.168.1.66:11311 export ROS_HOSTNAME=192.168.1.66 ``` 而在另一些扮演从属地位的工作站,则应相应调整上述参数以匹配实际情况[^5]。 #### 启动核心组件和服务 在选定为主控端的一侧启动ROS的核心进程——`roscore`,这一步骤对于整个系统的正常运作至关重要。之后可以根据需求加载特定的应用程序或模拟器,比如`turtlesim_node`用于展示基本功能[^4]。 #### 测试连接状态 一旦完成了以上准备工作,便可以在任意客户端尝试执行`rostopic list`指令,以此验证是否成功接入到了由Master管理的消息总线体系之中[^3]。 #### 实现复杂交互逻辑 当基础架构搭建完毕后,可以通过编程方式进一步扩展应用范围。例如创建自定义类如`Robot`和`MultiRobot`来进行更高级别的抽象处理,其中涉及到了个实体间的信息交换制的设计与实施[^2]。 ```python class Robot: def __init__(self, name): self.name = name def publish_message(self, topic_name, message_content): pass # 发布消息到指定主题 class MultiRobot: robots = [] @staticmethod def initialize_robots(): robot_names = ['robot1', 'robot2', 'robot3'] for name in robot_names: new_robot = Robot(name) MultiRobot.robots.append(new_robot) # 初始化并控制三台器人实例 MultiRobot.initialize_robots() for r in MultiRobot.robots: print(f'Starting {r.name}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值