本文主要是介绍解决Docker中ROS通信失败问题--Error: unable to communicate with master!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题分析思路可参考:https://blog.csdn.net/qq_43481884/article/details/108895044
本文仅是做了在docker环境中通过脚本实现export ROS_MASTER_URI 和 export ROS_HOSTNAME 的工作:
export ROS_MASTER_URI=http://主机ip:11311 #11311是默认ROS端口
export ROS_HOSTNAME=主机hostname
即,在~/.bashrc末尾添加如下段落:
# Set envs about ROS_MASTER.
export ROS_MASTER_URI=http://172.17.0.2:11311ip="a"
while read linex
doip=$linex
done <<< "$(cat /etc/hosts)"hostname=${ip%% *}
export ROS_HOSTNAME=$hostnameecho "ROS_HOSTNAME="$ROS_HOSTNAME
echo "ROS_MASTER_URI="$ROS_MASTER_URI
解释:
- 【ROS_MASTER_URI】 打开多个终端的/etc/hosts,观察到其hostname是从172.17.0.2开始编号逐个+1的,因此我将172.17.0.2作为主机(打开首个的终端),后续的作为从机
- 【ROS_HOSTNAME】 应设置为当前终端的hostname,打开/etc/hosts发现总是最后一行 如下图,因此while循环中取最后一行,然后通过%% *(星号前是tab)的方式截取tab前的内容。
修改后通过source验证一下~
最后记得保存至镜像~
这篇关于解决Docker中ROS通信失败问题--Error: unable to communicate with master!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!