原文链接 :设定rosmaster的IP随电脑IP变化,自动设置ROS_MASTER_URI
原文全部转载,没有任何修改。方便查看,复制在下面。
前言
经常在~/.bashrc中设置机器人master的ip地址类似如下:
export ROS_MASTER_URI=http://192.168.0.206:11311
然而每次如果需要切换网络ip的地址,都需要到这边来修改maser的IP地址(如上192.168.0.206),很是麻烦,为了在修改网络ip后,只需要source ~/.bashrc就可以搞定ROS_MASTER_URI,不用进文件修改IP,需要先修改网卡名称,然后自动获取网卡ip地址作为ROS_MASTER_URI的地址。
修改网卡名称
参考:https://www.zhihu.com/question/45796677/answer/111267503
主要就是如下操作:
sudo gedit /etc/default/grub
找到GRUB_CMDLINE_LINUX=""改为:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
然后
sudo grub-mkconfig -o /boot/grub/grub.cfg
重启电脑后,网卡名称就会变成了我们熟悉的 eth0和wlan0
自动获取网卡ip地址作为ROS_MASTER_URI的地址
gedit ~/.bashrc
然后在需要获取IP的变量的前面(上方)(比如设置ROS_MASTER_URI的前一行)添加如下自动获取ip的命令,然后后面需要IP的变量用该ip:
ip=$(ip addr show wlan0 | grep -o 'inet [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | grep -o [0-9].*)
注意上面的wlan0是无线网卡的名称,看你ROS走的是无线还是有线了,如果是有线,则修改成:
ip=$(ip addr show eth0 | grep -o 'inet [0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+' | grep -o [0-9].*)
这样就获取有线网卡的IP了。
接着,修改前面的export ROS_MASTER_URI=http://192.168.0.206:11311为:
export ROS_HOSTNAME=$ip
export ROS_MASTER_URI=http://$ip:11311
最后,每次变动ip后,只需要重新source ~/.bashrc即可,不用再在文件中修改ROS_MASTER_URI了。