ros订阅相机深度信息_ROS系统中使用双目摄像头得到稠密点云

本文介绍了在ROS系统中如何利用双目摄像头获取深度信息,特别是在室外环境中。通过数据预处理,将双目摄像头的图像拆分并校准,然后使用elas包生成相对稠密的点云数据。点云生成后,若出现噪声问题,可能源于校准不足或摄像头稳定性差,需要重新校准或更换设备。
摘要由CSDN通过智能技术生成

66093bfcd4913c65caf9333ab126ff9b.png

在室内机器人一般使用基于主动红外测距原理的RGB-D相机(比如kinect)获取深度图像,RGB-D相机由于其测量范围和原理导致它主要适用于室内环境中。在室外环境中由于环境光线很强,主动红外光容易受到太阳等光线强烈干扰,因此通常我们不使用主动红外光而是直接使用双目相机计算深度图。

双目摄像头是应用非常广泛的摄像头。目前看到有两种,其中一种是插到计算机上以后会出现两个摄像头,程序分别从两个摄像头读取图像数据;另外一种是插到计算机以后只出现一个摄像头,两个镜头的数据被拼接到同一个图像上同时被读取出来。考虑到两个镜头的同步问题,目前买到的双目摄像头通常是后者。

数据预处理

ROS系统中双目摄像头感知框架是分别读取左右两个镜头数据,遗憾的是目前官方没有为上面讲到的第二种摄像头提供一个通用的包。可以使用gitee中的这个包来讲拼接图像拆开:

傻傻的吹/stereo_camera​gitee.com

这个包订阅/imageraw的图像将其拆分/left/imageraw和/right/image_raw,并且读取摄像头矫正标定数据camerainfo发送给ROS的后端。

摄像头的校准标定数据根据每个摄像头基线宽度、光学镜头、焦距等等决定,可以自己通过下名命令得到

rosrun camera_calibration cameracalibrator.py --approximate 0.1 --size 8x6 --square 0.108 right:=/my/right/image_raw left:=/my/left/image_raw right_camera:=/my/right left_camera:=/my/left

其中size指的是校准棋盘格格点数量,--square指的是每个棋盘的边长。校准成功以后,数据会被自动写到系统配置文件中。

双目相机校准以后,生成生成两个相机的校准矩阵。其中左摄像头的校准聚准与双目相机基本相同,而右摄像头的矩阵中就包含了第二个摄像头相对与第一个摄像头的平移与旋转参数。这些参数在后续深度估计时就会用得到

点云生成

ROS系统的点云生成框架数据很稀疏,推荐使用elas包生成相对稠密的点云数据。elas包可以从gitee下载。

如果我们的工作空间是catkin,那么我们进入到src目录,从github上把elas-ros拉下来

cd catkin/src
git clone https://gitee.com/rivercloud/elas-ros.git

拉取完成代码后,进入到catkin目录执行

catkin_make

编译成功后,可以得到elas_ros包。我们可以通过编写launch文件,加入相关节点来启动它

<?xml  version="1.0" encoding="UTF-8"?>
<launch>
 <include file="$(find elas_ros)/launch/elas.launch" >
    <arg name="stereo" value="my" />
    <arg name="elas_ns" value="elas"  />
 </include>

<node pkg="test_package" type="camera.py" name="splitter"/>
<node pkg="tf" type="static_transform_publisher" name="camera_tf" args="0 0 0 0 0 0 1 base_link head_camera 100" />
<node pkg="tf" type="static_transform_publisher" name="base_tf" args="0 0 0 0 0 0 1 map base_link 100" />
</launch>

故障诊断

elas输出的点云数据发布在point_cloud话题,同时还输出了视差图disparity,可以通过rviz的image类型来查看视差图。

如果视差图雪花很多,点云数据就会大量的噪声甚至没法输出准确点云,通常就是校准没做好,或者是摄像头不够稳定。所以要么重新校准,要么换个摄像头

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值