单目相机标定 分辨率1920X1080 利用libuvc

单目相机标定 分辨率1920X1080 利用libuvc

之前一直使用 usb_cam 但是默认分辨率是 640X480,调节到1920X1080后运行出错,干脆用libuvc得了

libuvc 安装

参考官方说明

  1. 安装libuvc sudo apt install ros-melodic-libuvc-camera,也可以下载源码自行编译
    注意:本文是下载源码自行编译的
  2. 查询相机的idVendoridProduct,打开终端,输入以下命令:
lsusb

下面是分别插拔相机后得到的信息

在这里插入图片描述
可以看到相机的位置信息是Bus 001 Device 002: ID 05a3:9422 ARC International

其中相机的idVendor0x05a3idProduct0x9422
3. 编写launch文件,新建uvc.launch ,复制以下代码,修改vendorproduct以及分辨率

    <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 替换为错误信息中的路径

开始标定

  1. 打印标定板,A4纸即可
    在这里插入图片描述

  2. 启动相机,输入以下命令

roslaunch libuvc_camera uvc.launch
  1. 启动标定程序,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"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值