1 激光雷达介绍(Xu, Chen et al. 2016)
本系统选用的是低成本二维激光雷达,它具有每秒高达4000 次的高速激光测距采样能力。 可以实现在二维平面的6 米半径范围内进行360 度全方位的激光测距扫描,并产生所在空间的平面点云地图信息。这些云地图信息可用于地图测绘、机器人定位导航、物体/环境建模等实际应用中。
本章将介绍的例程是激光雷达数据的采集和显示,将激光雷达安装在机器人系统的顶部平台上,连接USB线到机器人底盘的USB接口即完成了硬件连接。通过运行DEMO,可以看到激光雷达对周边地图的还原。在此基础上,开发者可以进行激光雷达slam导航算法的深入研究。
2 运行激光雷达DEMO
开启一个终端,运行底盘控制主节点,输入:
ssh hong@192.168.31.200
roslaunch ros_arduino_python arduino.launch
如下图所示,节点即开启成功。
重新开启一个终端,开启雷达扫描节点,即输入:
ssh hong@192.168.31.200
roslaunch ros_arduino_python test_rplidar.launch
成功运行后的结果如下图所示:
此时,激光雷达会360°旋转,对周边的环境进行扫描并建图。
重新打开一个终端,输入一下命令:
export ROS_MASTER_URI=http://192.168.31.200:11311
rosrun rviz rviz
是ROS中的一个3D可视化工具。
中间黑色区域为3D可视化区域。左侧为显示面板,其中可以显示各种用户加载的选项。右侧为全局选项和时间。如果此时看不到图像,可以点击左侧面板的“add”按钮来增加新的显示选项。如下图所示,我们按topic来添加显示LaserScan数据。
这样就可以看到雷达扫描的数据了。当有障碍物时,会用红点在图中显示出来。这时再通过键盘或手柄控制底盘移动,雷达就会把周围环境的轮廓扫描出来。
3 核心代码讲解
我们使用的雷达是RPLIDAR-A2。雷达的驱动包在~/catkin_ws/src/rplidar_ros下。通过修改其文件夹下的sdk/include/rplidar_cmd.h文件可以修改雷达的转速。其中330对应的是5hz,660对应10hz。
此次运行的launch文件是在~/catkin_ws/src/ros_arduino_bridge\ros_arduino_python\launch中,针对底盘扫描进行了一些配置。
4 最后
到这里我们就实现了通过激光雷达扫描建图的一个简单例程。其中关键点是配置test_rplidar.launch文件。如果需要自己开发,可以修改扫描配置文件的参数即可。