教程
标定流程
单目相机标定
我使用的是USB相机,所以直接使用ros的usb_cam功能包驱动相机闭关获取实时图像,然后用ros的camera_calibration标定相机。
1,下载usb_cam和camera_calibration:
sudo apt install ros-${ROS_DISTRO}-usb-cam
sudo apt install ros-${ROS_DISTRO}-camera-calibration
2,在相机接入的控制系统中执行usb_cam驱动相机:
ros2 run usb_cam usb_cam_node_exe
2,在电脑端执行camera_calibration
执行这个标定持续需要使用到图像发布的话题和相机的名称:
图像话题:
相机名称(frame_id):
启动camear_calibration:
ros2 run camera_calibration cameracalibrator --size 8x6 --square 0.024 --ros-args -r image:=/image_raw -p camera:=default_cam
size:
-
8是每行的角点数(列数 )
-
6 是每列的角点数(行数)
8和6是否可以互换,没测。
squarre:
棋盘格中每一个方格的边长,单位m。
4,移动棋盘格标定
启动camera_calibration之后就可以按照下面的视频的方式移动棋盘格进行标定的数据采集。
注意:相机放置的位置一定要又足够的上下左右和前后移动达到空间,否则采集不到数据。
采集完数据,calibration按钮变为绿色,就可以点击calibration进行标定,等待标定完成,点击save,在终端可以查看文件保存的位置。点击commit之后,退出。
5,修改标定文件并使用
通过上面的标定步骤完成得到的是一个压缩文件,解压之后其中有一个.yaml文件就是标定数据文件。需要改动两个地方:
1,把文件名改为相机名称:
eg:
ost.yaml--->defualt_cam.yaml
2,打开文件,查看文件中的相机名称和自己使用的相机名称一不一样,不一样就改未自己的相机名称。
将文件复制到昵称程序使用标定文件的路径下即可使用。
问题
swscaler @ 0xaaaaf438c7e0] No accelerated colorspace conversion found from yuv422p to rgb24.
硬件加速不可用:你的系统可能缺少必要的硬件加速支持或驱动程序,无法提供从 YUV 到 RGB 的快速转换。
意味着 FFmpeg 在尝试将 YUV422P 格式的图像转换为 RGB24 格式时,没有找到任何硬件加速的方法来进行这个颜色空间转换。因此,它只能使用软件方式来完成这一任务,这通常会导致更高的 CPU 使用率,而且音频话题发送频率慢。
YUV 到 RGB 转换的需求:当你使用 usb_cam
节点以原始像素格式(如 YUYV 或 YUV422P)读取摄像头数据时,ROS 需要将其转换为更常用的 RGB 格式以便进一步处理。如果没有硬件加速选项可用,这个转换过程将由软件执行,但是速度慢。
-- 这个报警不影响标定。
FFmpeg:
这是一个命令行工具,用于格式转换、裁剪、合并、缩放等操作。它可以将音频和视频数据从一种格式转换为另一种,并且支持大量的编解码器和文件格式。
本质上就是具有音频存储和发送格式转换一套代码。