一、简要介绍

        AprilTag是一个由密歇根州立大学的April实验室开发的、免费开源的视觉定位系统,该技术利用类似于二维码的Tag实现定位,被广泛应用于机器人、无人机定位导引等。但是目前网上关于该技术原理和应用介绍很少,所以将AprilTag技术进行简单整理分享给大家。并利用世界坐标系和相机坐标系间的变换,将AprilTag进行改造应用于机器人全场自定位中。

        相关论文:《AprilTag: A robust and flexible visual fiducial system

        代码和Tag下载地址:https://april.eecs.umich.edu/software/apriltag/

二、AprilTag定位系统原理流程

        AprilTag库可以检测到图像中的tag,并返回这些tag唯一的ID。当相机被标定,则可以计算出Tag和相机之间的相对位置。本节主要为论文《AprilTag: A robust andflexible visual fiducial system》关键部分节选。

1)Tags简要介绍

        Tags是由黑白相间的类似于二维码的方块构成,不同的Tag包含了不同的ID信息(如下图1所示)。


图1 AprilTag提供的一些不同大小包含不同信息的Tags

2)识别场景中的Tag

       首先场景中贴一些Tag,如图2所示,场景中有两个Tag。


图2 场景中贴Tag

        其次,求场景图像的梯度图像,如图3所示,并提取场景中的直线,检测方形角点。


图3 场景图像梯度化

        最后得到方形区域及其关键角点(如图4所示),将方形区域同态映射为正方形,与Tags库匹配,判断这些方形区域是否是Tag。


图4 方形区域及其内部关键角点

3)定位

        根据相机的成像原理,当得到标定好的相机的焦距、量出所贴Tags的尺寸,就可以计算出Tag在相机坐标系下的三维坐标,另外由于Tag本身具有二维信息,所以还可以得到Tag相对于相机的旋转坐标。


 

图5 相机成像原理

 

 

三、机器人全场定位应用(原创的技术改造应用)

        利用世界坐标系和相机坐标系间的变化,可以计算出相机相对于Tag的相对三维坐标和旋转坐标。当Tag贴在平坦的地面时,就得到了机器人相对于地面的定位(包括处于全场的位置、自身旋转)信息。

1)流程


图6 机器人定位流程图

2)机器人全场定位

        由于机器人定位需要知道自身相对于真实物理空间中的位置,而Tag正好与地面平行,所以建立以Tag中心为原点,Tag平面为XY轴的坐标系,因为Tag相对于相机的三维坐标和旋转坐标已知,利用坐标变换公式

       其中R、T分别表示Tag相对于相机坐标系的旋转矩阵和平移向量,为相机相对于世界的坐标,为Tag中心相对于世界的坐标,此处为原点(0,0,0)。通过坐标变换(如图6所

示),即可得到相机相对于Tag(即真实世界)的三维坐标和旋转信息,从而完成机器人定位。


图7 从相机坐标系到世界坐标系变换

3)实际应用效果

        摄像头:HD-3000720P高清摄像头

        工控机配置:普通工控机(酷睿i5迷你电脑主机)

        场景:摄像头放置在高为1.2m左右的机器人上

       效果:实时检测,几乎没有任何延迟;标定准确的话,1cm以内

 

四、欢迎交流

        以上是本人粗糙整理,有问题希望各位能帮忙指正。因为想把AprilTag细节原理弄清楚,所以最近在重新读《AprilTag: A robustand flexible visual fiducial system》这篇论文,以及其他相关,所以欢迎感兴趣的朋友一起交流!

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐