四月标签(AprilTags)
AprilTags是基准标记的一种流行形式。它在机器人技术中具有广泛的应用,包括对象跟踪,视觉定位,SLAM准确性评估和人机交互。Isaac通过利用GPU加速同时实现高解码鲁棒性来提供实时AprilTag检测。
除了检测之外,Isaac还对所有检测到的标签执行标签姿势估计。我们根据相机的固有参数,标签的尺寸以及标签角的像素坐标来计算标签姿势的估计值,并返回标签相对于相机的旋转和平移。具体来说,给出以下内容:
- 相机焦距,以X和Y为单位,以像素为单位(每弧度)。
- 相机主点X和Y,以距图像像素(0,0)的像素为单位。
- 标签尺寸W(标签为方形W x W),以呼叫者方便的单位为单位。建议使用米或厘米。
Isaac SDK返回以下内容:
-
所有检测到的AprilTags的标签ID,格式为
<tagFamily>_<tagID>
。例如,对于标签系列Tag36h11
和ID7
,返回的标签ID为tag36h11_7
。在2018.3版本中,
tag36h11
支持标签系列。计划在将来的版本中将算法扩展到其他标签系列。 -
从左上角开始,然后是右上角,右下角,然后是左下角,观察到的标签像素坐标。
-
表示标签相对于相机框架方向的四元数;和
-
3矢量,用于指示标签中心相对于相机位置的位置,其单位与用于指定标签尺寸的单位相同。
相对于相机的坐标系为:
- 右手
- X轴向右
- Y轴向上
- Z轴向内
- 列扫描的旋转矩阵,即X轴,Y轴和Z轴的重新映射列表。
该估计值的校正与到标签的距离成反比。
源代码
Isaac使用静态库形式的AprilTags检测代码。
AprilTags检测和姿态估计被包装为Isaac小码,并且在Isaac存储库中可用。
以撒法典
包装了AprilTags检测的Isaac小码将获取输入图像,并发布检测到的标记的列表以及标记角的坐标。此外,它还使用相机的内部特性,输入标签的大小以及检测到的标签的坐标来估计这些标签的姿态。相对于摄像头的位置,姿态由一个四元数和一个平移向量表示。
运行示例应用程序
AprilTags示例应用程序使用Realsense立体相机。首先将相机连接到您使用的主机系统或Jetson平台。然后,使用以下过程之一运行随附的示例应用程序。
在主机系统上运行示例应用程序
- 使用以下命令构建示例应用程序:
bob@desktop:~/isaac$ bazel build //apps/samples/april_tags
- 使用以下命令运行示例应用程序:
bob@desktop:~/isaac$ bazel run //apps/samples/april_tags
在Jetson上运行应用程序
-
在主机上构建一个程序包,然后将其部署到Jetson系统。
-
按照在Jetson上部署和运行中所述将// apps / samples / april_tags:april_tags-pkg 部署到机器人 。
-
登录到Jetson系统并使用以下命令运行该应用程序:
bob@jetson:~/$ cd deploy/bob/april_tags-pkg
bob@jetson:~/deploy/bob/april_tags-pkg$ ./apps/samples/april_tags/april_tags
其中“ bob”是您在主机系统上的用户名。
在Websight中查看应用程序的输出
在应用程序运行时,通过导航到来在浏览器中打开Isaac Sight http://localhost:3000
。(如果在Jetson平台上运行该应用程序,请确保使用Jetson系统的IP地址而不是localhost。)
在Websight中,一个名为“ 标签”的窗口显示输入图像,并在检测到的AprilTags顶部覆盖一个绿色的半透明矩形:

网友评论