自学内容网 自学内容网

ROS机器人小车建模仿真与SLAM(5)

目录

一、ROS中使用摄像头

1.1 验证摄像头设备可用

1.2 安装cheese

1.3 测试

二、获取摄像头驱动包

2.1 usb_cam

2.1.1 rosrun方式运行

2.1.2 roslaunch方式运行

三、摄像头标定(camera calibration)

3.2 标定前准备

3.2.1 标定板

3.2.2 摄像头调焦

3.3 标定摄像头

 参考


一 . 参考网上资料,在ROS中完成一个机器小车的模型创建,传感器配置,仿真环境的设置,并控制机器小车进行运动。

参考:

  【Autolabor初级教程】ROS机器人入门  【Autolabor初级教程】ROS机器人入门_哔哩哔哩_bilibili

 Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

Scout mini 仿真指南  松灵学院 | Scout mini 仿真指南_松灵开发社区-CSDN博客

二.  参考课件资料,在ROS中利用ROS工具完成你手机广角津贴(畸变较为严重)的标定,写出详细过程和输出结果。

三. 在ROS下,下载编译orbslam2代码,并在kitti数据集的一个序列图像中进行实验。

一、ROS中使用摄像头

在ROS中使用摄像头的前提是,摄像头在Linux系统下是可识别的,通常来说UVC协议的USB摄像头都可以正常使用,大部分笔记本电脑自带的摄像头都是UVC协议的,所以也是可以直接使用的。
对于一些具有CSI或者MIPI接口的嵌入式板卡,在接入对应接口的摄像头后可能也可以使用,但不是绝对的。
例如树莓派接入CSI摄像头后启用bcm2835-v4l2驱动可以正常使用,但是JetsonNano使用CSI摄像头就不可以通过本文的方法驱动。 

1.1 验证摄像头设备可用

使用命令 ls /dev/ 检查当前设备列表
如果设备列表中有video*设备,则摄像头设备在当前系统中有被正确的识别。

如果使用虚拟机,需要将摄像头设备连接到虚拟机中。

博主使用的是Ubuntu20.04的版本,点击 虚拟机->可移动设备->,根据你的设备进行选择

检查有video设备后可以使用Ubuntu下的拍照软件cheese进一步验证

1.2 安装cheese

sudo apt install cheese

1.3 测试

输入 cheese 命令成功打开摄像头,拍照软件能显示摄像头画面就基本稳了

二、获取摄像头驱动包

ROS下摄像头的驱动包有多款,这里以常用的两款为例:

2.1 usb_cam

usb_cam可以通过apt方式直接安装二进制包,如果使用其他版本的ROS,自行替换命令中的noetic字段

sudo apt install ros-noetic-usb-cam
2.1.1 rosrun方式运行

先启动roscore,然后运行驱动节点usb_cam_node

roscore
rosrun usb_cam usb_cam_node 

启动节点后终端中可能会报如下的警告,可以忽略,实测不影响使用 

摄像头启动后启用rqt工具查看图像 

rqt_image_view

 选择正确的话题即可预览到摄像头的画面

2.1.2 roslaunch方式运行

usb_cam包中提供了一个launch文件例程usb_cam-test.launch

roslaunch usb_cam usb_cam-test.launch

在这个launch文件中除了启动usb_cam_node节点外还会包含一个image_view用于预览摄像头画面

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

三、摄像头标定(camera calibration)

3.1 为什么要标定
普通相机成像误差的主要来源有两部分,第一是相机感光元件制造产生的误差,比如成
像单元不是正方形、歪斜等;第二是镜头制造和安装产生的误差,镜头一般存在非线性的径
向畸变。
在对相机成像和三维空间中位置关系对应比较严格的场合(例如尺寸测量、视觉 SLAM等)就需要准确的像素和物体尺寸换算参数,这参数必须通过实验与计算才能得到,求解参数的过程就称之为相机标定。

 

3.2 标定前准备

3.2.1 标定板

在执行摄像头标定前,需要先准备一块标定板。
标定板有两种获得方法,第一种是采购成品的标定板,A4纸大小的标定板通常价格在300~400的样子。

如果不想采购,可以使用打印机将下面的文件按照1:1打印在A4纸上,然后贴在一块纯平的版上,例如亚克力板。

打印的标定板缺点在于,第一打印机的精度有限,边缘可能会产生模糊,另外就是在粘贴时很难做到极高的平整度,这两项都会对标定结果产生一定的影响,但是优点时便宜易得。

3.2.2 摄像头调焦

标定只针对手动对焦的相机,自动对焦的相机由于焦距变化,难以形成固定的标定参数。
相机在标定前,需要调整好焦距(拧镜头),使成像清晰,并将当前焦距固定住,防止焦距产生变化。

3.3 标定摄像头

标定需要用到camera_calibration功能包,可以通过apt方式安装。

sudo apt install ros-noetic-camera-calibration

 安装完成后启动相机

roscore
rosrun usb_cam usb_cam_node

拿着标定板放在相机视野内,标定板上出现彩色线条则为有效图像,反之无效,需要调整标定板位置。
分别在左右移动(X),直到标定界面上X下方的精度条为绿色,然后依次在上下(Y),远近(Size),倾斜(Skew)方向移动,移动过程尽量缓慢,避免大幅度的移动使相机成像产生拖影。持续移动直到所有的进度条都为绿色。

点击”CALIBRATE”按钮之后等待一会,标定就完成了,如下图所示。

 

可以看到窗口中的”SAVE”和”COMMIT”按钮都变绿了。并且终端中也输出了标定好的相关参数。我们点击”SAVE”按钮,稍微等待几秒,即可保存标定好的结果。标定结果默认保存在/tmp/calibrationdata.tar.gz,我们手动拷贝出来即可。内容包含参数文件和标定用到的影像,如下图所示。

另外说一下”COMMIT”按钮,一般情况下不太用的到,顾名思义,它是将标定好的结果“提交”。可以理解为把参数发布,给其它的Topic用于校正。

最后再简单说一下Ubuntu下tmp文件夹的问题。顾名思义,tmp文件夹是用来保存临时文件的地方,而这个临时文件多长时间被清空,就是个问题了。对于Ubuntu,系统会在每次启动的时候自动清理临时文件夹。因此,在标定得到结果以后,一定要记得在关机之前把结果拷贝出来,不然下次开机的时候就被清空了。

 参考

Ubuntu20.04在ROS中使用摄像头标定-CSDN博客


原文地址:https://blog.csdn.net/qq_64235654/article/details/138248269

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!