项目场景:
使用cartographer进行机器人定位时,需要利用rviz来观察、评估定位效果,初始位姿、目标点的发布也需要借助rviz。但是在NUC(主机)未外接显示屏时,直接利用远程桌面连接NUC(主机)时是无法加载rviz的。因此需要配置ROS远程节点,以NUC端为主机(ROS_MASTER),以PC为从机接收NUC上ROS主节点发布的信息,在PC端打开rviz即可完成任务。
问题描述:
依照CSDN上大部分教程配置了~/.bashrc文件与/etc/hosts文件,主从两机间互ping无误。但在NUC端任意启动一节点,在PC上执行
rosnode list
时,一直提示 Unable to communicate with master, 即无法与ROS主节点通信,自然无法完成后续利用rviz监听主节点信息的功能。
原因分析:
ehco $ROS_MASTER_URI
查看配置的ROS主节点是否生效,执行结果为
http://localhost:11311
表明ROS_MASTER_URI并未配置成功,问题就出于此。
解决方案:
-
更改~/.bashrc后要使其生效新打开一终端,在新终端中source ~/.bashrc。
不过source后问题仍存在,此路不通。 -
考虑转为修改系统环境变量/etc/profile, 在其中添加原 ~/.bashrc中有关行(ROS_IP, ROS_HOSTNAME, ROS_MASTER_URI)。测试后rosnode list能正常给出当前节点,问题解决。