1、问题描述
最近在搞ros小车,我想将笔记本电脑通过ssh连接上车载电脑,从而在笔记本上控制小车,其实这也就是主从机的配置问题,但是当我执行roslaunch art_racecar rviz.launch命令的时候出现了InvalidURL: URL can’t contain control characters. '192.168.5.3‘的错误,很是郁闷。捣鼓了好久,最终从一篇博文中找到了解决的方法(原文在这),但是描述得不是很清楚,所以我在这再整理一下我的解决方法,大家在看我的这篇博文的时候一定要阅读这篇原文。也非常感谢罗总的帮忙,才那么顺利的解决的。
2、解决的方法
首先要说明的是,小车上的电脑是主机,笔记本电脑是从机,这个与原文是不同的,明白了这点才好办事,其次,一共需要改4个文件,分别为主机(笔记本电脑)的.bashrc文件和从机(ros小车)的.bashrc文件,最后2个分别是从机(笔记本电脑上)和主机的/etc/hosts(可以使用命令打开:sudo gedit /etc/hosts)。
假设主机(小车)的IP地址和hostname为:
IP地址:192.168.5.111
hostname为:AA
假设从机(笔记本电脑)的IP地址和hostname为:
IP地址:192.168.5.222
hostname为:BB
2.1、修改主机的.bashrc文件(小车)
这时小车接上显示屏,可以使用命令sudo gedit ~/.bashrc命令打开这个文件,在最后面添加这几行:
export ROS_HOSTNAME=主机的hostname
export ROS_MASTER_URI=http://主机的IP地址:11311
export ROS_IP=主机的IP地址
设置之后变为:
export ROS_HOSTNAME=AA
export ROS_MASTER_URI=http://192.168.5.111:11311
export ROS_IP=192.168.5.111
查看hostname的命令为
hostname
查看主机IP地址的命令
ifconfig
2.2 、修改主机的/etc/hosts文件
sudo gedit /etc/hosts
然后在最后一行上添加
从机的IP地址 hostname(中间用空格隔开)
如:
192.168.5.222 BB
2.3、修改从机(笔记本电脑)上的.bashrc文件
打开.bashrc文件的命令如下
sudo gedit ~/.bashrc
修改的内容和修改主机上的差不多:
export ROS_HOSTNAME=从机的hostname
export ROS_MASTER_URI=http://主机的IP地址:11311(注释:’:11311‘必须一致)
export ROS_IP=从机的IP地址
设置之后为:
export ROS_HOSTNAME=BB
export ROS_MASTER_URI=http:/192.168.5.111:11311
export ROS_IP=192.168.5.222
2.4、修改从机(笔记本电脑)的hosts文件
可以用命令打开:
sudo gedit /etc/hosts
然后在最后一行上添加
主机的IP地址 hostname(中间用空格隔开)
如:
192.168.5.111 AA
4、最后一步
完成以上配置之后先不要高兴得太早记得source文件.bashrc,命令如下:
source ~/.bashrc
然后关闭所有的终端,再重新打开才能在终端中生效,如果还是不行最后重启一下就可以了。
如果忘记在主机的/etc/hosts文件上添加从机的信息将会出现错误:Couldn’t find an AF_INET address for ·[从机的名字]。参考
注意:如果断开连接小车后,需要在自己的笔记本上运行master,需要将你设置的主从机配置语句屏蔽掉即可,否则是无法运行相关程序的,会在终端报错,错误的大概意思就是找不到master。
原文链接:https://blog.csdn.net/xzs520xzs/article/details/112251727