安装

sudo apt-get install ros-melodic-depthimage-to-laserscan

depthimage_to_laserscan 功能包核心:
订阅的Topic
image(sensor_msgs/Image)
输入图像信息。
camera_info(sensor_msgs/CameraInfo)
关联图像的相机信息。通常不需要重新映射,因为camera_info将从与image相同的命名空间中进行订阅。
发布的Topic
scan(sensor_msgs/LaserScan)
发布转换成的激光雷达类型数据。
一般需要设置的是:
scan_height(int, default: 1 pixel)
设置用于生成激光雷达信息的象素行数。
scan_time(double, default: 1/30.0Hz (0.033s))
两次扫描的时间间隔。
range_min(double, default: 0.45m)
返回的最小范围。结合range_max使用,只会获取 range_min 与 range_max 之间的数据。
range_max(double, default: 10.0m)
返回的最大范围。结合range_min使用,只会获取 range_min 与 range_max 之间的数据。
output_frame_id(str, default: camera_depth_frame)
激光信息的ID,需要与深度相机的坐标系一致。
################################################################
根据rostopic list中深度相机的深度图像话题修改image和camera_info的内容

为了与2D激光雷达输出的默认激光话题/scan区分,将输出的伪激光话题remap重映射为depth_scan

核心代码

取深度图像上每一列最小值依次保存到雷达ranges[]数组中,这样理论上,我们将会获kinect前方纵向上最近的障碍物距离,ranges[]数组体现了横向每个障碍点到kinect距离。但是实际,纵向上扫面的高度极为苛刻,并不能把地面到到0.6米的高度都扫一遍,因为什么呢,请看后面总结。先看核心代码,思路:先行扫描将数据存到ranges[]中,然后再高度扫面,比较下一行与原来数据ranges[],小数据替换原来ranges[]中的大数据,这样就将高度给压缩了。

在其中的convert函數中

void convert(const sensor_msgs::ImageConstPtr& depth_msg, const image_geometry::PinholeCameraModel& cam_model,
const sensor_msgs::LaserScanPtr& scan_msg, const int& scan_height)
計算到圖像中心的偏移量是通過

const int offset = (int)(center_y - scan_height/2);
這裡修改為:

const int offset = 0;

  if (!_sdf->HasElement("pointCloudCutoff"))this->point_cloud_cutoff_ = 0.4;elsethis->point_cloud_cutoff_ = _sdf->GetElement("pointCloudCutoff")->Get<double>();if (!_sdf->HasElement("pointCloudCutoffMax"))this->point_cloud_cutoff_max_ = 5.0;else

限制最远5米

<launch><node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan"><remap from="image" to="/camera/depth/image_raw" /><param name="output_frame_id" value="camera_link"  /></node>
</launch>

参考:https://www.itdaan.com/blog/2017/09/14/e707ed6398575abe92857ccb9d01f078.html 核心代码算法讲解
https://blog.csdn.net/YiYeZhiNian/article/details/106084250 代码架构简析

depthimage-to-laserscan相关推荐

  1. pointcloud 转ptr_ROS学习笔记(三)sensor_msgs::LaserScan转pcl::PointCloud

    一.前言 首先,为什么要进行数据的转换?举个例子,在ROS中,我们通过订阅Kinect的RGB图像topic就可以获取到图像数据,但当我们要对这些图像进行处理的时候,我们需要用到专门的图像处理库,比如 ...

  2. Kinect V1读取图像数据(For Windows)

    Kinect V1读取图像数据(For Windows) 这篇博客 Kinect V1介绍 数据读取的基本流程 运行代码和注释 结尾 这篇博客  刚好有一台现成的Kinect V1相机,所以就拿过来学 ...

  3. PCL:点云特征描述子3D_object_recognition_(descriptors)

    PCL官网:https://pointclouds.org/ 翻译自该网站:http://robotica.unileon.es/index.php/PCL/OpenNI_tutorial_4:_3D ...

  4. 设备连接:Ubuntu16.04 ROS中连接Hokuyo激光雷达UTM-30LX-EW

    这次连接的设备如下:(以下是一步步的设备连接到采集数据的介绍,没法再详细了吧)      -----第一步:连接硬件---- 首先雷达需要的供电电压是12V,PC需要的供电电压是24V.所以本次连接是 ...

  5. Gmapping 乱七八糟

    笔记和总结: void SlamGMapping::startLiveSlam()主要是订阅话题,主要有 scan_filter_-> registerCallback(boost::bind( ...

  6. 【SLAM建图和导航仿真实例】(一)- 模型构建

    引言 在这个-SLAM建图和导航仿真实例-项目中,主要分为三个部分,分别是 (一)模型构建 (二)根据已知地图进行定位和导航 (三)使用RTAB-MAP进行建图和导航 该项目的slam_bot已经上传 ...

  7. [置顶] ros的navigation之———gmapping应用详解(in ros)

    gmapping是一个比较完善的地图构建开源包,使用激光和里程计的数据来生成二维地图.  博主最近也一直在使用gmapping,在前期着实被它卡了好久,因为好多东西不明白(原谅我是ros小白).  现 ...

  8. 牲畜体表信息的三维重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 引导语:本文为"3D视觉创新应用(三维重建)竞赛"作品集系列之一,该作品由来自中国 ...

  9. ekf pose使用方法 ros_ubuntu16.04下ROS操作系统学习笔记(二)

    做SLAM的硬件要求(不一定是必须的,看包和库的依赖): (1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度. (2):需要激光雷达.深度摄像头等测距设备,可以获取环境深度信息 ...

  10. PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)

    从PCL 1.0开始,PCL(三维点云处理库Point Cloud Library)提供了一个通用采集接口,这样可以方便地连接到不同的设备及其驱动.文件格式和其他数据源.PCL集成的第一个数据获取驱动 ...

最新文章

  1. 使用VS插件在VS2012/2013上编辑和调试Quick-Cocos2d-x的Lua代码
  2. r型聚类分析怎么做_营销型网站怎么做?
  3. select * from ( union ) ')' 附近有语法错误。
  4. MySQL5.7升级到8.0 之后,配合ubantu18.04遇到的常规问题以及非常规问题的解决方案
  5. python位运算符_NumPy按位运算符解析和实例详解
  6. WinForm 修改App.config不起作用(但是调试没有异常)
  7. Python快速计算Fibonacci数列中第n项的方法
  8. ios10发邮件服务器拒绝,IOS10用户拒绝网络权限后,如何引导开启?
  9. Git报错解决:fatal: unable to access ‘https://github.com/...‘: OpenSSL SSL_read:..., errno 10054
  10. c语言八数码A星算法代码解析,八数码问题c语言a星算法详细实验报告含代码解析...
  11. python各种库下载地址:
  12. CCS(Code Composer Studio) 的下载、安装和导入工程
  13. 手艺人舍bpftrace而取systemtap的代价和思考
  14. Sybase数据库按条件导出数据文件
  15. ubuntu16.04无法调节屏幕亮度
  16. 去掉鼠标右键文件时的“百度一下这个文件”菜单命令
  17. 日语的汉(训读)字音读音便规则
  18. “华为杯”第十七届中国研究生 数学建模竞赛-【华为杯】D题:无人机集群协同对抗(附优秀论文及python代码实现)
  19. K100多功能嵌入吞吐式电动发卡读写一体机|读卡器技术选型问答
  20. LWP(Library for WWW in Perl)的基本使用

热门文章

  1. Linux:库函数:libc: glibc
  2. 我的世界服务器自定义ui,自定义主菜单CustomMainMenu mod教程
  3. 咪唑型离子液体修饰二氧化硅改性PVC薄膜|离子液体修饰碳纳米管(CNTs-ILE)化学试剂
  4. 使学习效率提高5倍的20个起始步骤
  5. MySQL查询优化实例
  6. Python 实现 Swagger yaml 格式 api 文档合并
  7. spark+mongodb大数据框架搭建
  8. C++设计模式之状态模式(state)(行为型)
  9. pbcms 文章新增 修改 实现自动百度推送
  10. Hilbert曲线介绍以及代码实现