RobotKernal-UESTC/Docs/PIBot技术分析/ROS机器人底盘-pibot_init_env介绍.md

4.4 KiB
Raw Permalink Blame History

ROS机器人底盘-pibot_init_env介绍

1.多机通讯

因车载主机限制(没有屏幕或者性能有限),无法启动Rviz查看建图等信息,ROS多机的通讯配置一文讲了具体的原理细节,即配置一个主机和一个从机,把从机的ROS_MASTER_URI指向主机即可一般我把车载的主机配置指定为主机而用于显示的PC或者虚拟机配置为从机。PIBOT提供了一键配置的脚本,按照提示选择即可 PIBOT使用手册可以看到

  • 对于车载的主机

    img

    车载主机

    machice type
    

    为0即为主机

  • 对于用于显示的主机或者虚拟机

    img

    控制主机

    machice type
    

    为非0即为从机同是作为从机需要新增一个配置主机

    IP
    

2.pibot_init_env脚本

具体看下pibot_init_env做了什么

  • 添加PIBOT_ENV_INITIALIZED环境变量

  • 添加source ~/.pibotrc~/.basrc

    根据PIBOT_ENV_INITIALIZED是否定义,保证source ~/.pibotrc只被添加一次

    执行pibot_init_env后~/.bashrc文件如下118 119行

    img

  • 添加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
    

    img

    可以看到得到的值跟 ifconfig查看的一致,可以知道该值为当前IP

  • 第三四行分别ROS_IPROS_HOSTNAME 这里使用的本地IP

  • 第五六七行分别模型名称,雷达名称,驱动板名称

    • 对于模型名称pibot_bringup/launch/model.launch会使用到该变量

      img

      从而加载对应的模型文件

    • 对于雷达名称

      pibot_bringup/launch/robot.launch
      

      会使用到该变量

      img

      从而加载对于的雷达文件

    • 驱动板名称尚未使用(只在运行是设置波特率)

  • 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_HOSTNAMEROS_MASTER_URI三个环境变量前2个主机从机都是本机IP后一个主机为本机IP从机为主机IP我们可以输出这几个变量或者使用pibot_view_env查看

img