4.4 KiB
ROS机器人底盘-pibot_init_env介绍
1.多机通讯
因车载主机限制(没有屏幕或者性能有限),无法启动Rviz
查看建图等信息,ROS多机的通讯配置一文讲了具体的原理细节,即配置一个主机和一个从机,把从机的ROS_MASTER_URI
指向主机即可,一般我把车载的主机配置指定为主机,而用于显示的PC或者虚拟机配置为从机。PIBOT
提供了一键配置的脚本,按照提示选择即可
PIBOT使用手册可以看到
2.pibot_init_env脚本
具体看下pibot_init_env做了什么
-
添加
PIBOT_ENV_INITIALIZED
环境变量 -
添加
source ~/.pibotrc
至~/.basrc
根据
PIBOT_ENV_INITIALIZED
是否定义,保证source ~/.pibotrc
只被添加一次执行
pibot_init_env
后~/.bashrc文件如下(118 119行) -
添加
udev rules
可以在usb插入根据PID/VID生成/dev/pibot
和/dev/rplidar
等软连接,而不需指定具体的/dev/ttyUSBn
-
根据驱动板型号设置波特率 最终执行
python ros_ws/src/pibot_bringup/scripts/set_baud.py 115200
或者python ros_ws/src/pibot_bringup/scripts/set_baud.py 921600
-
添加
~/.pibotrc
文件
source /opt/ros/kinetic/setup.bash
LOCAL_IP=`ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | awk -F/ '{print $1}'`
export ROS_IP=`echo $LOCAL_IP`
export ROS_HOSTNAME=`echo $LOCAL_IP`
export PIBOT_MODEL=hades
export PIBOT_LIDAR=rplidar
export PIBOT_BOARD=stm32f4
export ROS_MASTER_URI=http://`echo $LOCAL_IP`:11311
source ~/pibot_ros/ros_ws/devel/setup.bash
-
/opt/ros/kinetic/setup.bash
生效ROS
的环境变量,如果没安装好ROS
会报该文件不存在的错误 -
第二行给LOCAL_IP赋值,我们尝试直接在终端输出该变量
echo $LOCAL_IP
可以看到得到的值跟
ifconfig
查看的一致,可以知道该值为当前IP
-
第三四行分别
ROS_IP
和ROS_HOSTNAME
这里使用的本地IP -
第五六七行分别模型名称,雷达名称,驱动板名称
-
export ROS_MASTER_URI=xxxx
这里是主机和从机的唯一区别的地方
- 对于主机可以看到直接使用本地的
IP
,export ROS_MASTER_URI=http://
echo $LOCAL_IP:11311
- 对于从机直接使用的手动如输入的
IP
,export ROS_MASTER_URI=http://192.168.2.231:11311
- 对于主机可以看到直接使用本地的
-
最后一行即为生效
PIBOT
驱动包的环境变量 这里需要编译,不然会提示文件不存在
3.总结
其实如ROS多机的通讯配置所讲就是设置了ROS_IP
ROS_HOSTNAME
和ROS_MASTER_URI
三个环境变量,前2个主机从机都是本机IP,后一个主机为本机IP,从机为主机IP,我们可以输出这几个变量或者使用pibot_view_env
查看