注意!该教程对应ROS套件用户。
二维码标签在机器人识别可起到非常重要的作用,AR代表“增强现实”,因为这样的标签可以添加到现实环境中并通过摄像头检测,通过将多个标签放置在墙壁或天花板上,AR标签也可以用于机器人定位,从而使机器人始终可以通过标签计算其相对位置和方向。
在本章我们将学习如何使用ar_track_alvar ROS软件包来检测和跟踪AR标签
生成AR二维码标签
在开始之前我们需要生成AR二维码标签,并且打印出来。
ar_track_alvar软件包提供了生成二维码(createMarker)服务,下面生成编号0、1、2三个二维码。
rosrun ar_track_alvar createMarker -s 6 0
rosrun ar_track_alvar createMarker -s 6 1
rosrun ar_track_alvar createMarker -s 6 2
NOTE: 参数6是标签尺寸参数,后面0-3是标签号码
或者在/lingao_ws/src/lingaoRobot/lingao_visual/lingao_ar_track/MarkerData
这个目录下已有生成好的标签图片。
将标签图片按原比例打印出来后即可。
运行节点服务
1. 启动底盘通讯
在主控节点启动控制板的通讯,同时程序会将小车TF姿态。
roslaunch lingao_bringup bringup.launch
2. 启动深度摄像头节点
在主控节启动深度摄像头节点
roslaunch lingao_depth lingao_depthcamera_bringup.launch
3.启动ar二维码识别节点
在主控节启动ar二维码识别节点
roslaunch lingao_ar_track lingao_ar_camera.launch
查看二维码信息
通过RVIZ查看二维码信息
上面节点启动成功后可通过本地rviz查看二维码标签识别情况
roscd lingao_ar_track/rviz/
rviz -d ar_tack.rviz
订阅二维码的话题信息
ar_track_alvar节点在/ar_pose_marker主题上发布每个检测到的标记的ID和姿势,关于此主题的每条消息均由标题、标签ID号、二维码相对位置、置信度值组成的数组。
rostopic echo /ar_pose_marker
如上图订阅可看到标签的ID号码,position部分的x,y,z的值,其中x就是机器人到ar 标签的距离,y值就是相对于与摄像头中心位置的偏移,理解了ar_pose_marker我们就很容易理解代码的原理。
AR二维码跟踪
上面我们介绍了机器人二维码识别,现在可以尝试通过二维码位置来做跟踪。
首先需要成功启动上面 节点服务,再启动二维码跟踪服务
roslaunch lingao_ar_track lingao_ar_follower.launch
这个代码也很简单,就是订阅ar_track_alvar发布的/ar_pose_marker主题,
然后将该主题的信息来发布cmd_vel控制机器人运动。