使用棋盘格标定相机
安装标定功能包
sudo apt-get install ros-noetic-camera-calibration
下载棋盘格
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf
启动摄像头
roslaunch usb_cam usb_cam-test.launch
开始标定
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/usb_cam/image_raw camera:=/usb_cam
参数说明:
size: 棋盘内交叉点的个数,行*列
square: 一个格子的边长,单位是m
image: 订阅摄像头发布的图像话题(ROS topic)
camera: 寻找相应的设备相机名
上下左右前后移动摄像头,待calibrate有颜色,点击它,然后点击save,再点击commit,这时会自动保存标定文件。点击save后,标定文件会自动保存在/tmp路径下,文件名为calibrationdata.tar.gz。
一、标签生成
OpenMV下载
https://openmv.io/pages/download
sudo chmod +x openmv-ide-linux-x86_64-2.9.7.run
./openmv-ide-linux-x86_64-2.9.7.run
启动OpenMV,依次选择 工具-机器视觉-AprilTag生成器-TAG16H5 将图像保存下来。
将图像复制到word中,在word中指定图像的物理尺寸并打印。
二、安装 USB-CAM
sudo apt install ros-noetic-usb-cam
cd catkin_ws/src
git clone https://github.com/bosch-ros-pkg/usb_cam.git
cd ..
ctakin_make
source ./devel/setup.bash
roslaunch usb_cam usb_cam-test.launch
三、编译安装依赖库 apriltag
git clone https://github.com/AprilRobotics/apriltag.git
mkdir build
cd build
cmake ..
make
sudo make install
四、apriltag_ros 下载和编译
cd catkin_ws/src
git clone https://github.com/AprilRobotics/apriltag_ros.git
cd ..
catkin_make
五、apriltag_ros 配置(yaml文件使用空格缩进)
- 修改apriltag_ros/apriltag_ros/config文件夹中,settings.yaml
tag_family: 'tag16h5'
tag_threads: 2
tag_decimate: 1.0
tag_blur: 0.0
tag_refine_edges: 1
tag_debug: 0
max_hamming_dist: 2
publish_tf: true
- 将apriltag_ros/launch/continuous_detection.launch中的以下几项修改为自己的相机
<arg name="camera_name" default="/usb_cam" />
<arg name="camera_frame" default="usb_cam" />
<arg name="image_topic" default="image_raw" />
- 修改apriltag_ros/config/tags.yaml
standalone_tags:
[
{id: 0, size: 0.05},
{id: 1, size: 0.05},
{id: 2, size: 0.05},
{id: 3, size: 0.05},
{id: 4, size: 0.05},
{id: 5, size: 0.05},
{id: 6, size: 0.05},
{id: 7, size: 0.05},
{id: 8, size: 0.05},
{id: 9, size: 0.05},
]
0.05m 是每个标签的边长
tag_bundles:
[
{
name: 'my_bundle',
layout:
[
{id: 0, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}
{id: 1, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0},
{id: 2, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0},
]
}
]
六、启动
启动 rqt_image_view
rqt_image_view
rqt_image_view 中的话题选择 /tag_detectios_image。
启动 apriltag_ros
roslaunch apriltag_ros continuous_detection.launch
窗口打印结果
rostopic echo /tag_detections
rviz 显示结果
rosrun rviz rviz
在 rviz 界面中选择:
add-by topic-image
add-by display type-tf
相关问题及解决方法
1.在 settings.yaml 中将图像分辨率调低可以减少误检测,但是会导致标签离得较远时检测不到。
2.在后续处理中将误检测移除。误检测通常不是正方形而是一个极细的长条,利用其这一特性,可以再后续处理中将误检测有效地剔除。
检查 settings.yaml 中 tag_family 是否与自己打印标签的类别一致。
参考
https://blog.csdn.net/whf7890/article/details/125820845
https://blog.csdn.net/bingda_robot/article/details/127960005
https://blog.csdn.net/manbushuizhong/article/details/123805464
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)