首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

ROS-noetic-USB相机的标定

  • 25-03-08 01:40
  • 3465
  • 5796
blog.csdn.net

针对使用apriltag的降落实验,需要进行相机的标定,从网上搜罗了各种标定教程,最终标定成功,整理如下:

系统:ubuntu20.04+ROS-noetic

1、安装usb_cam软件包

sudo apt install ros-noetic-usb-cam

2、启动usb相机节点,使用以下命令查找摄像头接口

roslaunch usb_cam usb_cam-test.launch
ls /dev/video*

运行此命令后,会显示:

  1. will@will-Dell-G15-5511:~/omni_ws$ ls /dev/video*
  2. /dev/video0 /dev/video1 /dev/video2 /dev/video3

判断一下自己的外接相机是哪个设备

3、修改 usb_cam/launch/usb_cam-test.launch

  1. <launch>
  2. <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
  3. <param name="video_device" value="/dev/video0" />
  4. <param name="image_width" value="640" />
  5. <param name="image_height" value="480" />
  6. <param name="pixel_format" value="yuyv" />
  7. <param name="camera_frame_id" value="usb_cam" />
  8. <param name="io_method" value="mmap"/>
  9. </node>
  10. <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
  11. <remap from="image" to="/usb_cam/image_raw"/>
  12. <param name="autosize" value="true" />
  13. </node>
  14. </launch>

主要就是修改里面的 这一项就行,默认是0,改成自己的设备编号就行

4、然后启动roslaunch usb_cam usb_cam-test.launch,有图像出来就成功了。

5、下载ROS的相机标定包

sudo apt-get install ros-noetic-camera-calibration
sudo apt install ros-noetic-camera-calibration -y

上面这两个都能用,但是我忘了我用的是哪个命令了,试试吧

6、打印一个棋盘格,像下面这样的:

1)棋盘格的size:比如上图这个是一个5x7的,就数这个图的交点一行有几个,和一列有几个就行
2)确定格子的大小:要根据打印出来的结果进行测量,上面这张图,我用A4纸打印,打印出来的格子边长是0.019m,也就是1.9cm,还要量一下格子的长宽,看看是不是真的是正方形。
7、开始标定:

先启动相机,再启动标定程序

  1. roslaunch usb_cam usb_cam-test.launch
  2. rosrun camera_calibration cameracalibrator.py --size 4x6 --square 0.026 image:=/usb_cam/image_raw camera:=/usb_cam

这里的size和square就是之前测量的数值,然后会出现如下界面:

在标定程序的界面能看到右侧有X Y Size Skew 还有CALIBRATE, SAVE 和COMMIT的标识
X:表示标定板在视野中的左右位置
Y:表示标定板在视野中的上下位置
Size:表示标定板在视野中的尺寸大小,其实就是离相机的远近
Skew:表示标定板在视野中的倾斜角度

打开程序后,就可以开始调整标定板的位置,让它在相机视野中各个位置移动和转动,让X Y Size和Skew这四个值下面的长条变成绿色,然后就可以看到CALIBRATE这个按钮变成青色,点击就会开始计算相机的参数,这个过程需要等一会,耐心等待。

这里可能会出现一个问题就是运行rosrun camera_calibration...的时候会报错:

couldn‘t find executable named cameracalibrator.py below /opt/ros/melodic/share/camera_calibration

意思是在/opt/ros/melodic/share/camera_calibration没有cameracalibrator.py

打开这个位置确实没有,但是在/opt/ros/melodic/lib/camera_calibration中是有的,把这个文件复制到前面的目录中即可运行。

  1. cd /opt/ros/noetic/lib/camera_calibration
  2. sudo cp -r cameracalibrator.py /opt/ros/noetic/share/camera_calibration

7、计算完毕终端是这样的

 然后SAVE按钮也会变成青色,点击SAVE按钮就会把数据保存到默认的目录下,这个目录在/tmp/calibrationdata.tar.gz

打开这个压缩包,里面有刚刚采集的图片,还有保存相机的参数,如下:

8、然后就是最后一步了,打开usb_cam-test.launch文件,加多一行导入相机参数:

  1. <launch>
  2. <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
  3. <param name="video_device" value="/dev/video2" />
  4. <param name="image_width" value="640" />
  5. <param name="image_height" value="480" />
  6. <param name="pixel_format" value="yuyv" />
  7. <param name="camera_info_url" value="package://usb_cam/camera_info/camera_calibration20220531.yaml"/>
  8. <param name="camera_frame_id" value="usb_cam" />
  9. <param name="io_method" value="mmap"/>
  10. </node>
  11. <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
  12. <remap from="image" to="/usb_cam/image_raw"/>
  13. <param name="autosize" value="true" />
  14. </node>
  15. </launch>

之后照常用roslaunch启动usb cam就可以了

9、如果做实验的话,要把这个标定文件拷到机载计算机的.ros-camera info文件夹里

10、在电脑上验证一下apriltag效果

下载apriltag的包:

1)安装依赖:不要放到ros的工作空间里面,一般放到home目录下

git clone https://github.com/AprilRobotics/apriltag.git      # 这个不是ros的功能包

2)编译依赖库apriltag: 进入apriltag文件夹中,然后新建文件夹build

  1. mkdir build
  2. cd build
  3. cmake .. ## 注意两点
  4. make
  5. sudo make install #安装到ros中

3)安装AprilTag_ros包:将源码拷贝到你的工作空间中的src工作目录下

git clone https://github.com/AprilRobotics/apriltag_ros.git  #在src文件夹内

4)回到工作空间进行编译

catkin_make

5)Apriltag_ros的使用

①配置文件 settings.yaml 

  1. tag_family: 'tag36h11' # options: tagStandard52h13, tagStandard41h12, tag36h11, tag25h9, tag16h5, tagCustom48h12, tagCircle21h7, tagCircle49h12 #支持单一标签类型
  2. tag_threads: 2 # default: 2 # 设置Tag_Threads允许核心APRILTAG 2算法的某些部分运行并行计算。 典型的多线程优点和限制适用
  3. tag_decimate: 1.0 # default: 1.0 #减小图像分辨率
  4. tag_blur: 0.0 # default: 0.0 #设置tag_blur> 0模糊图像,tag_blur < 0锐化图像
  5. tag_refine_edges: 1 # default: 1 #增强了计算精度,但消耗了算力
  6. tag_debug: 0 # default: 0 #1为保存中间图像到~/.ros
  7. 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.)
  8. # Other parameters
  9. publish_tf: true # default: false #发布tf坐标

I. tag_family:时设置检测的标签类型(二维码图片类型),一般用’tag36h11’ 。openmv的IDE可以生成这个标签。
II. 如果想发布TF坐标,需要把publish_tf设置为true。

②配置文件 tags.yaml (定义要查找的标签和标签簇)

  1. # 这个标签中至少要填入三个参数
  2. standalone_tags:
  3. [
  4. {id: 1, size: 0.05}, # id 对应于生成标签的ID号,size对应标签的大小
  5. {id: 2, size: 0.05},
  6. {id: 22, size: 0.05},
  7. {id: 45, size: 0.05},
  8. ]
  9. #这个标签是根据大小和位置检测的
  10. tag_bundles:
  11. [
  12. {
  13. name: 'my_bundle',
  14. layout:
  15. [
  16. {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} # id 对应于生成标签(二维码)的ID号,size对应标签的大小
  17. {id: 22, size: 0.05, x: 0.0000, y: 0.0000, z: 0.0, qw: 1.0, qx: 0.0, qy: 0.0, qz: 0.0}, # 我选用的是22和45号标签
  18. {id: 45, 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 对应于生成标签(二维码)的ID号,size对应标签的大小
  19. ]
  20. }
  21. ]

 注意添加你要设定的二维码标签的ID,和size(单位是  m),后面的 x,y,z 等表示的是坐标

6)修改launch文件:

  这里主要是为了启用对应的相机话题(topic)和图像话题(topic)

  进入apriltag_ros/apriltag_ros/launch文件夹中,会看到三个launch文件,主要修改这个continuous_detection.launch文件

  1. <arg name="camera_name" default="/usb_cam" />
  2. <arg name="image_topic" default="image_raw" />
  3. <arg name="camera_frame" default="/camera" />

7)使用功能包:

①开相机

roslaunch usb_cam usb_cam-test.launch  #启动摄像头

②启动功能包

  1. source ~/catkin_ws/devel/setup.bash
  2. roslaunch apriltag_ros continuous_detection.launch

 注意相机标定文件需要放置的位置以及.yaml文件中的camera_name

③常用测试图像指令

rqt_image_view

 把话题切换成/tag_detections_image

或者使用rviz

rosrun rviz rviz

④输出定位数据

  1. rostopic echo /tag_detections
  2. rostopic echo /tf
  3. rostopic echo /usb_cam/camera_info

参考:

couldn‘t find executable named cameracalibrator.py below /opt/ros/melodic/share/camera_calibration_cameracalibration没有calibrator.py怎么办、-CSDN博客

【ROS】usb_cam相机标定_ros相机标定-CSDN

【AprilTag】视觉定位实战 | 使用 ROS 驱动的 USB 摄像头进行相机标定与 AprilTag 识别_apriltag ros-CSDN博客

注:本文转载自blog.csdn.net的恰恰恰巴塔的文章"https://blog.csdn.net/renwenjing666/article/details/143490782"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

138
3C硬件
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top