ROS 主从节点问题

本文介绍了如何配置ROS(Robot Operating System)网络,以树莓派作为主机PI,电脑作为检测端PC。主要涉及的文件包括~/.bashrc和/etc/hosts。在每个设备上,需要编辑hosts文件以声明对方的IP和hostname,并在bashrc文件中设置ROS的相关环境变量,如ROS_IP、ROS_HOSTNAME和ROS_MASTER_URI,确保通信的正确进行。

涉及文件

修改节点主要涉及两个文件
~/.bashrc
/etc/hosts

主从关系

树莓派控制的底盘一般作为主机PI
电脑一般作为检测端PC

hosts文件修改

主机PI进行操作 告诉机器还有个PC 在哪里

sudo vim /etc/hosts

在最下面添加

`192.168.3.xxx	PC

中间最好用tab分割

同样从机PC 声明PI的地址和hostname

sudo vim /etc/hosts

添加

`192.168.3.xxx	PI

~/.bashrc文件的修改

机器的hostname可以用 使用如下命令查看

hostname

假设主机 树莓派为名称是PI
PC 名称为PC

编辑在主机PI(树莓派)中的bashrc文件

sudo vim ~/.bashrc

打开后在下面添加

###树莓派IP,当查找不到指定的ROSMaster地址时在这个IP下运行ROSmaster
ROS_IP=192.168.3.XXX
###主机名称,即树莓派hostname   
ROS_HOSTNAME=PI
###ROSMater所在地址,即树莓派地址
ROS_MASTER_URI=http://192.168.3.XXX

修改完

source ~/.bashrc

同样打开PC中的bashrc文件

sudo vim ~/.bashrc

在最下面添加

###PC的IP,当查找不到指定的ROSMaster地址时在这个IP下运行ROSmaster
ROS_IP=192.168.3.XXX
###从机名称,即PC的hostname   
ROS_HOSTNAME=PC
###ROSMater所在地址,即树莓派地址
ROS_MASTER_URI=http://192.168.3.XXX
 source ~/.bashrc
### ROS主从机配置方法 #### 1. 设置ROS Master节点 在ROS系统中,Master节点起到核心作用,负责管理各个节点间的通信。为了确保其正常工作,需为主机分配充足的计算资源和网络带宽[^1]。 #### 2. 配置主机与从机的`/etc/hosts`文件 为了让主机与从机能够相互识别,需要编辑两者的`/etc/hosts`文件。具体操作如下: - **主机端** 使用命令 `sudo nano /etc/hosts` 或 `sudo vim /etc/hosts` 编辑文件,并添加以下内容: ```plaintext 192.168.1.xxx 从机的hostname ``` - **从机端** 同样使用命令 `sudo nano /etc/hosts` 或 `sudo vim /etc/hosts` 编辑文件,并添加以下内容: ```plaintext 192.168.1.xxx 主机的hostname ``` 这里的 IP 地址应替换为实际使用的地址,而 hostname 则对应各自的机器名称[^3]。 #### 3. 修改`.bashrc`文件 为了指定每台计算机的角色以及连接至哪个 Master 节点,还需修改各自用户的 `.bashrc` 文件。 - **主机端** 执行命令 `vim ~/.bashrc` 并追加以下行: ```bash export ROS_HOSTNAME=本机的hostname export ROS_MASTER_URI=http://(主机(底盘)的IP):11311 ``` 替换其中的占位符为具体的值后保存退出,再运行 `source ~/.bashrc` 生效更改。 - **从机端** 类似地,在从机上也执行相同的操作,只是保持 `export ROS_MASTER_URI` 的指向不变即可[^3]。 #### 4. 测试连通性 完成以上步骤之后就可以验证是否成功建立了主从关系了。通常做法是在一台电脑上启动 `roscore` ,另一台上尝试发布消息或者订阅主题看能否交互无误[^3]。 ```python import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('chatter', String, queue_size=10) rospy.init_node('talker', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): hello_str = "hello world %s" % rospy.get_time() rospy.loginfo(hello_str) pub.publish(hello_str) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass ``` 上述代码片段展示了一个简单的发布者示例程序,可用于测试跨设备的消息传递功能。 #### 工具辅助简化流程 存在一些专门设计用来提升ROS主从机配置效率的小型工具或脚本,它们允许用户通过定义变量如 ip_prefix 和 remote_name 来快速部署环境参数调整过程[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值