激光雷达与 D1 的坐标校正

运行环境:Ubuntu14.04、indigo版ROS, D1 + F4 + Dashgo,树莓派3
树莓派的IP假设为192.168.11.100
只有激光雷达与D1的坐标一致才能正常建地图与导航

运行地图扫描节点

PC端,Ctrl + Alt + T 打开终端,运行命令

$ ssh pi@192.168.11.100
$ roslaunch dashgo_nav gmapping_demo.launch

运行rviz进行校正

注意:PC端在安装好rviz

PC端安装rviz,如下:
$ sudo apt-get install ros-indigo-serial ros-indigo-turtlebot-rviz-launchers
  • 方式一:

PC端,Ctrl + Alt + T 打开终端,运行轻量级的 rviz

$ export ROS_MASTER_URI=http://192.168.11.100:11311
$ rviz

rviz 简易配置

运行rviz显示的界面如下:

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

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

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

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

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

展开 LaseScan 的菜单

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

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

参数调整

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

要运行哪个launch文件就要对哪个launch文件中的参数进行修改,使两者坐标一致的。

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

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

$ roscd dashgo_nav/launch

使用 vim 编辑命令编辑 gmapping_demo.launch

$ vim gmapping_demo.launch

"arduino" pkg="dashgo_bringup" type="dashgo_driver.py" output="screen">
file="$(find dashgo_bringup)/config/my_dashgo_params.yaml" command="load" />


"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"/>


<include file="$(find dashgo_description)/launch/dashgo_description.launch"/>
"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"/>

args="0.0 0.0 0.2 0.0 3.1415926 0.0 /base_link /laser_frame 40"
/base_link 前面的 6 个参数,只需要调整前面5个参数,最后一个默认为 0.0 即可,分别表示

  • 这 5 个参数都是相对于 D1 的坐标系来调整的。

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

  • 后面 2 个,分别表示沿着 D1 中心线(正前方与正后方连成的直线)左右方向、上下方向移动偏离的角度,大小范围为 -3.1415926 ~ 3.1415926-3.1415926 为-180度, 3.1415926 为180度。

vim(文本编辑命令) 的安装与基本使用

终端执行以下命令,根据提示安装 vim

$ sudo apt-get install vim

以上面修改 gmapping_demo.launch 文件,以将第 4 个参数改成 3.1415926 为例,介绍 vim 的基本使用

  • 打开 gmapping_demo.launch 文件(必须要先切换到所要编辑的目录下)
$ vim gmapping_demo.launch
  • 进入文件内容显示界面,此时的文件状态只是显示,还不是编辑状态

  • 光标的移动是通过键盘上的上、下、左、右方向键来控制的。

  • 通过方向键将光标移动到要修改的 0.0

  • 按键盘上的 I 键,让文本进入编辑状态,编辑状态下,命令窗口左下角显示 Insert插入 字样

  • 通过键盘上的 DeleteBackspace 来删除 0.0 ,填写 3.1415926

  • 修改好后,按键盘上的 Esc 退出编辑状态

  • 按组合键Shift + ; ,窗口左下角显示 : ,再按W + Q,窗口左下角显示 :wq,再回车便保存好修改后的文件

前后方向校正,只需修改第 4 个参数

D1 的前方是有三个超声波模块的,中间的超声波模块就是D1的正前方

D1 的后方是单独一个超声波模块的,也是D1的正后方

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

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

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

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

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

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

具体操作,如下:

挡板横摆在 D1 正前方,rviz 显示应该如下图:

但rviz实际显示,如下图所示:

Ctrl + C ,关闭 rviz , 也关闭正在运行的launch文件,打开该launch文件

先将第 4 个参数改大(注意数值范围),保存launch文件,接着启动launch文件并打开rviz,查看效果

若显示的红线向正确的红线位置靠近,则再将参数慢慢加大以修正;若偏离正确位置,则将参数改小来修正。

正前方的位置校正后,将挡板横摆在 D1 正后方,rviz显示与实际情况是相符的。

左右方向校正,只需要修改第 5 个参数

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

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

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

若实际中挡板的位置与 rviz 显示的位置不一致,则修改第 5 个参数,若当前数值为 0.0 ,则修改成 3.1415926 ;若当前数值为 3.1415926 ,则修改成 0.0 即可。

再运行 launch 文件与 rviz 核对效果。

  • 方式二:

Ctrl + Alt + T 打开终端,通过下面命令运行体量较大的 rviz

$ export ROS_MASTER_URI=http://192.168.11.100:11311
$ roslaunch turtlebot_rviz_launchers view_navigation.launch

运行rviz显示的界面如下:

参数调整

具体参数调整操作与方式一的一样。

你可能感兴趣的:(Dashgo,D1使用手册)