ROS下AprilTags 相机定位

1.AprilTag_ros包的安装

安装环境:

ubuntu 18.04 ROS: Melodic

AprilTag_ros官方链接http://wiki.ros.org/apriltag_ros

export ROS_DISTRO=melodic # Set this to your distro, e.g. kinetic or melodic
source /opt/ros/$ROS_DISTRO/setup.bash # Source your ROS distro
mkdir -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)

2.AprilTag_ros包的使用

在使用该功能包前,要先对单目摄像头进行标定。

2.1 ros中单目摄像头的标定

第一步:安装标定功能包

sudo apt-get install ros-melodic-camera-calibration

注:这里要确定安装了usb摄像头的驱动包,如果没安装安下面步骤安装

git clone https://github.com/bosch-ros-pkg/usb_cam.git #拷贝到ROS工作空间中的src工作目录下,然后编译

第二步:打开摄像头启动标定节点

roslaunch usb_cam usb_cam-test.launch #启动摄像头
rosrun camera_calibration cameracalibrator.py --size 8x5 --square 0.028 image:=/usb_cam/image_raw camera:=/usb_cam

参数说明:

size:棋盘内角点的个数,行*列

square:一个格子的边长,单位是m

image:摄像头发布的图像话题明

camera:相机名

第三步:开始标定

 

上下左右移动摄像头,当标定完成时,CALIBRATE会有颜色,点击它,然后点击save,再点击COMMIT。这是会自动保存标定文件。

标定文件保存路径

writing calibration data to /home/mue/.ros/camera_info/head_camera.yaml #ros默认自动找这个路径的文件

输出标定参数

[image]
width
640
height
480
[narrow_stereo]
camera matrix
496.458369 0.000000 321.704479
0.000000 498.045492 245.523491
0.000000 0.000000 1.000000
distortion
0.156540 -0.184929 0.004541 0.004684 0.000000
rectification
1.000000 0.000000 0.000000
0.000000 1.000000 0.000000
0.000000 0.000000 1.000000
projection
513.121582 0.000000 324.144520 0.000000
0.000000 515.390259 246.954678 0.000000
0.000000 0.000000 1.000000 0.000000

2.2 运行AprilTag_ros包

在运行节点需要配置两个配置文件

config/settings.yaml

tag_family: 'tag36h11' # options: tagStandard52h13, tagStandard41h12, tag36h11, tag25h9, tag16h5, tagCustom48h12, tagCircle21h7, tagCircle49h12 #支持单一标签类型
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 (Tunable parameter with 2 being a good choice - values >=3 consume large amounts of memory. Choose the largest value possible.)
# Other parameters
publish_tf: true # default: false #发布tf坐标

这里有两点注意:

1.tag_family:时设置检测的标签类型,一般用’tag36h11’ 。openmv的IDE可以生成这个标签。

2.如果想发布TF坐标,需要把publish_tf设置为true。

tags.yaml8

# 这个标签中至少要填入三个参数
standalone_tags:
[
    {id: 1, size: 0.05}, #size对应标签的大小
    {id: 2, size: 0.05},
    #{id: 2, size: 0.05},
    #{id: 3, size: 0.05},
    {id: 3, size: 0.05}
]
#这个标签是根据大小和位置检测的
tag_bundles:
[
    {
        name: 'my_bundle',
        layout:
        [
            {id: 10, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}
        ]
    }
]

说明:如果只用于相机的定位,只需要填standalone_tags里的参数就可以了。其id号对应其生车标签的id,即每个数字生成的标签是唯一的。

这里要修改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" />

启动节点

roslaunch apriltag_ros continuous_detection.launch

效果:

 

下面识别一个标签,可以打开RVIZ查看

rosrun rviz rviz

查看数据

rostopic echo /tag_detections

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS2是一个开源的机器人操作系统,其中包含了许多用于机器人应用开发的功能库和工具。而单目相机标定是在机器人视觉应用中非常重要的一步,可以帮助我们得到相机的内参和外参等参数,从而对图像进行更加准确的处理和分析。下面是ROS2单目相机标定的教程: 1. 首先需要安装ROS2,可以参考ROS2官方网站进行安装。 2. 安装相机驱动程序,例如USB相机可以使用UVC Camera驱动程序,可以通过以下命令进行安装: ``` sudo apt-get install ros-<distro>-uvc-camera ``` 其中`<distro>`为ROS2的版本号。 3. 安装相机标定工具包,可以使用以下命令进行安装: ``` sudo apt-get install ros-<distro>-camera-calibration ``` 4. 打开终端并输入以下命令,启动相机: ``` ros2 run uvc_camera camera_node ``` 5. 接下来需要收集标定所需的数据。可以通过运行以下命令启动图像采集节点: ``` ros2 run image_tools cam2image ``` 6. 在运行节点之后,会自动保存一些图像文件。需要尽可能地采集不同的角度、距离和姿态的图像,以便后续标定的准确性。 7. 完成图像采集后,运行以下命令进行标定: ``` ros2 run camera_calibration cameracalibrator --ros-args -p camera:=/camera -p image:=/image_raw ``` 其中`/camera`和`/image_raw`分别为相机和图像采集节点的话题名称。执行该命令后,会自动打开一个图形界面,显示采集到的图像。按照指导完成标定即可。 8. 标定完成后,可以通过以下命令查看标定结果: ``` ros2 run camera_calibration cameracheck.py ``` 以上就是ROS2单目相机标定的教程,希望能够帮助到你。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值