网畅学校网站管理系统,赤坎手机网站建设公司,濮阳到上海,购买天猫店铺网站1.定义
AR Tag 是一种用于增强现实#xff08;AR#xff09;应用中的视觉标记#xff0c;用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示#xff0c;图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似#xff0c;原理其实也一…1.定义
AR Tag 是一种用于增强现实AR应用中的视觉标记用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似原理其实也一样但其编码系统和二维码有很大的区别。
AR Tag 要用于做位姿识别即通过相机图像识别 AR Tag 的位置和姿态从而实现对AR标记物的定位。与二维码相比AR Tag 的图案相对简单仅包含黑白色块以及一些辅助图形编码信息相对较少因此其图案识别度更高。相比之下二维码的图案复杂度较高需要包含大量的信息这会使得二维码在图像失真或光线不足等情况下更难以识别。
AR Tag 的类型有很多他们使用不同的标签系统每种类型各有优缺下面展示了几种常见的图案。 ar_track_alvar 有四个主要功能
生成不同大小、分辨率和数据的 AR Tag识别和跟踪单个 AR Tag可以选择与 kinect 深度数据集成获得更好的位姿识别效果识别和跟踪由多个 AR Tag 组成的 “捆绑包”。以此可以获得更稳定的位姿识别、提高遮挡鲁棒性以及对多边物体的跟踪效果。使用相机图像自动计算“捆绑包”中 AR Tag 之间的空间关系 2.使用场景
AR Tag 是一种低成本的位姿识别方式因为它只需要使用相机和打印的标记AR Tag来进行实时跟踪而不需要使用昂贵的传感器和硬件设备。另外其算法实现也比其他传感器技术简单得多所以可以快速而准确地识别位姿。基于其在应用上的便捷这使得 AR Tag 成为许多实际场景的理想选择比如机器人导航、物体跟踪、增强现实和其他计算机视觉任务。 3.安装与生成
在 ROS 中使用 AR Tag 我们需要安装 ar_track_alvar 包该软件包是一个 ROS 封装 Alvar 的开源 AR 标记跟踪库。
//安装 ar_track_alvar;ar_track_alvar 只支持ROS 1版本并没有官方的 ROS2 版本。如果想在 ROS2 中使用ar_track_alvar可能需要自己进行一些修改和适配。
sudo apt-get install ros-melodic-ar-track-alvar
// ar_track_alvar 包安装好后就可以使用其提供的生成工具进行标签的生成了。一般常用的为数字编码的标签其图案简单也是相对的数字0-9可识别度相对较高
rosrun ar_track_alvar createMarker -f 6 -s 10.0
4.在ros中使用
launchnode pkgtf typestatic_transform_publisher namebase_to_camera args0.34 0 0.15 0 0 0 base_footprint camera_link 100 /!-- AR tag 边框宽度 厘米 --arg namemarker_size default4.0 /arg namemax_new_marker_error default0.08 /arg namemax_track_error default0.2 /arg namecam_image_topic default/camera/depth_registered/points /arg namecam_info_topic default/camera/rgb/camera_info /arg nameoutput_frame default/camera_link /node namear_track_alvar pkgar_track_alvar typeindividualMarkers respawnfalse outputscreenparam namemarker_size typedouble value$(arg marker_size) /param namemax_new_marker_error typedouble value$(arg max_new_marker_error) /param namemax_track_error typedouble value$(arg max_track_error) /param nameoutput_frame typestring value$(arg output_frame) /remap fromcamera_image to$(arg cam_image_topic) /remap fromcamera_info to$(arg cam_info_topic) //node!-- 开启摄像头 --include file$(find astra_camera)/launch/gemini.launch //launchlaunch 文件主要为四个部分
定义坐标转换配置节点参数开启摄像头
首先我们需要定义摄像头的位置演示示例的摄像机是安装的机器人身上的所以我们使用了 static_transform_publisher 发布了一个静态坐标转换指定 camera_link用于表示相机的位置和方向。使用TFTransformation库可以将坐标系之间的变换关系transform发布到ROS中从而可以方便地进行相机的姿态控制和图像处理等操作。指定 camera_link 位姿时我们使用的是 base_footprint 其为机器人在地面上的投影位置一般选择机器人中心。static_transform_publisher 的参数中我们定义了 camera_link 在空间的位置是在 base_footprint 的前方 34cm 高 15cm 处。
配置 individualMarkers 的节点参数主要是定义 marker_size 黑色方块一侧的宽度这里使用的单位是厘米你可以在打印出 AR Tag 后进行测量填入。max_new_marker_error 和 max_track_error 是识别上的一些参数分别表示在不确定的情况下检测到新标记的阈值和跟踪误差多少时认为标签消失调整这些参数可以改变识别和跟踪效果这里我们使用官方示例中的参考值。
另外我们还需要配置一些摄像机图像数据相关的话题cam_image_topic 深度摄像机点云数据cam_info_topic 相机校准参数的主题名称以便图像可以被校正output_frame 发布的AR标签的笛卡尔坐标相对于哪个位置。
5.rviz展示效果
启动写好的 launch 后我们就可以打开 rviz 来查看 AR Tag 的识别效果了。启动 rviz 后我们首先修改 Global Option 的 Fixed Frame 为 base_footprint。 接下来添加 TF 和 Marker 即可在界面中看到识别到的 AR Tag 了。在实际应用中选择简单易识别的图案效果会更好简单来说使用数字小的ID会更易识别。这其实取决于多个因素如标签的大小分辨率摄像头的类型光照条件等。 Reference桑榆肖物 1.定义介绍» AR Tags and their Applications in Computer Vision Tasks – NUS Information Technology 2.ros使用 ar_track_alvar - ROS Wiki 3.ros小车实验 ar_track_alvar - ROS Wiki 4.launch文件可参考 point_cloud_process/launch/marker_track.launch at master · Hymwgk/point_cloud_process (github.com) ar_track_alvar/launch/pr2_indiv.launch at indigo-devel · sniekum/ar_track_alvar (github.com)