ROS摄像头标定

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

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

在这里插入图片描述
2.查看虚拟机的摄像头是否开启;也就是USB是否连接:
暗的显示没连接,节接着点击这个摄像头,在这里插入图片描述
接着点击这个摄像头,选择连接,如图摄像头变绿色,连接成功

在这里插入图片描述
3.验证摄像头是否正常工作

cheese

在这里插入图片描述

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

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

在这里插入图片描述

三、ROS图像显示

进入ROS环境(新建终端)

roscore

运行uvc_camera节点(新终端)

rosrun uvc_camera uvc_camera_node

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

rostopic list

以下话题消息显示正在发布相机信息(/camera_info)和图像信息(/image_raw)
在这里插入图片描述
打印出相机信息

rostopic echo /camera_info

四、三种方式查看图像

  • 方法一:使用image_view节点查看图像
    在这里插入图片描述
  • 方法二:用rqt_image_view节点检查
 rqt_image_view image:=/image_raw

在这里插入图片描述

  • 方法三:用Rviz查看

打开rviz

rviz

按下图操作
在这里插入图片描述
点击image Topic,在点击2有下路况选项,选择/image_raw
在这里插入图片描述
结果:
在这里插入图片描述

五、摄像头标定

安装相机校准功能包

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

运行roscore

roscore

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

rosrun uvc_camera uvc_camera_node

打印相机信息

rostopic echo /camera_info

在这里插入图片描述

准备棋盘 摄像机的校准是以一个由黑白方块组成的棋盘为基准进行的
在这里插入图片描述

进行校正:

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

如果出现以下错误:
在这里插入图片描述重新输入下面的代码:

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

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

在这里插入图片描述

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

在这里插入图片描述
计算完成后,点击SAVE 按钮保存校准信息。
在这里插入图片描述
打开另一个新的终端,创建相机参数文件

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

 cd /tmp
 tar -xvzf calibrationdata.tar.gz

在这里插入图片描述
接下来,将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/

在这里插入图片描述
最后再次运行uvc_camera_node节点;这一次,确保 目前没有出现关于校准文件的警告。

rosrun uvc_camera uvc_camera_node

在这里插入图片描述
查看/camera_info话题,则可以看到D、K、R和P参数已被填充:

rostopic echo /camera_info 

在这里插入图片描述

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

发布了13 篇原创文章 · 获赞 33 · 访问量 362

猜你喜欢

转载自blog.csdn.net/qq_42585108/article/details/104957092