AprilTag二维码检测和定位

AprilTag简介

AprilTag二维码检测和定位_第1张图片

AprilTag类似于二维码QR codes(Quick Response Code;全称为快速响应矩阵图码)

AprilTag可用于多种用途,包括相机标定、目标大小估计单目距离测量等。

二维码可以直接用打印机打印在纸张上,不需要特殊材料。

而AprilTag检测程序可以计算相对于相机的三维位置和二维码所承载的ID信息。

 参考链接:

AprilTag

apriltag_ros - ROS Wiki

使用前准备-功能包

sudo apt install ros-$ROS_DISTRO-apriltag-ros

为了方便使用,我创建了一个新的功能包用于存放相机启动、标定文件已经apriltag_ros所需要的配置文件

cd ~/catkin_ws/src
git clone https://gitee.com/bingda-robot/apriltag_detection.git

功能包中有launch、config和doc目录

doc目录

存放了tag36h11标签族的标签图像,方便直接取用

config目录

存放相机标定文件ost.yaml和apriltag_ros相关的配置文件

其中settings.yaml文件配置了apriltag检测的标签类型、使用计算机资源等,完整的参数参考wiki链接

tags.yaml文件存放所检测的标签序号、尺寸信息,这里我们设置0、1、2三个标签的信息

standalone_tags:
  [
    {id: 0, size: 0.05},
    {id: 1, size: 0.04},
    {id: 2, size: 0.03},
  ]

aunch目录

camera.launch用于启动相机并载入标定参数和矫正图像,关于相机标定和图像矫正可以参考之前的文章摄像头的标定

使用时需要根据你实际所使用的相机标定结果替换config目录中的相机标定文件ost.yaml



	
		
		
		
		
		
		
		
		
	

	

	
	    

continuous_detection.launch参考了apriltag_ros中的示例文件,主要修改了参数文件载入路径和相机名称


	 
	
	
	

	
	
	

	
		
		
		

		      
	

使用前准备-标签

将doc目录中的AprilTag_0_1_2.pdf文件按照一比一打印在A4纸上,如有条件,可以将打印后的A4纸贴在亚克力板或者硬纸板上,避免二维码因为纸张弯曲大幅度变形

运行AprilTag检测

尝试启动相机和apriltag检测程序

roslaunch apriltag_detection camera.launch
roslaunch apriltag_detection continuous_detection.launch 

打开一个rqt_image_view订阅/tag_detections_image话题,将标签纸放在相机前

AprilTag二维码检测和定位_第2张图片

检测到的标签会被白色框框出,并标注标签的值

打开rviz,将Fixed Frame设置为base_footprint,rive中会显示标签和相机坐标位置关系

AprilTag二维码检测和定位_第3张图片

tag_detections话题会输出当前检测的标签位置信息

rostopic echo /tag_detections

通过订阅tag_detections话题或者监听相机坐标相对于标签坐标之间的位置关系,就可以获得标签和相机之间的位置关系,有了这个比较准确的位置关系,可以完成目标跟踪、视觉抓取等应用。

你可能感兴趣的:(机器人,开源,人工智能,深度学习)