原文链接:无人驾驶汽车系统入门(二十四)——激光雷达的地面-非地面分割和pcl_ros实践_地面分割:无人驾驶汽车系统入门(二十四)-优快云博客
区分一下ros和ros2
PCL基本入门
PCL是一个开源的点云处理库,是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,它实现了大量点云相关的通用算法和高效数据结构,包含点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等大量开源代码。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位。ROS2 humble完整版中本身已经包含了pcl库,同时ROS自带的pcl_ros 包可以连接ROS和PCL库。我们从一个简单的Voxel Grid Filter的ROS节点实现来了解一下PCL在ROS中的基本用法,同时了解PCL中的一些基本数据结构:
在ROS项目中引入PCL库
cd ~
mkdir -p pcl_ws/src
cd pcl_ws
colcon build
source install/setup.bash
cd ~/pcl_ws/src
# 创建ROS2功能包,命名为pcl_test,C++实现
ros2 pkg create pcl_test --build-type ament_cmake --dependencies rclcpp sensor_msgs pcl_ros pcl_conversions
cd ~/pcl_ws
colcon build --symlink-install
source install/setup.bash
启动节点
ros2 launch pcl_test pcl_test.launch.py
新建终端,运行测试bag(原文采用的ros1包,需要先转换成ros2包)
安装rosbags包:
pip install --upgrade rosbags
运行命令:
rosbags-convert --src test.bag --dst test_db3 --dst-typestore ros2_humble
--src test.bag
→ 指定输入的 ROS1.bag
文件--dst test_db3
→ 指定输出.db3
文件的目录--dst-typestore ros2_humble
→ 目标格式设定为 ROS2 Humble 的rosbag2
例如
rosbags-convert --src ~/pcl_ws/bags/test.bag --dst ~/pcl_ws/bags/test_db3 --dst-typestore ros2_humble
在rviz2中查看转换之后的点云包
首先播放rosbag包
ros2 bag play ~/pcl_ws/bags/test_db3 --clock
打开rviz2
rviz2
发布坐标
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map velodyne
打开rviz2 添加话题
命令行:
ros2 launch pcl_test pcl_test.launch.py
ros2 launch euclidean_cluster euclidean_cluster.launch.py
ros2 bag play ~/pcl_ws/bags/test_db3 --clock --loop
ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 map velodyne
rviz2