ROS学习笔记(三)- 分布式节点与laser数据可视化

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ferriswym/article/details/69938121

后面的ROS学习基本上基于机器人的实际环境开发,记录一下面对的问题以及对应的解决方法。这个周末主要实现了激光数据的获取,也是为后面的建图和导航做一个前提准备。

首先是获取相应的激光的驱动包,实验室的激光是很常用的LMS111,可以直接通过命令获取

sudo apt-get install ros-indigo-lms1xx

这样激光就可以在ROS里面使用了。值得注意的是这条命令是在机器人上面执行的,后面主要解决的就是在远程ssh下面运行分布式节点的问题。因为一般图形界面节点不能通过远程登录使用,如rqt_graph, rviz这些,但某些情况下需要远程操作并用到可视化,这就需要在机器人上运行主要节点,在远程端运行可视化节点读取机器人端发布到话题的数据。

首先设置ssh别名登录,先提条件是已经安装好ssh并且设置好远程登录。参考 http://blog.csdn.net/zhanlanmg/article/details/48708255
远程端:这里,我是在~/.ssh下建立一个config文件,填入

Host pioneer3
HostName 192.168.1.105
User pioneer3-onboard

Host : 别名
HostName : 远程登录的地址
User : 远程登录的用户名

这里注意的是所有名词的大小写,包括登录的用户名这些,这里卡了一下,比较无语……这里还是需要密码登录,如果需要免密登录或者密钥登录参看参考链接

机器人端:同样的操作,不过把Host等变量对应修改正确即可,同样需要注意大小写。

机器人端和远程端:在后面的ROS里面要用到机器名,跟登录的别名不是一个东西,为了让系统认识机器名,需要在/etc/hosts创建一个文件,具体

sudo gedit /etc/hosts

加入

192.168.1.103   client
192.168.1.105   pioneer3

这样就可以把机器名和IP地址绑定起来。

后面直接参考http://wiki.ros.org/cn/ROS/Tutorials/MultipleMachines,按照教程的指引和debug,基本上就能解决问题。

然后,为了运行的节点对应相应的机器,把机器人和远程端的IP都要设置一下,环境变量是ROS_IP,也可以是ROS_HOSTNAME,因为我用的都是静态IP,所以各个设置用IP会方便很多。远程端执行

export ROS_IP=192.168.1.103

机器人执行

export ROS_IP=192.168.1.105

同时,为了一劳永逸不用每次打开一个终端都要执行这个操作,在远程端~/.bashrc中添加

export ROS_MASTER_URI=http://pioneer3:11311
export ROS_IP=192.168.1.103

在机器人做相应操作,不再赘述。

需要注意,添加之后远程端打开就是默认以机器人为Master,默认在机器人上运行roscore。如果想单独在远程端运行ros,需要重新执行

export ROS_MASTER_URI=http://localhost:11311

基本上准备工作到这里都完成了,下面按启动流程记录一下,参考 http://blog.csdn.net/autorobot410/article/details/52861223

远程端登录先锋

ssh pioneer3

先锋上运行ROS

roscore &

为了连接激光,在网络没有自动连接的时候,通过命令连接

sudo nmcli con up uuid <激光的uuid>

这里按Tab键可以列出所有连接的uuid,对于所用连接的uuid,可通过

nmcli con list

查询,稍微记一下首字符就可以通过Tab键补全。

然后指定IP连接激光

rosrun lms1xx LMS1xx_node _host:=192.168.0.1

因为这里是通过apt-get安装的,无法修改源码,所以每次登陆都要指定激光连接的IP。后续有时间从github下载源码修改默认参数后再回来修改。

这时如果没问题就可以看到Connected to laser.

打开一个新的终端,即在远程端上

rosrun rviz rviz

如果分布式节点设置成功的话,应该就能成功运行。

点击左下角的Add->By topic->LaserScan,点击OK。把Global Options->Fixed Frame的参数改成laser。
这时,一切正常的话应该就可以在屏幕界面上看到激光的点。
laser数据可视化
如果出现问题,按照 http://blog.csdn.net/autorobot410/article/details/52861223检查。后面如果遇到问题再回来补充

猜你喜欢

转载自blog.csdn.net/ferriswym/article/details/69938121