ROS——深度图转换伪面阵激光——depthimage_to_laserscan 功能包

317 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第34天,点击查看活动详情

depthimage_to_laserscan

这个ROS功能包的wiki

功能

depthimage_to_laserscan 使一张深度图像 生成一个2D的激光雷达扫描图像 这个功能包使用的是 lazy 订阅,就是说只有有订阅者订阅 /scan的时候才订阅/image或者/camera_info

订阅的信息

1、/camera/depth/image_raw sensor_msgs/Image 官网定义

这个功能包可以处理的图片的 图片像素变量类型是 float 和uint16 uint16应该会更快 /camera/depth/image_raw 里的data 是uint8

2、camera_info 通常不需要remampped camera_info这个变量 , 默认为 和image一个namespace

发布的消息

scan sensor_msgs/LaserScan 官网定义

github网址

depthimage_to_laserscan github网址 这个版本里没有kinetic
这个软件的wiki上kinetic 的指示说下 indigo-devel版本 ,不知道会有什么问题

代码下载

git clone -b indigo-devel https://github.com/ros-perception/depthimage_to_laserscan.git

再在工作空间编译 没问题就可以了

我没有遇到依赖项什么的问题

简单运行

首先把depth carema 的link名称 改为camera_depth_frame 功能包默认是这个值 可以修改功能包也 ,简单的话改自己的link名称

执行

rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw

结果

原本没有激光数据的就直接有了

在rviz中看 激光还是一条线 ,和面阵激光有差距

功能包里有 在这里插入图片描述 这个参数 ,应该可以设置希望输出的 激光的行数 ,即面阵激光

更改后在rivz中显示没有变化。

怀疑的原因是rviz中的激光显示,不会区分 是 几乘几的 激光数据 ,都是一个向量。

待完成内容

  • 是否真正转化为了面阵激光,需要 研究它的源码 用mark 显示在rviz中 再看

源码分析

这篇博客进行了核心代码的分析