Ubuntu20.04 ROS读取basler相机图像步骤。MATLAB2021b标定basler单目相机

本文档详细介绍了在Ubuntu 20.04上使用ROS Noetic配置Realtek RTL8156外置网卡连接的acA1920-25gc GigE相机,以及如何通过pylon SDK驱动读取图像。内容包括网卡驱动安装、相机与雷达同步、MATLAB 2021b进行相机标定的全过程,最后通过image_proc节点完成相机校准并能在RVIZ中查看彩色图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运行环境: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相机图像 ***********************************

1 准备工作

1.1 检查网卡

需要安装网卡驱动并打开巨型帧。

参考网址:Linux Ubuntu20.04安装RTL8156网卡驱动开启巨型帧_abanchao的博客-CSDN博客

1.2 检查通信

用pylon Viewer配置IP,保证能够正常查看图像。

参考网址:Windows10下pylon Viewer读取basler相机图像_abanchao的博客-CSDN博客

2 用SDK驱动读取图像

2.1 安装驱动

按照官网说明进行安装。

pylon_camera - ROS Wiki

参考链接:ubuntu18.04 ROS Basler相机详细步骤_贵在坚持,不忘初心的博客-CSDN博客_basler ubuntu

2.2 遇到的问题及解决方法

 rosdep update 时报错

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

但是,我按这个操作之后,并不能执行,不记得捣鼓过其他操作,下午来了发现可以了……

2.3使用方法

2.3.1 编译驱动程序

修改config的default.yaml文件中的image_encoding为bayer_gbrg8以输出彩色图像。

随后编译程序包。

catkin_make
source devel/setup.bash

2.3.2 运行程序

roslaunch pylon_camera pylon_camera_node.launch
#or
rosrun pylon_camera pylon_camera_node

2.3.3 查看图像

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

3 同时读取速腾激光雷达点云和相机图像

先运行雷达驱动包,再运行相机驱动包,并在RVIZ里订阅图像话题。

至此,已经能够获取图像了,但是还有一个问题:使用image_view和rqt等方式查看图片是彩色,但是在RVIZ里显示的是灰度图。原因是没有标定配准相机,标定工具有很多,比如matlab,autowar,这里选择matlab 2021b进行标定。

****************************** MATLAB 2021b 标定basler单目相机 ******************************

4 获取图像

4.1 制作棋盘格标定板

棋盘格有多种尺寸规格,选择A4大小的棋盘格可以直接在实验室打印机打印,较为方便。

棋盘格:8*6

单格尺寸:24mm

A4棋盘格文件,张正友标定法标定棋盘格-图像识别文档类资源-CSDN文库

4.2 拍摄图像

使用官方软件拍摄保存图片就很方便,20多张图片就行。

相机和棋盘格一个固定,一个移动拍摄。

Windows10下pylon Viewer读取basler相机图像_abanchao的博客-CSDN博客_pylon viewer使用

5 内参标定

5.1 打开标定程序

选择APP->图像处理和计算机视觉->Camera Calibration

5.2 添加图片

单击add image选择拍摄的图片。

5.3 配置标定设置

camera model:单目工业相机选择Standard

radial distortion:2/3代表去畸变参数的个数,最好选3,反正是电脑算。

compute:skew指的是图像扭曲参数,可以不选

5.4 计算标定参数

单击calibration后,界面右侧出现平均误差柱状图和相机与各标定板位置关系图。

发现某一张图片带来的误差较大时,可以单击条形,再从左侧图片列表右键删除并重新计算,使平均误差在0.5以下就可以。

5.5 导出标定参数

点击Export  camera calibration -> save session 会在matlab主界面显示标定计算结果。

camera intrinsics即相机内参。

 

 

6 编写标定文件

6.1 格式要求

主要有.ini和.yaml两种格式,具体内容可参考:camera_calibration_parsers - ROS Wiki

官方模板

  • .ini 格式
# 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
  • .yaml格式
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]

6.2 编写yaml文件

直接在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]

注意:

  • image_width和image_height分别是图像的宽和高,一定要填写正确。
  • camera_name相机名的匹配方法:看下一张图1处警告前括号内的名称,修改后没有该警告。

6.3 设置相机标定文件路径

把以上标定文件复制到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

7 校准相机

标定内参的文件有了,还需要用到 image_proc节点 根据参数进行校准。

7.1下载程序包

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

然后重新编译。

7.2 启动image_proc节点

在按照 2.3.2 启动相机程序后,新打开一个终端,输入以下命令:

ROS_NAMESPACE=pylon_camera_node rosrun image_proc image_proc

7.3 查看图像

选择图像校准后的节点 /pylon_camera_node/image_color/image 进行查看。

至此,对相机的标定校准工作完成,可以在RVIZ里查看彩色图像了,也可以通过保存节点的方式进行保存bag文件了。

感谢

传感器标定(1.单目相机的标定)_MendozaG的博客-CSDN博客_传感器标定

### FLIR 相机技术参数、使用说明及开发支持 #### 技术参数 FLIR Blackfly S 是一款基于 USB3.0 的工业相机,具有高分辨率和快速传输能力。其主要技术参数如下: - 支持多种传感器型号,覆盖黑白与彩色成像需求。 - 提供高达 78 fps 的帧率(具体取决于所选传感器)[^1]。 - 配备全局快门或卷帘快门选项,适用于不同的应用场景。 - 支持 GenICam 协议,允许灵活配置相机参数。 #### 使用说明 在 Ubuntu 20.04ROS 环境下使用 FLIR Blackfly S 工业相机时,需完成以下操作: ##### 安装依赖项 确保系统已安装必要的库文件和支持工具链。通过 `apt` 或源码编译的方式安装 Spinnaker SDK 及相关功能包。 ```bash sudo apt-get update sudo apt-get install libusb-1.0-0-dev ``` ##### 下载并安装 Spinnaker SDK Spinnaker 是 FLIR 提供的官方 SDK,用于控制相机及其参数设置。下载地址可通过官网获取,并按照文档指引完成安装。 ##### 修改 USB3.0 带宽限制 由于 USB3.0 接口可能存在带宽不足的情况,建议调整设备管理器中的带宽分配策略以优化性能[^3]。 ```bash echo 'options usbcore autosuspend=-1' | sudo tee -a /etc/modprobe.d/usbcore.conf ``` ##### 连接硬件 将 FLIR Blackfly S 插入主机的 USB3.0 接口中,确认灯亮表示成功连接。如果未检测到设备,则可能需要更新驱动程序或检查物理连线状态。 ##### 启动驱动与测试 加载 spinnaker_sdk_camera_driver 并验证是否能够捕获图像流。可以通过 RVIZ 查看实时画面效果。 ```python import rospy from sensor_msgs.msg import Image from cv_bridge import CvBridge, CvBridgeError def image_callback(data): try: bridge = CvBridge() cv_image = bridge.imgmsg_to_cv2(data, "bgr8") # 显示图像 cv2.imshow("Image window", cv_image) cv2.waitKey(1) # 注意等待时间不宜过长以免造成延迟 except CvBridgeError as e: print(e) rospy.init_node('image_listener', anonymous=True) rospy.Subscriber("/camera/image_raw", Image, image_callback) rospy.spin() ``` #### 开发支持 针对某些特定场景下的二次开发问题,例如无法正确获取相机参数的情况,可参考以下解决方案: 当尝试调用 Basler 相机 API 获取浮点型数据失败时,可能是因不同厂商间定义差异所致。此时应查阅对应手册找到确切字段名前缀(如 ADS),再据此修正代码逻辑实现兼容性处理[^2]。 另外,在实际部署过程中还需留意以下几点事项来保障稳定性: - **固定帧率**:推荐预先设定好目标速率而非启用动态模式以防波动过大影响体验质量; - **锁定关键属性值**:对于诸如增益水平、曝光补偿以及色彩校正等功能模块尽可能采用手动指定数值代替自动化机制从而减少外界干扰因素带来的不确定性风险; - **网络摄像头额外配置要求**:如果是 Ethernet 类型的产品则记得开启巨型帧支持并将双方 IP 地址规划至相同子网范围内以便顺利通信交互。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可见一班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值