【ROS-ROS与MATLAB与Prescan】实现ubuntu16.04中的pointcloud_to_laserscan包实现三维转二维-解决ROS1和ROS2中不同版本的问题-最全

1、前言

该功能包主要是实现了三维的点云数据话题类型sensor_msgs/PointCloud2转换成二维的sensor_msgs/LaserScan

安装环境:ubuntu16.04虚拟机、ROS
本来是想自己写的,但是总是不能实现这个功能,最后妥协了一下,查找资料发现是已经有了这个功能包,本着ROS的核心思想,避免重复造车的情况,就直接拿来用了,其中也遇到了一些问题,特此记录!待知识储备足够,自己尝试写一个!

2、创建工程

这里新建一个工程,当然也可以放在自己的已有的功能

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

3、根据ROS版本下载pointcloud_to_laserscan包

到这里,就会有小伙伴要问了,我怎么知道我的ROS是什么版本,这里我也没有好办法,但是看了好多教程,一般是kinetic及之前都是按照ROS1,之后都是ROS2安装,如果有错还望指出!
还有一种方法是,如果按照上述方法报错:

This workspace contains non-catkin packages in it, and catkin cannot build a non-homogeneous workspace without isolation. Try the 'catkin_make_isolated' command instead. 

那么说明版本安装的不匹配,我就是遇到了这种情况,我的kinetic版本要求使用ROS1,但是目前好多教程都是ROS2,导致浪费了好长时间。

如果是ROS1,我的kinetc就是这个

git clone https://github.com/BluewhaleRobot/pointcloud_to_laserscan.git

如果是ROS2

git clone https://github.com/ros-perception/pointcloud_to_laserscan.git

4、编译工程

cd ~/catkin_ws
catkin_make

一般没有问题

5、创建launch文件

cd ~/catkin_ws/src/pointcloud_to_laserscan/launch/
touch my_demo;launch

launch文件修改:

  <?xml version="1.0"?>
    <launch>
         <!-- run pointcloud_to_laserscan node -->
        <node pkg="pointcloud_to_laserscan" type="pointcloud_to_laserscan_node" name="pointcloud_to_laserscan">
            <remap from="cloud_in" to="/rfans_driver/rfans_points"/>
            
           <rosparam>
                transform_tolerance: 0.01
                min_height: 0.0
                max_height: 1.0
    
                angle_min: -3.14159 # -M_PI/2
                angle_max: 3.14159 # M_PI/2
                angle_increment: 0.0087 # M_PI/360.0
                scan_time: 10
                range_min: 0.05
                range_max: 30.0
                use_inf: true
                inf_epsilon: 1.0
                
                concurrency_level: 1
            </rosparam>
        </node>
    </launch>

这里需要注意的是这句代码:<remap from="cloud_in" to="/rslidar_points"/>
因为咱们的激光雷达节点发布的话题名字是/rslidar_points,因此需要将pointcloud_to_laserscan的订阅信息从默认的cloud_in改为/rslidar_points。当然也可以改成任何的你认为合适的名字。

然后重新编译一下

6、使用启动节点

遇事记得source一下

source catkin_ws/devel/setup.bash 

然后启动创建的launch文件

roslaunch pointcloud_to_laserscan my_demo.launch 

7、注意事项

这里如果你没有对应名字的sensor_msgs/PointCloud2消息格式被发布,你可以在rqt_grapher里面看不到运行的节点有输入点云数据,这里不需要担心,确保你的消息名字对应上,即可。

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pointcloud_to_laserscan是一种ROS(Robot Operating System)的节点,用于将点云数据换为激光扫描数据。它通常用于机器人感知和导航系统,帮助机器人理解周围环境。 ### 回答2: pointcloud_to_laserscan是一个在ROS(机器人操作系统)使用的功能,用于将点云数据换为激光扫描数据。 点云数据是通过激光雷达等传感器获取的三维空间点的集合。它可以提供周围环境的详细信息,但处理点云数据可能比较复杂。激光扫描数据是一种更简化的数据类型,通常是通过将点云数据换为角度和距离的数值表示来实现。这种表示方式更容易处理和解析,通常用于机器人导航、障碍物检测等任务。 pointcloud_to_laserscan功能提供了将点云数据换为激光扫描数据的功能。它接收一个点云数据的ROS消息,并基于设置的参数将其换为激光扫描数据的ROS消息。换过程,它会根据雷达扫描的最小和最大角度范围、扫描角度分辨率等参数进行数据处理。 通过使用pointcloud_to_laserscan功能,我们可以轻松地将点云数据换为激光扫描数据,以便在其他ROS节点使用。例如,我们可以将激光扫描数据输入到导航算法实现机器人的精确定位和路径规划。同时,该功能还可以用于障碍物检测和环境建模等应用。 总而言之,pointcloud_to_laserscan是一个方便的ROS功能,可用于将点云数据换为激光扫描数据,以便于机器人的导航、环境感知和障碍物检测等任务。 ### 回答3: pointcloud_to_laserscan是一个ROS(机器人操作系统),它可以将三维点云数据换为激光扫描数据。在机器人导航和感知,激光扫描数据是一种常用的传感器数据,它提供了关于环境障碍物的信息,使机器人能够进行路径规划和避障等任务。 pointcloud_to_laserscan主要用于将来自激光雷达等传感器的点云数据处理成类似激光扫描数据的形式。处理过程括将点云数据换为柱状扫描,根据扫描角度和距离等参数将点云数据映射到激光扫描数据结构。这样就可以利用针对激光雷达数据的算法进行进一步的数据处理,并与其他机器人功能模块进行集成和交互。 使用pointcloud_to_laserscan可以帮助机器人实现更准确、更稳定的环境感知,从而提高导航和控制的效果。通过将三维点云数据换为激光扫描数据,可以简化数据处理的复杂度,降低算法的计算负载,提高机器人系统的实时性和响应速度。 总之,pointcloud_to_laserscan是一个在ROS常用的,它能够将三维点云数据换为激光扫描数据,为机器人的导航和感知提供了重要的数据支持。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值