在Ubuntu18.04中使用gazebo配合LOAM算法仿真

目录

  • 写在前面
  • 操作
    • 环境准备
    • 代码准备
      • LOAM代码
      • gazebo代码
    • 联合运行
  • 总结

写在前面

我的本科毕设需要使用到LOAM算法,最近因为疫情原因,可能没有小车来操作,故学习了如何在gazebo中进行实物仿真。目前实现了gazebo和LOAM之间的配合。
本来打算在网上找一些资源,用起来会快一点,发现全网没有详细介绍如何在gazebo中实现LOAM算法的,倒是有一些介绍在gazebo中实现ORB-SLAM算法的,比如这个博客

https://blog.csdn.net/baidu_36211769/article/details/103374441

所以我打算写一片gazebo+LOAM的博客,才进入这个领域不久,希望前辈们批评指正,指点迷津。

操作

环境准备

Ubuntu版本为18.04
ros版本为melodic
gazebo版本为9

一般来较新近的ros版本都会自带gazebo,如果没有的话,可以安装一下,参考这个博客

https://blog.csdn.net/weixin_41045354/article/details/84881498

代码准备

前人栽树后人乘凉。总体的代码都是在已有基础上改动的。

LOAM代码

LOAM部分的代码是使用的2014年发表在RSS上的论文《LOAM:Lidar Odometry and Mapping in Real-time》的开源代码。源码地址在

https://github.com/laboshinl/loam_velodyne

大家可以clone下来。
具体操作如下
1、建立工作空间并编译
打开终端,输入

$ mkdir ~/LOAM_ws
$ cd ~/LOAM_ws
$ mkdir src
$ cd ~/LOAM_ws/src/
$ git clone https://github.com/laboshinl/loam_velodyne.git
$ cd ~/LOAM_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release 
$ source devel/setup.bash

在编译过程中如果遇到提示缺少库的话,大家按照自己的需要添加
2、测试
网站上给出的一些数据集地址都挂掉了,这里我找到一个数据集,大家可作为作为测试使用。
把这个包放在刚才建立的LOAM_ws目录下面,方便使用。
接着刚才的终端,运行LOAM算法,输入

$ roslaunch loam_velodyne loam_velodyne.launch

新建一个标签页或窗口,输入

$ rosbag play nsh_indoor_outdoor.bag

这个时候可以在自动打开的rivz窗口中看到LOAM的建图过程了,最后的结果如下
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第1张图片3、总结
大家如果想要弄懂其中的源码算法,可以参考大佬魏新slam的一些源码解析的博客。
如果这一部分测试没有问题,就可以继续往下看了。

gazebo代码

这一部分是借鉴的clearpath公司开发的huskyA200的ROS和gazebo文件。其源代码链接

https://github.com/husky/husky

我进行的主要改动包括:原来需要joystick操作,现在改成了键盘控制;引入Velodyne包,将原有的sick的2D激光雷达改为了Velodyne的3D激光雷达;新增了一个museum.world文件,并使用此文件作为地图;打开gazebo自动打开键盘控制。
由于改动较多,所以这里直接给出改完之后的代码,链接如下

https://github.com/18801133196/husky

大家可一直接clone下来使用
具体操作如下
1、环境准备
因为在其中用到的Velodyne VLP-16传感器并不是ros自带的,所以需要自己下载
打开终端,输入

sudo apt-get install ros-melodic-velodyne

如果ros版本不是melodic,请换成相应名称
2、建立工作空间并编译
打开终端,输入

$ mkdir ~/husky_ws
$ cd ~/husky_ws
$ mkdir src
$ cd ~/husky_ws/src/
$ git clone https://github.com/18801133196/husky.git
$ sudo cp -r ~/husky_ws/src/husky/ ~/husky_ws/src
$ sudo rm -rf husky
$ catkin_make 
$ source devel/setup.bash

在编译过程中如果遇到提示缺少库的话,大家按照自己的需要添加
3、测试
接这上面的终端,输入

$ roslaunch husky_gazebo husky_playpen.launch

可能会出现一些标红报错的现象,但并不影响使用,最后终端界面为
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第2张图片可以发现自动打开了gazebo,界面为
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第3张图片此时鼠标点击终端,即可对小车进行控制,具体控制按钮可以在终端中已经说明
如果想要查看其中的点云图像,可以新打开一个终端窗口,输入

$ rviz

打开rviz之后点击界面左下角的Add按钮,选择By topic,找到消息velodyne_points
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第4张图片点OK,将DIsplay工具栏的Gloabl Options中Fixed Frame选为base_link,即可看到点云
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第5张图片4、一些说明

  • 小车的初始直行速度和初始转弯速度可以在teleop_twist_keyboard.py文件中修改
  • Lidar的参数,如Hz、samples等可在husky.urdf.xacro文件中修改,默认参数在第一步下载的velodyne_description的文件VLP-16.urdf.xacro里,默认路径为/opt/ros/melodic/share/velodyne_description/urdf/VLP-16.urdf.xacro
  • 地图修改在文件playpen.launch里

联合运行

在完成LOAM和husky gazebo的分别调试之后,便可以进行联合运行。
具体方法和分别调试是类似的,具体如下
打开终端,输入

$ cd ~/LOAM_ws
$ source devel/setup.bash
$ roslaunch loam_velodyne loam_velodyne.launch

再开一个终端,输入
在Ubuntu18.04中使用gazebo配合LOAM算法仿真_第6张图片

$ cd ~/husky_ws
$ source devel/setup.bash
$ roslaunch husky_gazebo husky_playpen.launch

这样就可以通过控制小车来走完这个地图,最后得到的地图如下

总结

虽然最后成功将gazebo和LOAM算法结合在了一起,也得到了地图,但可以看到地图并不是很准确。
经过多次测试,发现应该是LOAM算法的问题,可以尝试一下新的算法。

你可能感兴趣的:(gazebo,LOAM,自动驾驶)