AprilTag简介

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

<launch><node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" ><param name="video_device" value="/dev/video0" /><param name="image_width" value="640" /><param name="image_height" value="480" /><param name="pixel_format" value="yuyv" /><param name="camera_frame_id" value="usb_cam" /><param name="io_method" value="mmap"/><param name="camera_name" value="usb_cam"/><param name="camera_info_url" value="file://$(find apriltag_detection)/config/ost.yaml"/></node><node name="charge_cam_image_proc" pkg="image_proc" type="image_proc" output="screen"  ns="usb_cam" /><node pkg="tf" type="static_transform_publisher" name="base_footprint_to_camera"args="-0.04 0.0 0.05 -1.57 0.0 -1.57 base_footprint usb_cam 20"></node>    </launch>

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

<launch><arg name="launch_prefix" default="" /> <!-- set to value="gdbserver localhost:10000" for remote debugging --><arg name="node_namespace" default="apriltag_ros_continuous_node" /><arg name="camera_name" default="/usb_cam" /><arg name="image_topic" default="image_rect" /><!-- Set parameters --><rosparam command="load" file="$(find apriltag_detection)/config/settings.yaml" ns="$(arg node_namespace)" /><rosparam command="load" file="$(find apriltag_detection)/config/tags.yaml" ns="$(arg node_namespace)" /><node pkg="apriltag_ros" type="apriltag_ros_continuous_node" name="$(arg node_namespace)" clear_params="true" output="screen" launch-prefix="$(arg launch_prefix)" ><!-- Remap topics from those used in code to those on the ROS network --><remap from="image_rect" to="$(arg camera_name)/$(arg image_topic)" /><remap from="camera_info" to="$(arg camera_name)/camera_info" /><param name="publish_tag_detections_image" type="bool" value="true" />      <!-- default: false --></node>
</launch>

使用前准备-标签

将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话题,将标签纸放在相机前

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

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

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

rostopic echo /tag_detections

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

AprilTag二维码检测和定位相关推荐

  1. 【写着玩】二维码检测及定位

    文章目录 基于轮廓嵌套的识别方法 OpenCV 中的 QRCodeDetector 最近在B站上看到了 PaperClip 关于二维码的视频,主要讲的是二维码中的纠错码.但是在读取二维码内容前需要先定 ...

  2. 基于OpenCV实现二维码发现与定位

    基于OpenCV实现二维码发现与定位 在如今流行扫描的年代,应用程序实现二维码扫描检测与识别已经是应用程序的标配.特别是在移动端.如果你的应用程序不能自动发现检测二维码,自动定位二维码你都不好意思跟别 ...

  3. 目标检测:二维码检测方案

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  4. 机器视觉实用工具集NO.6——图像变换应用,利用apriltag二维码+透视变换实现水平面相机像素/世界坐标转换

    二维码扫码已经是人们日常生活的一部分,二维码识别已经是事实证明的成熟有效的技术.可以说,二维码是联系现实世界(物理空间)与虚拟世界(像素空间)的很好的媒介.在机器视觉定位桌面物体任务时,可以利用二维码 ...

  5. opencv contrib模块 示例 WeChat qrcode微信二维码检测解码

    在opencv 4.5.3 的 contrib中, 腾讯WeChatCV团队贡献了wechat_qrcode模块,3行代码即可在opencv中实现微信的扫码功能. 文档链接为https://docs. ...

  6. OpenCV4.0 快速QR二维码检测测试示例

    点击我爱计算机视觉标星,更快获取CVML新技术 近几年由于微信大力推广移动支付,二维码已经成为手机App的标配,在众多种类的二维码中,QR码是最为流行的. 刚刚发布的OpenCV4.0-Alpha新增 ...

  7. Jetson Nano 从入门到实战(转载)(案例:Opencv配置、人脸检测、二维码检测)

    目录 1. Jetson Nano简介 2. Jetson Nano环境配置 2.1 开箱配件介绍 2.2 烧录系统 2.3 开机和基本设置 2.4 开发环境配置 2.4.1 更新源和软件 2.4.2 ...

  8. OpenCV C++案例实战三《二维码检测》

    OpenCV C++案例实战三<二维码检测> 前言 一.二维码检测 二.二维码识别 1.通过findContours找到轮廓层级关系 三.二维码绘制 四.源码 总结 前言 本文将使用Ope ...

  9. Jetson Nano 从入门到实战(案例:Opencv配置、人脸检测、二维码检测)

    目录 1. Jetson Nano简介 2. Jetson Nano环境配置 2.1 开箱配件介绍 2.2 烧录系统 2.3 开机和基本设置 2.4 开发环境配置 2.4.1 更新源和软件 2.4.2 ...

最新文章

  1. 删除某个文件夹下的所有文件
  2. ThreadLocal 和神奇的数字 0x61c88647
  3. HTML事件的执行顺序
  4. 修改DEDECMS文章标题长度,解决DEDECMS文章标题显示不全
  5. linux+tomcat+apache
  6. Bootstrap3基础 下载bootstrap3压缩包和相应的jQuery文件
  7. 史上最全Java多线程面试题
  8. 安装配置Eclipse开发PHP环境配置
  9. uboot——之初体验
  10. HDFS基本命令及上传文件API
  11. LINGO11免密版windows
  12. 电力-104规约实际测试2
  13. C语言实现24点游戏算法
  14. Axure-RP8 介绍
  15. JavaScript的20个工具函数助力H5高效开发
  16. Shifting More Attention to Video Salient Object Detection (CVPR 2019)
  17. 【Arduino+ESP32专题】一起来读INA3221数据手册 1
  18. 力扣解法汇总2013-检测正方形
  19. 【ROS学习】- tf学习 - tf中重要函数解析 (陆续更新....)
  20. java调用金蝶云接口_调用金蝶web api

热门文章

  1. 用java代码执行命令行并获取返回结果
  2. Java8新特性 Stream流常用方法
  3. 被拿走的雨伞——我想到的
  4. 又要数数小绵羊(四刷) kkmd66
  5. 软件设计师的证书有多少含金量?
  6. Windows11中无法找到Office 2019 application的解决方案
  7. android 一键接入新浪微博,腾讯微博,人人网,QQ空间,微信好友圈 (只需5分钟)
  8. Unreal Engine05:UE4基本概念
  9. 简单的回显客户端/服务器应用
  10. supervisor+cesi多服务器进程集中管理