depthimage-to-laserscan

安装

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;
  else
    this->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 代码架构简析

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: depthimage_to_laserscan是ROS中的一个软件包,用于将深度图像转换为激光扫描数据。安装该软件包的步骤如下: 1. 打开终端,进入ROS工作空间的src目录: cd ~/catkin_ws/src 2. 使用git命令从GitHub上下载depthimage_to_laserscan软件包: git clone https://github.com/ros-perception/depthimage_to_laserscan.git 3. 返回ROS工作空间的根目录,使用catkin_make命令编译软件包: cd ~/catkin_ws catkin_make 4. 如果编译成功,就可以使用rosrun命令启动depthimage_to_laserscan节点: rosrun depthimage_to_laserscan depthimage_to_laserscan 5. 在启动节点之前,需要确保已经有深度图像的话题发布。可以使用以下命令启动深度图像的发布节点: rosrun openni2_camera openni2_camera 或 roslaunch freenect_launch freenect.launch 6. 启动节点后,可以使用rviz等工具查看转换后的激光扫描数据。 ### 回答2: depthimage_to_laserscan是一个ROS软件包,可以将RGB图像或深度图像转换为激光雷达扫描数据。因为在一些应用场合中只有单目或RGBD相机,不能直接使用激光雷达,但需要激光雷达扫描的信息,因此就需要使用这个软件包。 depthimage_to_laserscan软件包并不是ROS的默认包,需要手动安装。下面是安装步骤: 第一步:打开终端 首先需要使用Linux终端来进行软件包的安装和配置。 第二步:安装ROS 如果还没有安装ROS,需要先安装ROS。可以使用以下命令在Ubuntu中安装ROS: $ sudo apt-get update $ sudo apt-get install ros-kinetic-desktop-full 其中,ros-kinetic-desktop-full是ROS的完整版,用户可以根据需求选择安装合适的版本。 第三步:下载软件包 在终端中,使用以下命令来下载depthimage_to_laserscan软件包: $ cd ~/catkin_ws/src $ git clone https://github.com/ros-perception/depthimage_to_laserscan.git 上述命令将安装ROS激光雷达转换软件包,并将其安装到catkin工作区源目录中(~/catkin_ws/src)。 第四步:编译软件包 使用以下命令编译安装软件包: $ cd ~/catkin_ws $ catkin_make catkin_make是ROS的编译工具,会将软件包编译成二进制文件,并将它们安装到ROS环境中。 第五步:测试软件包 使用以下命令测试软件包的功能: $ roslaunch depthimage_to_laserscan example.launch 该命令将启动节点,生成激光雷达扫描数据。可以使用以下命令查看数据: $ rostopic echo /scan 至此,depthimage_to_laserscan软件包的安装已经完成,并测试成功。需要注意的是,depthimage_to_laserscan节点需要重定向图像话题输入,比如激光雷达通常会提供深度数据,并将其放在“/camera/depth/image”话题的sensor_msgs/Image消息中。如果要使用其他数据源,请根据需要进行调整。 ### 回答3: depthimage_to_laserscan是一个ROS软件包,用于将深度图像转换为激光扫描数据,使得可以使用已有的激光扫描程序来分析深度图像。depthimage_to_laserscan软件包可以在ROS Kinetic和ROS Melodic版本下使用。 以下是depthimage_to_laserscan安装的步骤: 1. 在ROS系统中进入工作空间(catkin_ws),运行以下命令: cd ~/catkin_ws/src 2. 克隆depthimage_to_laserscan软件包到src目录: git clone https://github.com/ros-perception/depthimage_to_laserscan.git 3. 编译软件包: cd ~/catkin_ws catkin_make 4. 配置深度相机: depthimage_to_laserscan可以与不同类型的深度相机一起使用。深度相机应该配置好并在ROS系统中可用。示例代码涉及使用Kinect v2相机。 5. 运行depthimage_to_laserscan节点: 在一个终端中输入以下命令: roscore 在另一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash roslaunch freenect_launch freenect.launch depth_registration:=true 在另一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash rosrun depthimage_to_laserscan depthimage_to_laserscan image:=/camera/depth/image_raw 6. 使用RViz显示生成的激光扫描数据: 在一个终端中输入以下命令: source ~/catkin_ws/devel/setup.bash rosrun rviz rviz 在RViz中,设置Fixed Frame为相机坐标系(camera_link),然后添加一个LaserScan消息显示器,将Topic设置为/laser_scan。 如此一来,depthimage_to_laserscan软件包就成功安装,并且可以将深度图像转换为激光扫描数据,使得可以使用已有的激光扫描程序来分析深度图像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

飞同学

随时为您服务

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

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

打赏作者

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

抵扣说明:

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

余额充值