系统ubuntu18.04 ROS-melodic以及相机。本文使用普通的USB相机,提前对USB相机进行标定,或得相机的内外参。
具体步骤可参考利用ROS camera_calibration对usb相机标定
mkdir -p ~/apriltag_ws/src # 建立一个新的工作空间
cd ~/apriltag_ws/src
git clone https://github.com/AprilRobotics/apriltag.git # 克隆Apriltag
git clone https://github.com/AprilRobotics/apriltag_ros.git # 克隆Apriltag ROS wrapper
cd ~/apriltag_ws
rosdep install --from-paths src --ignore-src -r -y # 安装缺少的包
catkin build # 编译功能包 (或使用catkin_make_isolated)
tag36h11比较常用。免积分下载地址
tag_family: 'tag36h11' # options: tagStandard52h13, tagStandard41h12, tag36h11, tag25h9, tag16h5, tagCustom48h12, tagCircle21h7, tagCircle49h12
#支持单一标签类型,一般用’tag36h11’。
tag_threads: 2 # default: 2
# 设置Tag_Threads允许核心APRILTAG 2算法的某些部分运行并行计算。 典型的多线程优点和限制适用
tag_decimate: 1.0 # default: 1.0
#减小图像分辨率
tag_blur: 0.0 # default: 0.0
#设置tag_blur> 0模糊图像,tag_blur < 0锐化图像
tag_refine_edges: 1 # default: 1
#增强了计算精度,但消耗了算力
tag_debug: 0 # default: 0
#1为保存中间图像到~/.ros
max_hamming_dist: 2 # default: 2
可调参数为2是一个不错的选择 - 值> = 3消耗大量内存。选择最大的价值。
publish_tf: true # default: false
#发布tf坐标
主要是自己的AprilTag标签的大小。
standalone_tags:
[
{id: 0, size: 0.05},
]
tag_bundles:
[
]
tandalone_tags下边设置的是单一的标签,也就是每个标签都是独立的一个,可以设置多个。ID为标签的ID号,尺寸为标签的边长单位为米,名称为该标签所对应的frame名字,会显示在发布的标签tf frame中。
tag_bundles下边设置的是位姿相对固定的一组标签,除了ID号尺寸外还可以设置标签之间的相对位姿。
1 打开相机
roslaunch usb_cam usb_cam-test.launch
2 打开apriltag
roslaunch apriltag_ros continuous_detection.launch
注意修改continuous_detection.launch文件
相机、图片的话题要与相机发布的话题一致。
使用rostopic list 查看话题
arg name=“camera_name” default=“/usb_cam” # 摄像头话题的名称
arg name=“image_topic” default=“image_raw”# 图片的话题
3 查看apriltag相对于相机的位姿
rostopic echo /tag_detections
运行这条指令需要提前source一下。例如source ~/apriltag_ws/devel/setup.bash
参考
1 ROS 摄像头校准与Apriltag标签使用
2ROS学习笔记(实践二)–AprilTag_ros包的使用