问题分析思路可参考: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:11311
ip="a"
while read linex
do
ip=$linex
done <<< "$(cat /etc/hosts)"
hostname=${ip%% *}
export ROS_HOSTNAME=$hostname
echo "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验证一下~
最后记得保存至镜像~