USB相机标定,及通过aruco-ros包识别Aruco码,获取其位姿。
一、aruco码介绍

-
Aruco码:Aruco码是一种基于二进制的二维标记,通常用于计算机视觉领域,尤其是在增强现实(AR)应用中。它是一个黑白的方形图形,包含一个独特的ID,通过定位和识别Aruco码的位置来获取信息。Aruco码的优势在于其可以在不同角度、光照条件下准确地被识别。
-
应用场景:主要用于计算机视觉、机器人定位、增强现实(AR)以及三维重建等领域。例如,在AR应用中,Aruco码可以帮助设备精准地识别位置和角度,并在现实世界中叠加虚拟对象。
并且每个Aruco码包含一个特定的ID,因此它通常只存储一个短小的数字或字母组合。通过识别不同的Aruco码,可以获取不同的信息。
这个网站可以生成Aruco码:在线 ArUco 标记生成器
二、相机标定
这里主要参考了这一篇文章:
【ROS】usb_cam相机标定_ros相机标定-CSDN博客
1、准备好ros环境,安装好usb_cam包,ros 的 camera_calibration 工具,标定板。
确保已安装camera_calibration包:
sudo apt-get install ros-<你的ROS版本>-camera-calibration
2、分别执行:
roslaunch usb_cam usb_cam-test.launch
rosrun camera_calibration cameracalibrator.py --size 11x8 --square 0.030 image:=/usb_cam/image_raw
参数解释:
--size 9x11:标定板的内角点数量(水平×垂直)--square 0.030:每个方格的边长(单位:米)image:=/camera/image:指定接收相机图像的ROS话题
3、开始标定
3.1 我这里使用的标定板

3.2 保持标定板在相机视野中,然后从各种角度,上下左右移动和转动,等X、Y、Size、Skew四个值变成绿条后,点击CALIBRATE这个按钮,等待自动计算出参数就欧克。

在终端得到计算出来的数据:

4、标定完成,点击SAVE按钮,找到在/tmp/calibrationdata.tar.gz中的yaml文件,直接导入相机参数即可。

5、在标定后能更大程度提升识别精度
三、Aruco码识别
1、先安装aruco_ros包
sudo apt-get install ros-<your_ros_distro>-aruco-ros
将 <distro> 替换为你的 ROS 版本,例如 noetic、melodic 等。
2、创建launch文件
<launch>
<node pkg="usb_cam" type="usb_cam_node" name="usb_cam">
<param name="video_device" value="/dev/video6" />
<param name="image_width" value="640" />
<param name="image_height" value="480" />
<param name="camera_info_url" value="file://$(env HOME)/catkin_ws/src/ost.yaml"/>
</node>
<node pkg="aruco_ros" type="single" name="aruco_single">
<remap from="/camera_info" to="/usb_cam/camera_info"/>
<remap from="/image" to="/usb_cam/image_raw"/>
<param name="marker_size" value="0.095" /> <!-- 标签实际物理尺寸(单位:米) -->
<param name="marker_id" value="555" /> <!-- 要识别的特定ID -->
<!-- <param name="marker_frame" value="camera_link" /> 设置输出的坐标系 -->
<param name="camera_frame" value="camera_optical_frame" />
<param name="marker_frame" value="aruco_marker" />
</node>
</launch>
3、运行launch文件后,就可以通过话题查看识别效果了
识别效果:

4、
更多推荐


所有评论(0)