ROS摄像头标定

ROS摄像头标定

  • 一、查看一下,笔记本自带的摄像头是否正常工作:
  • 二、 安装uvc-cam(笔记本自带摄像头3.0)
  • 三、ROS图像显示
  • 四、三种方式查看图像
  • 五、摄像头标定
    • 标定完成,大功告成!!!

一、查看一下,笔记本自带的摄像头是否正常工作:

1.虚拟机设置里面,更改usb;如果是USB2.0,就改为USB3.0,如果是USB3.0,就变为USB2.0;

ROS摄像头标定_第1张图片
2.查看虚拟机的摄像头是否开启;也就是USB是否连接:
暗的显示没连接,节接着点击这个摄像头,ROS摄像头标定_第2张图片
接着点击这个摄像头,选择连接,如图摄像头变绿色,连接成功

ROS摄像头标定_第3张图片
3.验证摄像头是否正常工作

cheese

二、 安装uvc-cam(笔记本自带摄像头3.0)

sudo apt-get install ros-kinetic-uvc-camera

ROS摄像头标定_第4张图片

三、ROS图像显示

进入ROS环境(新建终端)

roscore

运行uvc_camera节点(新终端)

rosrun uvc_camera uvc_camera_node

查看话题消息(第三个终端)

rostopic list

以下话题消息显示正在发布相机信息(/camera_info)和图像信息(/image_raw)
ROS摄像头标定_第5张图片
打印出相机信息

rostopic echo /camera_info

四、三种方式查看图像

  • 方法一:使用image_view节点查看图像
    ROS摄像头标定_第6张图片
  • 方法二:用rqt_image_view节点检查
 rqt_image_view image:=/image_raw

ROS摄像头标定_第7张图片

  • 方法三:用Rviz查看

打开rviz

rviz

按下图操作
ROS摄像头标定_第8张图片
点击image Topic,在点击2有下路况选项,选择/image_raw
ROS摄像头标定_第9张图片
结果:
ROS摄像头标定_第10张图片

五、摄像头标定

安装相机校准功能包

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

运行roscore

roscore

并在另一个终端窗口中运行uvc_camera_node节点

rosrun uvc_camera uvc_camera_node

打印相机信息

rostopic echo /camera_info

ROS摄像头标定_第11张图片

准备棋盘 摄像机的校准是以一个由黑白方块组成的棋盘为基准进行的
ROS摄像头标定_第12张图片

进行校正:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/image_raw camera:=/camera

如果出现以下错误:
ROS摄像头标定_第13张图片重新输入下面的代码:

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.024 image:=/image_raw camera:=/camera --no-service-check

ROS摄像头标定_第14张图片
用相机对准棋盘,校准将立即 开始。在GUI屏幕的右侧,可以看到一个标有X、Y、Size和Skew的条形控件。这是校准 的进展状态,都以绿色填满意味着校准完成。在校准过程中需要将棋盘对着相机朝着左/ 右/上/下/前/后移动,还需要倾斜棋盘。

ROS摄像头标定_第15张图片

校准所需的所有图像都记录下来之后,CALIBRATE按钮会被激活。 点击这个按钮后会进行实际的校准计算,这需要大约1到5分钟。

ROS摄像头标定_第16张图片
计算完成后,点击SAVE 按钮保存校准信息。
ROS摄像头标定_第17张图片
打开另一个新的终端,创建相机参数文件

下面,我们来创建一个包含相机校准参数的相机参数文件(camera.yaml)。如下例所示,解压缩calibrationdata.tar.gz文件以查看图像文件(*.png)和记录了校准中使用的校准参数的ost.txt文件。

 cd /tmp
 tar -xvzf calibrationdata.tar.gz

ROS摄像头标定_第18张图片
接下来,将ost.txt文件改名为ost.ini,并使用camera_calibration_parsers功能包
的convert节点创建相机参数文件(camera.yaml)。创建完成后,将其保存在~/.ros/camera_info/目录中,则ROS中使用的相机相关功能包会引用此信息。

mv ost.txt ost.ini
rosrun camera_calibration_parsers convert ost.ini camera.yaml 
mkdir ~/.ros/camera_info
mv camera.yaml ~/.ros/camera_info/

ROS摄像头标定_第19张图片
最后再次运行uvc_camera_node节点;这一次,确保 目前没有出现关于校准文件的警告。

rosrun uvc_camera uvc_camera_node

ROS摄像头标定_第20张图片
查看/camera_info话题,则可以看到D、K、R和P参数已被填充:

rostopic echo /camera_info 

ROS摄像头标定_第21张图片

标定完成,大功告成!!!

你可能感兴趣的:(ROS学习)