摄像头定位Apriltags2_ros

Table of Contents

1、摄像头内参标定

2、Apriltags2_ros

3、tag 生成


1、摄像头内参标定

摄像头内参是否准确直接影响到定位是否准确,因此摄像头的内参标定十分重要

笔者标定使用的是ROS下的 camera_calibration 包,roswiki附有很详细的教程 http://wiki.ros.org/camera_calibration 。或者CSDN里搜索,也有很多中文的教程,可以参考 https://blog.csdn.net/heyijia0327/article/details/43538695 。

基本流程为:

1、启动摄像头,ROS下提供很多摄像头驱动包,如笔者使用的usb_cam,根据需要选择

2、打印标定板,官方使用的是很大的标定板,条件不允许的话,打印到一张A4纸上就行

3、开始标定,一定要注意标定板的size和square必须要选择准确(size 8×6意味着你的标定板应该是9×7的网格,square 0.108意味着每一个小方格的边长为108mm),如果报错,末尾添加 --no-service-check

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/my_camera/image camera:=/my_camera

4、保存标定文件(前面报错的童鞋,可能没办法直接保存,但是没关系,标定结果会打印在终端,人工复制过来,再用camera_calibration_parsers 转换到需要的yaml格式 http://wiki.ros.org/camera_calibration_parsers

 

把标定得到的yaml文件放到,摄像头驱动读取的目录下,如笔者的为 /home/nubot/.ros/camera_info/head_camera.yaml 。

usb_cam会读取标定文件,并通过camera_info的消息发布出去

 


2、Apriltags2_ros

包可以通过git clone下载,放在新建目录下的src中,编译即可使用

git clone https://github.com/dmalyuta/apriltags2_ros.git

同样ROSwik提供了很详细的教程 http://wiki.ros.org/apriltags2_ros/Tutorials/Detection%20in%20a%20video%20stream

 

 

由于时间原因,这里不做详细介绍,简单提一下几个小注意点,后面时间充裕了,笔者会做详细介绍。

1、tag的size

tag的size指的是tag的边长大小。这里放一张检测的照片,彩色框框出来的,就是要去测量的size。

2、continuous_detection节点的消息格式,会出现跟camera订阅不上的情况

教程里给的消息格式如下,订阅的消息来自命名空间 /camera 但实际上,使用continuous_detection时发现节点默认使用的命名空间是/camera_rect。因此会出现节点之间没有订阅上的情况,在提供的launch文件里找到  <arg name="camera_name" default="/camera_rect" />,改成<arg name="camera_name" default="/camera" />就行了


 

3、tag 生成

Apriltag官网提供的源图片分辨率很小,打印出来不符合要求

试了好多方法之后,最后通过openmv生成

官网提供openmv IDE的各种版本下载,https://openmv.io/pages/download 下载linux版本的,得到的是一个.run文件,使用办法(在.run文件目录下):

sudo chmod +x openmv-ide-linux-x86_64-2.0.0.run
./openmv-ide-linux-x86_64-2.0.0.run

我上传了生成的tag36h11共587张图片,嫌麻烦的可以到下面链接下载

高分辨率tag下载:https://download.csdn.net/download/weixin_41139709/10581276

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值