ct_icp部署

文章描述了CT_ICP部署过程中遇到的依赖安装和编译器版本问题,以及解决方案。通过更新gcc和g++到11版解决了编译错误。在使用数据集时,发现需要特定配置文件才能成功运行。接着,文章探讨了如何保存点云地图,但发现保存的是单帧数据,而非连续地图。最后,介绍了如何利用octomap将点云转换为栅格地图并进行保存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CT_ICP

ct_icp部署过程

按照github上的README.MD步骤进行

问题1 step1中cmake --build . --config Release

执行过程中卡住

因为要安装很多依赖,网络不行

解决:科学上网

问题2 step2中cmake --build . --target install --config Release --parallel 12

error: ‘filesystem’ is not a member of ‘std’
#define SLAM_FILENAME std::filesystem::path(FILE).filename()

编译器版本太旧,把gcc和g++更新到11

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-11
sudo apt-get install g++-11

//再次查看gcc版本
gcc -v
//发现还是7.5.0
//进入/usr/bin目录下删除旧版本gcc/g++文件
cd /usr/bin
sudo rm gcc g++
//建立软连接
sudo ln -s gcc-11 gcc
sudo ln -s g++-11 g++
//再次查看版本,发现变为11

//重新cmake ,通过

使用自己录制的rosbag

roslaunch ct_icp_odometry ct_icp_on_rosbag.launch rosbag:=/home/river/Downloads/river1.bag topic:=/velodyne_points
//1

失败

后来发现,数据集UrbanLoco_HK是使用32线的Velodyne雷达采集的,并且包里含有专门为该数据集写的launch文件,故直接使用该Launch文件

roslaunch ct_icp_odometry urban_loco_HK.launch rosbag:=/home/river/Downloads/river1.bag
//2

成功!对比两个launch文件,发现是因为1没有配置文件,因为1和2相差就在配置文件上。

所以可以在1的基础上再增加config的路径,启动成功,命令如下

roslaunch ct_icp_odometry ct_icp_on_rosbag.launch rosbag:=/home/river/Downloads/river1.bag topic:=/velodyne_points config:=/home/river/catkin_lidar/src/ct_icp_odometry/params/ct_icp/urban_loco/hong_kong.yaml

在这里插入图片描述

那么如何保存点云地图呢?如何将点云地图转化为珊格地图呢?

保存点云地图

按照网上说法,按照以下步骤保存点云地图,但是保存出来的点云是一帧一帧的,并不是完整的地图。

猜想:/world_points 发布的数据就是一帧一帧的,并没有保留前一时刻的,在rviz中可以显示出整个地图是因为设置了decay time。

//1
roslaunch ct_icp_odometry urban_loco_HK.launch rosbag:=/home/river/Downloads/river1.bag
//2. 录制发布地图点云的rosbag
rosbag record -o out /ct_icp/world_points
//3. 录制完成后,使用pcl将rosbag 转化为pcd格式文件或ply格式文件
//3.1 转化为pcd格式文件
rosrun pcl_ros bag_to_pcd out{/tab} /ct_icp/world_points world_points
//3.2 转化为ply格式文件
rosbag play out{/tab} /ct_icp/world_points:=/input
// new terminal
rosrun pcl_ros pointcloud_to_pcd
pcl_pcd2ply xxx.pcd

转化为栅格地图并保存

1 安装octomap
#安装octomap
sudo apt-get install ros-melodic-octomap-ros 
sudo apt-get install ros-melodic-octomap-server
 
#安装octomap在rviz中的插件
 sudo apt-get install ros-melodic-octomap-rviz-plugins
2 进入octomap安装目录,写个octomap_server节点的launch文件:
#进入octomap_server的launch文件夹
cd /opt/ros/melodic/share/octomap_server/launch
 
#创建launch文件
sudo touch octomap_server.launch
 
#给launch文件加可写权限
sudo chmod a+w octomap_server.launch
3 写入launch文件

需要注意,frame_id 设置为 /odom,话题cloud_in设置为 /ct_icp/world_points

<launch>
  <node pkg="octomap_server" type="octomap_server_node" name="octomap_server"> 
 
     <!--resolution in meters per pixel-->
    <param name="resulution" value="0.1" />
    
     <!--name of the fixed frame,needs to be "/map" for SLAM-->
    <param name="frame_id" type="string" value="/odom" />
 
     <!--max range/depth resolution of the kinect meters-->
    <param name="sensor_model/max_range" value="50.0" />
    <param name="latch" value="true" />
 
     <!--max/min height for occupancy map, should be in meters-->
    <param name="pointcloud_max_z" value="1.6" />
    <param name="pointcloud_min_z" value="0.8" />
 
    <param name="graound_filter_angle" value="3.14" />
 
     <!--topic from where pointcloud2 messages are subscribed-->
    <remap from="cloud_in" to="/ct_icp/world_points" />
 
  </node>
 
</launch>
4 启动SLAM算法并转换/保存地图
//1
roslaunch octomap_server octomap_server.launch
//2
roslaunch ct_icp_odometry urban_loco_HK.launch rosbag:=/home/river/Downloads/river1.bag
//3
添加rviz组件,OccupidedGrid,话题选择/octomap_full ,另外添加occupidedMap,话题为/projected_map
//4. 保存二维栅格地图  (快要结束时)
rosrun map_server map_saver map:=/projected_map
//5. 保存完整的概率八叉树地图
rosrun octomap_server octomap_saver -f octomap.ot                         (rosrun octomap_server octomap_saver octomap.ot)保存压缩的二进制存储格式地图
//查看八叉树地图
octovis xxx.ot

二维栅格地图:
在这里插入图片描述八叉树地图:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值