ROS技术空间

ROS 视觉 1 | AR标签二维码识别

注意!该教程对应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控制机器人运动。