设定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了。

你可能感兴趣的:(设定rosmaster的IP随电脑IP变化,自动设置ROS_MASTER_URI)