运行环境:Ubuntu20.04(64-Bit)
ROS版本:Noetic
网卡型号:Realtek RTL 8156外置网卡
相机型号:acA 1920-25gc (GigE接口)
驱动版本:pylon_6.3.0
1 准备工作
1.1 检查网卡
1.2 检查通信
2 用SDK驱动读取图像
2.1 安装驱动
2.2 遇到的问题及解决方法
2.3使用方法
2.3.1 编译驱动程序
2.3.2 运行程序
2.3.3 查看图像
3 同时读取速腾激光雷达点云和相机图像
4 获取图像
4.1 制作棋盘格标定板
4.2 拍摄图像
5 内参标定
5.1 打开标定程序
5.2 添加图片
5.3 配置标定设置
5.4 计算标定参数
5.5 导出标定参数
6 编写标定文件
6.1 格式要求
6.2 编写yaml文件
6.3 设置相机标定文件路径
7 校准相机
7.1下载程序包
7.2 启动image_proc节点
7.3 查看图像
****************************** ROS读取basler相机图像 ***********************************
需要安装网卡驱动并打开巨型帧。
参考网址:Linux Ubuntu20.04安装RTL8156网卡驱动开启巨型帧_abanchao的博客-CSDN博客
用pylon Viewer配置IP,保证能够正常查看图像。
参考网址:Windows10下pylon Viewer读取basler相机图像_abanchao的博客-CSDN博客
按照官网说明进行安装。
pylon_camera - ROS Wiki
参考链接:ubuntu18.04 ROS Basler相机详细步骤_贵在坚持,不忘初心的博客-CSDN博客_basler ubuntu
1、更改google域名服务器
sudo gedit /etc/resolv.conf
2、将原有的nameserver这一行注释,并添加以下两行:
nameserver 8.8.8.8
nameserver 8.8.4.4
3、保存,退出,执行
sudo apt-get update
rosdep update
但是,我按这个操作之后,并不能执行,不记得捣鼓过其他操作,下午来了发现可以了……
修改config的default.yaml文件中的image_encoding为bayer_gbrg8以输出彩色图像。
随后编译程序包。
catkin_make
source devel/setup.bash
roslaunch pylon_camera pylon_camera_node.launch
#or
rosrun pylon_camera pylon_camera_node
2.3.3.1 直接订阅节点信息
rosrun image_view image_view image:=/pylon_camera_node/image_raw
修改曝光时间可以调整照片亮度,见下下张图。
2.3.3.2 RVIZ订阅查看
roscore
rosrun rviz rviz
2.3.3.3 使用rqt工具查看
rqt_image_view
先运行雷达驱动包,再运行相机驱动包,并在RVIZ里订阅图像话题。
至此,已经能够获取图像了,但是还有一个问题:使用image_view和rqt等方式查看图片是彩色,但是在RVIZ里显示的是灰度图。原因是没有标定配准相机,标定工具有很多,比如matlab,autowar,这里选择matlab 2021b进行标定。
****************************** MATLAB 2021b 标定basler单目相机 ******************************
棋盘格有多种尺寸规格,选择A4大小的棋盘格可以直接在实验室打印机打印,较为方便。
棋盘格:8*6
单格尺寸:24mm
A4棋盘格文件,张正友标定法标定棋盘格-图像识别文档类资源-CSDN文库
使用官方软件拍摄保存图片就很方便,20多张图片就行。
相机和棋盘格一个固定,一个移动拍摄。
Windows10下pylon Viewer读取basler相机图像_abanchao的博客-CSDN博客_pylon viewer使用
选择APP->图像处理和计算机视觉->Camera Calibration
单击add image选择拍摄的图片。
camera model:单目工业相机选择Standard
radial distortion:2/3代表去畸变参数的个数,最好选3,反正是电脑算。
compute:skew指的是图像扭曲参数,可以不选
单击calibration后,界面右侧出现平均误差柱状图和相机与各标定板位置关系图。
发现某一张图片带来的误差较大时,可以单击条形,再从左侧图片列表右键删除并重新计算,使平均误差在0.5以下就可以。
点击Export camera calibration -> save session 会在matlab主界面显示标定计算结果。
camera intrinsics即相机内参。
主要有.ini和.yaml两种格式,具体内容可参考:camera_calibration_parsers - ROS Wiki
官方模板
# Prosilica camera intrinsics
[image]
width
2448
height
2050
[prosilica]
camera matrix
4827.93789 0.00000 1223.50000
0.00000 4835.62362 1024.50000
0.00000 0.00000 1.00000
distortion
-0.41527 0.31874 -0.00197 0.00071 0.00000
rectification
1.00000 0.00000 0.00000
0.00000 1.00000 0.00000
0.00000 0.00000 1.00000
projection
4827.93789 0.00000 1223.50000 0.00000
0.00000 4835.62362 1024.50000 0.00000
0.00000 0.00000 1.00000 0.00000
image_width: 2448
image_height: 2050
camera_name: prosilica
camera_matrix:
rows: 3
cols: 3
data: [4827.94, 0, 1223.5, 0, 4835.62, 1024.5, 0, 0, 1]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [-0.41527, 0.31874, -0.00197, 0.00071, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [4827.94, 0, 1223.5, 0, 0, 4835.62, 1024.5, 0, 0, 0, 1, 0]
直接在windows系统下新建文件,编写好后复制到ubuntu系统下,因为matlab就在windows系统。
image_width: 1920
image_height: 1080
camera_name: camera
camera_matrix:
rows: 3
cols: 3
data: [1652.202421, 0.00000, 0.00000,0.00000, 1648.337163, 0.00000, 948.888962, 605.836583 ,1.00000]
distortion_model: plumb_bob
distortion_coefficients:
rows: 1
cols: 5
data: [-0.239836474995421, 0.167935274313871, -0.0934123092297426, 0, 0]
rectification_matrix:
rows: 3
cols: 3
data: [1, 0, 0, 0, 1, 0, 0, 0, 1]
projection_matrix:
rows: 3
cols: 4
data: [1652.202421, 0.00000, 0.00000, 0.00000, 1648.337163, 0.00000, 651.074403, 0.00000, 948.888962, 605.836583 ,1.00000, 0.00000]
注意:
把以上标定文件复制到ubuntu系统下,最好放置到相机对应的工作空间下,其他位置也行,因为需要设置绝对路径。
修改相机config.yaml文件中的 camera_info_url 项,按照以下格式进行书写。
file:///full/path/to/local/file.yaml
file:///full/path/to/videre/file.ini
package://camera_info_manager/tests/test_calibration.yaml
package://ros_package_name/calibrations/camera3.yaml
标定内参的文件有了,还需要用到 image_proc节点 根据参数进行校准。
GitHub - ros-perception/image_pipeline: An image processing pipeline for ROS.
把包里的image_proc文件夹复制到相机的工作空间的/src文件夹下,包里的camera_calibration也是一个内参标定的工具。
重新编译时,如果报错"Could NOT find nodelet_topic_tools",则是缺少了nodelet_topic_tools功能包,可以输入以下命令查看所有功能包进行确认。
rospack list
如果没有,则输入以下命令进行安装:
sudo apt-get install ros-noetic-nodelet-topic-tools
然后重新编译。
在按照 2.3.2 启动相机程序后,新打开一个终端,输入以下命令:
ROS_NAMESPACE=pylon_camera_node rosrun image_proc image_proc
选择图像校准后的节点 /pylon_camera_node/image_color/image 进行查看。
至此,对相机的标定校准工作完成,可以在RVIZ里查看彩色图像了,也可以通过保存节点的方式进行保存bag文件了。
感谢
传感器标定(1.单目相机的标定)_MendozaG的博客-CSDN博客_传感器标定