ROS的多机分布通信建立

最近在弄树莓派ROS小车,在用笔记本ssh远程连接树莓派时,遇到话题和消息不能在pc与树莓派之间进行通信问题。因此查了些资料来解决此问题,写下这篇笔记留给自己,如果能帮到遇到此类问题的小伙伴也不失为一件美事^ _ ^,同时文章中的问题也欢迎您的批评指正,不胜感激!

1.SSH远程连接遇到的问题及解决

本着弄通弄懂的想法,我先在手中的工控机和笔记本电脑之间进行测试。
工控机(用户名:a,    ip:192.168.1.101)
笔记本(用户名:wangdake, ip:192.168.1.102)
环境都是ubuntu16.04

首先用工控机连接笔记本出现如下图所示:
在这里插入图片描述
用笔记本连接工控机同样情况。
看了网上的错误原因https://www.cnblogs.com/kobigood/p/4221778.html
1.可能是sshd未安装

$ sudo apt install openssh-server

2.sshd没有启动

$ sudo net start sshd

3.防火墙

$ sudo ufw disable

因为在这个测试中我把工控机(用户名:a,ip:192.168.1.101)当作主机笔记本(用户名:wangdake, ip:192.168.1.102)当从机,所以我在工控机上安装了sshd:
在这里插入图片描述
此时用笔记本连接工控机就可以成功了。

在这里插入图片描述

2.用小海龟测试通信

(1)设定客户端master地址

更改一下笔记本电脑的.bashrc文件把ROS_MASTER_URI变为服务端的master地址
export ROS_MASTER_URI=http://192.168.1.101:11311

(2)笔记本(用户名:wangdake, ip:192.168.1.102)ssh连接ssh工控机(用户名:a,ip:192.168.1.101)

$ ssh a@192.168.1.101
 然后输入工控机a的密码:

(3)在工控机上启动roscore后运行小海龟节点

$ roscore
$ rosrun turtlesim turtlesim_node

在这里插入图片描述
(4)在笔记本上查看话题和消息
此时在笔记本电脑自己的终端查询话题(不是在ssh连接工控机的终端界面)

$ rostopic list

在这里插入图片描述
接着在笔记本电脑自己的终端运行海龟控制节点试图通过笔记本上的控制节点控制工控机的海龟移动

$ rosrun turtlesim turtle_teleop_key

通过笔记本上下左右键尝试移动工控机海龟,发现工控机上的海龟并没有移动。
查看话题消息发现如下:
在这里插入图片描述在笔记本的海龟控制终端按上下左右控制键,但是在话题输出上可以看到没有消息输出。

在这里就需要ROS_IP和ROS_HOSTNAME环境变量来设置ROS节点的地址,这两个变量用其中一个就好,这里采用设置ROS_IP
export ROS_IP=自己的IP地址
工控机(用户名:a,ip:192.168.1.101)中export ROS_IP=192.168.1.101
笔记本(用户名:wangdake, ip:192.168.1.102)中export ROS_IP=192.168.1.102

关闭所有终端后,重新用笔记本ssh连接工控机,再次重复小海龟测试,此时就能发现可以通过笔记本自己的终端开启海龟控制节点给工控机上的小海龟节点发送话题消息,进而控制小海龟移动。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值