单目相机标定 分辨率1920X1080 利用libuvc
- libuvc 安装
- 开始标定
之前一直使用 usb_cam 但是默认分辨率是 640X480,调节到1920X1080后运行出错,干脆用libuvc得了
libuvc 安装
参考官方说明
- 安装libuvc
sudo apt install ros-melodic-libuvc-camera
,也可以下载源码自行编译
注意
:本文是下载源码自行编译的 - 查询相机的
idVendor
和idProduct
,打开终端,输入以下命令
:
lsusb
下面是分别插拔相机后得到的信息
可以看到相机的位置信息是Bus 001 Device 002: ID 05a3:9422 ARC International
其中相机的idVendor
是 0x05a3
,idProduct
是0x9422
3. 编写launch文件,新建uvc.launch ,复制以下代码,修改vendor
,product
以及分辨率
<launch><group ns="camera"><node pkg="libuvc_camera" type="camera_node" name="mycam"><!-- Parameters used to find the camera --><param name="vendor" value="0x05a3"/> <param name="product" value="0x9422"/><param name="serial" value="3"/><!-- If the above parameters aren't unique, choose the first match: --><param name="index" value="0"/><!-- Image size and type --><param name="width" value="1920"/><param name="height" value="1080"/><!-- choose whichever uncompressed format the camera supports: --><param name="video_mode" value="mjpeg"/> <!-- or yuyv/nv12/mjpeg --><param name="frame_rate" value="30"/><param name="timestamp_method" value="start"/> <!-- start of frame --><param name="camera_info_url" value=""/><param name="auto_white_balance" value="true"/></node></group><node pkg="image_view" type="image_view" name="image_view_test" output="screen"><remap from="image" to="/camera/image_raw"/></node></launch>
将launch文件移入libuvc_ros-master/libuvc_camera/launch
内,输入以下命令
roslaunch libuvc_camera uvc.launch
第一次可能会遇到 permission denied 的错误,只需根据报错信息执行以下命令
即可
sudo chmod o+w /dev/bus/usb/001/002
注意
将上述命令中的/dev/bus/usb/001/002
替换为错误信息中的路径
开始标定
-
打印标定板,A4纸即可
-
启动相机,输入以下
命令
roslaunch libuvc_camera uvc.launch
- 启动标定程序,ros已提供
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.0245 image:=/camera/image_raw camera:=/camera
参数:
size: 8x6 是指两个黑色方块相交处的所有的点的行列数 如下图所示
square: 黑色方块的边长,单位m
image: 图像话题,请使用 rostopic list 查看topic 列表
camera: 服务节点,使用 rosservice list 查看service 列表
之后会出现一个窗口
请左右充分平移至X下方的线段变成绿色
然后上下平移至Y下方的线段变成绿色
前后平移至Size下方的线段变成绿色
改变标定板俯仰角至Skew下方的线段变成绿色
等Calibrate按钮可用时,点击等待终端输出计算结果
然后点击Commit,将计算结果保存至~/.ros/camera_info/camera.yaml中,这是libuvc程序的默认读取路径
或者你可以将该文件移动到libuvc包内,并通过launch文件指定其路径
<param name="camera_info_url" value="file://$(find libuvc_camera)/camera.yaml"/>