[1] AR Tag 在ros中的使用

1.定义

AR Tag 是一种用于增强现实(AR)应用中的视觉标记,用于跟踪和定位虚拟物体在现实世界中的位置。 AR Tag由黑白正方形图像表示,图像内部有黑色边框中的某些图案。它与我们经常用到的二维码长得类似,原理其实也一样,但其编码系统和二维码有很大的区别。

AR Tag 要用于做位姿识别,即通过相机图像识别 AR Tag 的位置和姿态,从而实现对AR标记物的定位。与二维码相比,AR Tag 的图案相对简单,仅包含黑白色块以及一些辅助图形,编码信息相对较少,因此其图案识别度更高。相比之下,二维码的图案复杂度较高,需要包含大量的信息,这会使得二维码在图像失真或光线不足等情况下更难以识别。

AR Tag 的类型有很多,他们使用不同的标签系统,每种类型各有优缺,下面展示了几种常见的图案。

ar_track_alvar 有四个主要功能:

  1. 生成不同大小、分辨率和数据的 AR Tag
  2. 识别和跟踪单个 AR Tag,可以选择与 kinect 深度数据集成获得更好的位姿识别效果
  3. 识别和跟踪由多个 AR Tag 组成的 “捆绑包”。以此可以获得更稳定的位姿识别、提高遮挡鲁棒性以及对多边物体的跟踪效果。
  4. 使用相机图像自动计算“捆绑包”中 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中使用

<launch><node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.34 0 0.15 0 0 0 base_footprint camera_link 100" /><!-- AR tag 边框宽度 厘米  --><arg name="marker_size" default="4.0" /><arg name="max_new_marker_error" default="0.08" /><arg name="max_track_error" default="0.2" /><arg name="cam_image_topic" default="/camera/depth_registered/points" /><arg name="cam_info_topic" default="/camera/rgb/camera_info" /><arg name="output_frame" default="/camera_link" /><node name="ar_track_alvar" pkg="ar_track_alvar" type="individualMarkers" respawn="false" output="screen"><param name="marker_size"           type="double" value="$(arg marker_size)" /><param name="max_new_marker_error"  type="double" value="$(arg max_new_marker_error)" /><param name="max_track_error"       type="double" value="$(arg max_track_error)" /><param name="output_frame"          type="string" value="$(arg output_frame)" /><remap from="camera_image"  to="$(arg cam_image_topic)" /><remap from="camera_info"   to="$(arg cam_info_topic)" /></node><!-- 开启摄像头  --><include file="$(find astra_camera)/launch/gemini.launch" /></launch>

 launch 文件主要为四个部分:

  1. 定义坐标转换
  2. 配置节点参数
  3. 开启摄像头

首先我们需要定义摄像头的位置,演示示例的摄像机是安装的机器人身上的,所以我们使用了 static_transform_publisher 发布了一个静态坐标转换,指定 camera_link,用于表示相机的位置和方向。使用TF(Transformation)库可以将坐标系之间的变换关系(transform)发布到ROS中,从而可以方便地进行相机的姿态控制和图像处理等操作。指定 camera_link 位姿时,我们使用的是 base_footprint ,其为机器人在地面上的投影位置,一般选择机器人中心。static_transform_publisher 的参数中我们定义了 camera_link 在空间的位置,是在 base_footprint 的前方 34cm 高 15cm 处。

配置 individualMarkers 的节点参数主要是定义 marker_size 黑色方块一侧的宽度,这里使用的单位是厘米,你可以在打印出 AR Tag 后进行测量填入。max_new_marker_errormax_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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/188071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git常用命令#更改用户名

1.查看当前用户信息 git config user.name2.更改用户名 特定仓库中更改用户名 如果你只想在特定仓库中更改用户名&#xff0c;可以在不使用 --global 参数的情况下执行相同的命令&#xff0c;并进入特定仓库的目录进行修改。 cd /path/to/your/repository git config user.na…

react实现加载动画

1.Spinning.tsx import "./Spinning.scss";interface Props {isLoading: boolean;children?: React.ReactNode; }const Spinning: React.FC<Props> ({isLoading true,children }) > {return <div className{spinning-wrapper${isLoading ? " l…

iOS的内存检测、发热

1.内存检测 第三方开源库&#xff1a; 1.Leaks工具&#xff08;Xcode自带&#xff09;&#xff1a;虽非第三方库&#xff0c;但Xcode内置的Leaks工具非常有效于检测内存泄漏。2.FBRetainCycleDetector&#xff1a;Facebook开源的一个库&#xff0c;用于检测循环引用和内存泄漏…

计算机新建盘符和重新分配盘符的大小

一、新建盘符 有些电脑刚买来时候&#xff0c;只有一个C盘分区&#xff0c;此时最好增加几个分区方便使用。 注意&#xff1a;分区操作要慎重&#xff0c;不要轻易去试。这里只针对购买的电脑厂家未做分区&#xff0c;只有一个C盘的情况。 如果自己电脑的分区本身已经满足你…

2023.11.12 阿里云产品全线故障

阿里云 11.12 故障原因曝光&#xff1a;访问密钥服务 (Access Key) 异常 (baidu.com) 故障原因竟然是因为生成白名单代码逻辑缺陷。

【微服务常识】

文章目录 一、网关二、三、四、 一、网关 流量网关提供全局性的、与后端业务应用无关的策略&#xff0c;例如 HTTPS证书卸载、Web防火墙、全局流量监控、日志记录、黑白名单控制、接入请求到业务系统的负载均衡等&#xff0c;比如Kong。 业务网关业务紧耦合的、提供单个业务域…

2024年天津天狮学院专升本专业课报名缴费流程

天津天狮学院高职升本缴费流程 一、登录缴费系统 二、填写个人信息&#xff0c;进行缴费 1.在姓名处填写“姓名”&#xff0c;学号处填写“身份证号”&#xff0c;如下图所示&#xff1a; 此处填写身份证号 2.单击查询按钮&#xff0c;显示报考专业及缴费列表&#xff0c;…

KaiwuDB 通过中国信通院“可信数据库”性能与稳定性评测

11月29日&#xff0c;中国信通院 2023 年下半年“可信数据库”评估评测结果正式发布&#xff0c;由 KaiwuDB研发的开务数据库系统 KaiwuDB V2.0 达到信通院时序数据库性能、稳定性测试标准。 至此&#xff0c;KaiwuDB已完成时序数据库基础能力、性能、稳定性全项评测&#xff…

杠杆交易和合约交易

随着加密数字货币的交易方式逐渐完善&#xff0c;杠杆交易也逐渐成为交易者获利的重要手段之一。杠杆交易可以通过借贷放大投资收益&#xff0c;但是也同时放大风险。 实际使用过程中有很多小白会有不少疑问&#xff1a;比如杠杆交易和合约交易都是放大风险&#xff0c;那这两…

HTAP 还可以这么玩?丨TiDB 在 IoT 智慧园区的应用

作者&#xff1a;某物联网公司设施云平台负责人 用户简介&#xff1a;我们是一家提供全链智慧园区整体解决方案的物联网公司&#xff0c;致力于打造可持续发展的智慧园区。 基础设施平台简介 基础设施平台是集团一线作业人员日常工作中高度依赖的重要系统&#xff0c;涵盖了各…

溜冰场电脑收银系统软件会员管理操作教程,佳易王溜冰场会员卡管理软件下载

溜冰场电脑收银系统软件会员管理操作教程&#xff0c;佳易王溜冰场会员卡管理软件下载 一、软件 部分功能简介&#xff1a; 1、会员信息登记 &#xff1a;可以直接使用手机号登记&#xff0c;也可以使用实体卡片&#xff0c;推荐用手机号即可。 2、会员卡类型 &#xff1a;可…

自己生成二维码

1 你的需求 有时候你自己需要一些二维码&#xff0c;用于访问一些链接&#xff0c;但是你发现你在百度的时候&#xff0c;各种乱七八糟&#xff0c;夹带广告&#xff0c;免费的&#xff0c;付费的二维码生成服务&#xff0c;弄得你云里雾里&#xff0c;不知道相信哪个。也不太…

Linux 系统启动过程

目录 IOS/UEFI阶段 引导加载程序阶段 内核启动阶段 用户空间初始化阶段 登录管理器阶段 用户登录阶段 图形界面或命令行界面 IOS/UEFI阶段 计算机通电&#xff0c;BIOS或UEFI启动。 进行硬件初始化、POST&#xff08;Power-On Self-Test&#xff09;自检&#xff0c;检…

Python开发运维:PyMongo 连接操作 MongoDB

目录 一、理论 1.PyMongo模块 2.Mongo Shell 二、实验 1. Windows11安装MongoDB 7.0.4 2.Windows11安装MongoDB Shell 2.1.0 3.PyMongo 连接 MongoDB&#xff08;无密码方式&#xff09; 4.PyMongo 连接 MongoDB&#xff08;有密码方式&#xff09; 5.PyMongo 操作 Mo…

传教士与野人过河问题

代码模块参考文章&#xff1a;传教士与野人过河问题&#xff08;numpy、pandas&#xff09;_python过河问题_醉蕤的博客-CSDN博客 问题描述 一般的传教士和野人问题&#xff08;Missionaries and Cannibals&#xff09;&#xff1a;有N个传教士和C个野人来到河边准 备渡河。…

【分布式事务】Seata 开源的分布式事务解决方案

1. 什么是seata Seata 是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式&#xff0c;为用户打造一站式的分布式解决方案。 2. seata发展历程 阿里巴巴作为国内最早一批进行应用分…

SHELL编程前奏_小工具

本节课程目标 了解shell中的通配符 熟悉grep、cut、sort等小工具和shell中的通配符的使用 #一、文本处理工具 ##1. grep工具 grep是行过滤工具&#xff1b;用于根据关键字进行行过滤 语法和选项 语法&#xff1a; # grep [选项] 关键字 文件名 常见选项&#xff1a; OP…

dockerfile与docker-compose解释及对比

Dockerfile 是一个文本文件&#xff0c;用于定义单个Docker镜像的构建过程和配置。它包含了一系列的指令&#xff0c;如FROM、RUN、COPY、CMD等&#xff0c;按照顺序执行这些指令来构建镜像。Dockerfile可以定义容器的基础镜像、安装依赖软件、拷贝文件、运行命令等操作。通过…

视频中的文字水印怎么去除?这三招学会轻松去视频水印

短视频与我们生活&#xff0c;工作息息相关&#xff0c;日常在在刷短视频时&#xff0c;下载保存后发现带有文字logo水印&#xff0c;如果直接拿来进行二次创作&#xff0c;不仅影响观看效果&#xff0c;平台流量还会受限制。怎么去除视频中的文字水印就成为了当下热门话题之一…

【latex】调整图片与上下文的距离

Latex调整图片与上下文距离 \begin{figure} \vspace{-0.8cm} %调整图片与上文的垂直距离\setlength{\abovecaptionskip}{-0.2cm} %调整图片标题与图距离\setlength{\belowcaptionskip}{-1cm} %调整图片标题与下文距离latex调整公式、图片与正文的距离