本博客用于记录我整个学习流程

目录

一.搭建Gazebo仿真环境

二.SLAM 3D 建图

三.3D点云地图转2D栅格地图

四.3D 导航

一.搭建Gazebo仿真环境

1.1 3D雷达(16线)

这里采用16线激光雷达进行实验,可根据自己需要选择合适的雷达,这里仿真采用velodyne雷达

1.1.1 雷达模型和仿真源码:https://github.com/lmark1/velodyne_simulator

1.1.2 雷达安装

sudo apt-get install ros-noetic-velodyne-*

1.1.3 雷达测试

roslaunch velodyne_description example.launch

 gazebo成功显示雷达模型以及能正常获取3D点云数据,雷达安装完成

1.2仿真小车(turtlebot3)

注意下面代码默认为main,根据自己ros版本选择对应的版本分支,我的是20.04版本,所以我以noetic为例,请根据自己实际的版本修改

1.2.1 小车模型源码:https://github.com/ROBOTIS-GIT/turtlebot3

1.2.2 小车仿真包源码:https://github.com/ROBOTIS-GIT/turtlebot3_simulations/tree/main

1.2.3 源码安装(两个源码包都要安装)

cd catkin_ws/src
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ..
catkin_make

 1.2.4 小车测试

由于该小车模型有三种分别是:waffle、waffle_pi/burger、在测试前可以根据自己的需要设置一个模型为默认并添加到环境中,方便后面的实验(我这里用的waffle模型小车)

echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc
source ~/.bashrc

进入工作空间测试代码

cd catkin_ws
source ./devel/setup.bash
roslaunch turtlebot3_gazebo turtlebot3_house.launch 

 成功运行仿真环境,小车安装完成

1.3 搭建3D雷达小车

由于原本的小车只搭载2D雷达,因此将上述 velodyne雷达和turtlebot3小车进行组合,目前工作空间的功能包为红框所示

1.3.1 tur_3d.launch

在 turtlebot3_simulations/turtlebot3_gazebo/launch下创建自己的tur_3d.launch文件(红色)并将turtlebot3_house.launch的内容复制到自己的launch文件中

将tur_3d.launch第16行小车模型(蓝色框)文件改为后面我们的模型文件tur_3d.xacro

  <param name="robot_description" command="$(find xacro)/xacro --inorder $(find turtlebot3_description)/urdf/tur_3d.urdf.xacro" />

 1.3.2 tur_3d.xacro

 在src/turtlebot3/turtlebot3_description/urdf下创建自己的tur_3d.xacro文件(红色),将waffle的模型文件复制过来(蓝色),代码灰色重启一下vscode即可

如下雷达的模型加载代码添加到tur_3d.xacro后面

  <xacro:include filename="$(find velodyne_description)/urdf/VLP-16.urdf.xacro"/>
  <xacro:VLP-16 parent="base_link" name="velodyne" topic="/velodyne_points" hz="10" samples="440" gpu="false">
    <origin xyz="0 0 0.4" rpy="0 0 0" />
  </xacro:VLP-16>

添加雷达代码为选中的部分 

1.3.3 测试小车和雷达的组合

启动tur_3d.launch文件

roslaunch turtlebot3_gazebo tur_3d.launch

3D雷达和小车已经成功组合在一起了,由于我是设置的雷达在base_link的高度上方4的距离所以会出现浮空的样子,但是绑定了小车base_link雷达可以跟随一起运动

1.3.4 添加TF和RVIZ配置

上述1.3.3能在仿真环境中看到小车和雷达组合,打开rviz看小车模型和雷达数据直接运行后运行rviz会发现报错如下 ,这是启动的launch文件中没有添加TF导致的

 添加如下发布TF的代码到自己的tur_3d.launch文件中,如不想每次启动rviz,可以添加rviz启动配置看自己需要

  <!-- 启动 joint_state_publisher 和 robot_state_publisher -->
  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>

 添加机器人模型插件和点云插件,修改接收对应话题后在RVIZ中能正常显示机器人模型和雷达采集的点云数据,可根据自己需要调整点云种类颜色大小等等()

添加深度相机的point和image可以看到对应的数据 

二.SLAM 3D 建图

2.0 常用的3D建图算法

SLAM常用的2D、3D算法复现以及仿真汇总_slam仿真-CSDN博客

2.1fast_lio建图算法

2.1.1 fast_lio源码安装

我采用的是fast_lio 3D建图算法构建3D点云地图

FAST_LIO复现,并用实际建图_fast-lio复现-CSDN博客

 2.1.2 仿真建图

通过前一小节完成了fast_lio的源码安装编译并成功跑通了数据集,为了能实现仿真环境中的建图进行如下修改

1. 修改fast_lio/src/FAST_LIO/config/velodyne.yaml配置文件的话题,替换为仿真环境下雷达和IMU的话题的话题

lid_topic:  "/velodyne_points"
imu_topic:  "/imu"

2.修改配置参数,改为 Velodyne LiDAR和16线雷达

到这里直接启动建图测试算法,打开3个终端窗口,进入对应的功能包中并source后运行如下代码

分别为仿真环境、fast_lio建图算法、键盘控制

roslaunch turtlebot3_gazebo tur_3d.launch
roslaunch fast_lio mapping_velodyne.launch 
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 在键盘控制终端控制小车运动却发现地图漂移且报错无效积分 

经过测试排查,发现我之前录的数据包(实物小车)是能正常建图的,我又尝试了point_lio发现仿真的数据同样无法建图,目前定位是仿真数据的问题(目前还未解决有知道的可以联系我或者评论区告知一下)

2.2 定位算法( Fast_lio localization)

三.3D点云地图转2D栅格地图

3.1 滤波去噪

四.3D 导航

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐