最新消息:

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

ROBOTS/其他机器人 少儿编程 1449浏览 0评论
DashgoD1底盘新指南

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

激光雷达与D1的坐标对齐

Ubuntu14.04 indigo版ROS D1 F4
只有激光雷达与D1的坐标一致才能正常建地图

运行地图扫描节点

  • Ctrl + Alt + T 打开命令窗口,运行命令
    $ roslaunch dashgo_nav gmapping_demo.launch
  • 运行rviz进行校对

  • Ctrl + Alt + T 打开命令窗口,运行命令

  • 可以通过下面命令运行体量较大的rviz来进行校对

    $ roslaunch turtlebot_rviz_launchers view_navigation.launch
  • 也可以直接运行轻量级的rviz来进行校对
    $ rviz

rviz简易配置

  • 本教程直接运行 rviz 来进行操作,运行rviz显示的界面如下:

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 对rviz界面显示进行简单的配置,点击 Add 添加控件

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 在弹出的窗口,选择 RobotModel ,点击 OK ,添加 D1 在 rviz 中的显示控件

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • D1 显示控件添加成功后,如下图所示(图中那淡绿色的点便 D1 的正前方)

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 然后,再点击 Add ,选择 LaseScan ,点击 OK ,添加 激光雷达F4 在 rviz 中的显示图层

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 添加 激光雷达F4 显示图层后,显示并没有变化,原因在于还没有选择要订阅的 topic

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 展开 LaseScan 的菜单

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 选择 Topic 项,选择要订阅的 topic 为 /scan ,再回车

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

  • 此时,F4 的扫描数据便可在 rviz 上显示,如下图所示

DashgoD1底盘新指南-6.4 激光雷达与D1的坐标校正

参数调整

F4 与 D1 的坐标校对,是通过对launch文件中的参数进行修改来使两者坐标一致的。

  • 在本教程中,便是要修改 gmapping_demo.launch 文件

  • 运行命令,找到 gmapping_demo.launch 文件所在的位置

    $ roscd dashgo_nav/launch
  • 使用 vim 编辑命令编辑
    $ vim gmapping_demo.launch
<launch>
   <node name="arduino" pkg="dashgo_bringup" type="dashgo_driver.py" output="screen">
      <rosparam file="$(find dashgo_bringup)/config/my_dashgo_params.yaml" command="load" />
   </node>

 <node name="flashgo"  pkg="flashgo"  type="flashgo_node" output="screen">
  <param name="serial_port"         type="string" value="/dev/flashlidar"/>
  <param name="serial_baudrate"     type="int"    value="230400"/>
  <param name="frame_id"            type="string" value="laser_frame"/>
  <param name="inverted"            type="bool"   value="false"/>
  <param name="angle_compensate"    type="bool"   value="true"/>
  </node>

  <include file="$(find dashgo_description)/launch/dashgo_description.launch"/>

 <node pkg="tf" type="static_transform_publisher" name="base_link_to_laser4"
    args="0.0 0.0 0.2 0.0 3.1415926  0.0 /base_link /laser_frame 40" />  //修改args的参数值

  <include file="$(find dashgo_nav)/launch/gmapping.launch"/>
  <include file="$(find dashgo_nav)/launch/move_base.launch"/>
</launch>
  • args="0.0 0.0 0.2 0.0 3.1415926 0.0 /base_link /laser_frame 40" 在 /base_link 前面的 6 个参数,分别表示
    • 这 6 个参数都是相对于 D1 的坐标系来调整的。

    • 前面 3 个,分别表示激光雷达 F4 在X、Y、Z轴(右手定则)上离(0 , 0 , 0)点的坐标位置,(0 , 0 , 0)点是 D1 的坐标系原点,该点是 D1 的重心点。

    • 后面 3 个,分别表示X、Y、Z轴(右手定则)偏离YOZ面、XOZ面、XOY面上的角度,大小范围为 -3.1415926~3.1415926 ,-3.1415926 为-180度, 3.1415926 为180度。

前后方向校对

D1 的前方是有三个超声波模块的,中间的超声波模块就是D1的正前方
D1 的后方是单独一个超声波模块的,也是D1的正后方

  • D1 的前后方向了解之后,便调整 F4 的坐标方向与 D1 的一致便可。

  • 一般来说,F4 已经固定在 D1 已设定的位置上,而且 F4 在不停旋转,便要借用较平整的挡板,如:大纸箱,来确定 F4 当前的方位。

  • 先将挡板横摆在 D1 正前方,挡板中心与 D1 正前方那个超声波模块成一条直线,挡板的面要与直线成90度角

  • 然后,对照rviz中 F4 的扫描显示,D1 正前方是否横画着一条红线障碍物

  • 若有,则说明前方坐标正确,再将挡板横摆在 D1 正后方,若 rviz 中同样在 D1 正后方横画着一条红线障碍物,则 D1 前后方向已经正确。

  • 若实际中挡板的位置与rviz显示的位置不一致,则根据对前面 参数调整 的了解,相对应地对参数进行调整。

左右方向校对

  • 先将挡板横摆在 D1 正左方,挡板中心与 D1 中心成一条直线,挡板的面要平行于 D1 正前方与正后方所成的直线

  • 然后,对照rviz中 F4 的扫描显示,D1 正左方是否横画着一条红线障碍物

  • 若有,则说明左方坐标正确,再将挡板横摆在 D1 正右方,若 rviz 中同样在 D1 正右方横画着一条红线障碍物,则 D1 左右方向已经正确。

  • 若实际中挡板的位置与rviz显示的位置不一致,则根据对前面 参数调整 的了解,相对应地对参数进行调整。

您必须 登录 才能发表评论!