手头有个项目需要检测apriltag,ROS的这个包看起来能满足我的要求,记录一下。
apriltag_ros:
http://wiki.ros.org/apriltag_roswiki.ros.orgmkdir -p ~/catkin_ws/src # Make a new workspace
cd ~/catkin_ws/src # Navigate to the source space
git clone https://github.com/AprilRobotics/apriltag.git # Clone Apriltag library
git clone https://github.com/AprilRobotics/apriltag_ros.git # Clone Apriltag ROS wrapper
cd ~/catkin_ws # Navigate to the workspace
rosdep install --from-paths src --ignore-src -r -y # Install any missing packages
catkin build # Build all packages in the workspace (catkin_make_isolated will work also)
相机驱动cv_camera:
https://wiki.ros.org/cv_camerawiki.ros.orgcd ~/catkin_ws/src
git clone https://github.com/OTL/cv_camera
catkin build
相机标定:
http://wiki.ros.org/camera_calibrationwiki.ros.org rosdep install camera_calibration
1. 打开相机
可通过ls /dev/video*查看相机设备
![67aa20381b46309d2ccddf785aa8fb0d.png](https://i-blog.csdnimg.cn/blog_migrate/81d2b4459ec36c8d0780ef6411f28775.png)
我的robot的相机是video2
设置并打开相机驱动,
rosparam set cv_camera/device_id 2 #set camera
rosrun cv_camera cv_camera_node
查看topic list
![9e4223c397c24bf136714ce528bebaa4.png](https://i-blog.csdnimg.cn/blog_migrate/60663bc3b77d90800388bc21a35366e5.jpeg)
其中
/cv_camera/image_raw是相机抓到的图片
/cv_camera/image_info是相机的参数
这两个topic要用于接下来的apriltag_ros 。
2. 标定相机
rosrun camera_calibration cameracalibrator.py --size 11x9 --square 0.100 image:=/cv_camera/image_raw camera:=/cv_camera
解释一下其中的参数,11*9代表我用的标定版是11*9的,size是每个正方形格子的边长大小,单位是m,image和camera一定要映射到自己的驱动。
![b9a75717f9fdd02a1062a9b75f1895c1.png](https://i-blog.csdnimg.cn/blog_migrate/44084c23224a720722d495df6fc06547.jpeg)
上下左右移动,等calibrate亮了就可以计算相机的参数了,之后save以及commit自动保存。
3. Apriltag生成
openmv下载
Downloadopenmv.io![e687a805815e9b09d13a1bb973b43082.png](https://i-blog.csdnimg.cn/blog_migrate/aef34ca00af4f7e9c6d9c2c934e140b4.png)
sudo chmod +x openmv-ide-linux-x86_64-2.6.5.run
./openmv-ide-linux-x86_64-2.6.5.run
工具-机器视觉-ApirlTag生成器-TAG36H11
![257dd61219bac429f2da405a3c352ce7.png](https://i-blog.csdnimg.cn/blog_migrate/36d3e983a21b29d481233d2f35cc78bd.png)
AprilTag
![5e0f445801e91089d90dd486bc511700.png](https://i-blog.csdnimg.cn/blog_migrate/d67b88f8c5e04341437c858635ca7aff.png)
4. 运行apriltag_ros
要点参考官方wiki,各个文件修改时的注意事项。
http://wiki.ros.org/apriltag_ros/Tutorials/Detection%20in%20a%20video%20streamwiki.ros.org修改launch文件,主要是camera_name和image_topic要改成对应相机的topic
<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="/cv_camera" />
<arg name="camera_frame" default="cv_camera" />
<arg name="image_topic" default="image_raw" />
<!-- Set parameters -->
<rosparam command="load" file="$(find apriltag_ros)/config/settings.yaml" ns="$(arg node_namespace)" />
<rosparam command="load" file="$(find apriltag_ros)/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="camera_frame" type="str" value="$(arg camera_frame)" />
<param name="publish_tag_detections_image" type="bool" value="true" /> <!-- default: false -->
</node>
</launch>
修改settings.yaml文件,采用何种apriltags二维码
修改tags.yaml文件,主要是自己的AprilTag
tag_bundles:
[
{
name: 'CUSTOM_BUNDLE_NAME',
layout:
[
{id: 0, size: 0.146, x: 0, y: 0, z: 0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0},
]
}
]
好了,接下来我们就可以运行了。
roslaunch apriltags2_ros continuous_detection.launch
可以通过topic list看到新的topic,其中/tag_detection就是我们的检测结果了。
![c29738d24bc3aba02b28dc839870e433.png](https://i-blog.csdnimg.cn/blog_migrate/2061d002489dd29d190c9d32f26e052a.jpeg)
rostopic echo /tag_detection
![a7bdf4f4e150727b3ce56fbeba3e53b5.png](https://i-blog.csdnimg.cn/blog_migrate/5c646555833b8f075cddeea8c5356dfe.jpeg)
能看到apriltag的位姿。
![94d53bcf1e0e5491f27624f23c4d303b.png](https://i-blog.csdnimg.cn/blog_migrate/df1c1e4714d13dc537178ba1c799b015.jpeg)
最后给大家看一下我小飞机的靓照,这个项目后续的部分我也会继续更新的。
![ecbbe539587ac9455afb22f46aed8778.png](https://i-blog.csdnimg.cn/blog_migrate/519566fa36228ec721795d87d1f9d88c.jpeg)