0%

机器人操作系统 ROS_4_机器人视觉

usb_cam 功能包及 ROS 中的图像数据类型

usb_cam 功能包

usb_cam 是针对 V4L 协议 USB 摄像头的 ROS 驱动包,核心及诶但是 usb_cam_node

下载:
sudo apt-get install ros-kinetic-usb-cam
运行:
roslaunch usb_cam usb_cam-test.launch
也可以运行:
roscore
rosrun usb_cam usb_cam_node
rqt_image_view

rqt 是一个基于 qt 开发的可视化工具,拥有可扩展性好,灵活以用,跨平台等特点,主要作用和 RViz 一致都是可视化,但是和 RViz 相比,rqt 要高级一个层次

usb_cam 中的节点,话题和参数

ROS 中的图像数据类型

查看二维图像
rostopic info /usb_cam/image_raw
rosmsg show sensor_msgs/Image

ROS 也设计了压缩图像消息类型 (JEPG, PNG, BMP)
rosmsg show sensor_msgs/CompressedImage

除了普通 USB 摄像头,很多场景下会使用 RGB-D 摄像头来获取更丰富的环境细腻 (Kinect, 微软 XBOX360 体感周边外设)

查看三维点云数据:
rosmsg show sensor_msgs/PointCloud2

除此之外还有激光雷达:
rosmsg show sensor_msgs/LaserScan

摄像头标定

摄像头这种精密仪器对光学器件的要求较高,由于摄像头内部与外部的一些原因,生成的图像往往会发生畸变
为了避免误差,需要针对摄像头的参数进行标定

ROSwiki 相机矫正的官方文档

  1. 相机标定第一步,准备一张标定板,打印出来
    标定板为 8x6, 我用 A4 纸打印出来为,用直尺量 square 边长为 24.5mm, 即 0.0245m, 作为标定输入参数
  2. roslaunch usb_cam usb_cam-test.launch
    运行摄像头
  3. 下载摄像头标定功能包 camera_calibration
    sudo apt-get install ros-kinect-camera-calibration
  4. 运行矫正窗口
    rosrun camera_calibration cameracalibrator.py –size 8x6 –square 0.0245 image:=/usb_cam/image_raw camera:=/usb_cam
  5. 采集样本数据
    没有标定成功前,按钮均为灰色
    x: 左右移动
    y: 上下移动
    size: 前后移动
    skew: 倾斜转动
    不断移动标定靶,到按钮变色
    CALIBRATE 按钮:计算标定参数
    SAVE: 保存到显示的默认路径
    COMMIT: 提交并退出程序

  1. 解压 (tar xzf 标定生成的文件.tar.gz) 得到 yaml 格式的配置文件
  2. 标定摄像头生成的配置文件是 yaml 格式的,可以在启动摄像头的 launch 文件中进行加载

摄像头人脸与物体识别

ROS 为开发者提供了 OpenCV 接口的功能包: cv_bridge
开发者通过该功能包将 ROS 中的图像数据转成 OpenCV 格式的图像,并调用 OpenCV 库进行各种图像处理
或者将 OpenCV 处理后的数据转化成 ROS 图像,并通过话题发布

Thank you for your reward !