从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

这篇具有很好参考价值的文章主要介绍了从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

毕业设计打算做三维激光SLAM,记录一些学习历程,也给后面人一点帮助。本教程不涉及SLAM基本概念(如果没有自行补充),主要包含以下几部分内容。

  1. 搭建激光SLAM的运行环境并运行数据集
  2. 在Gazebo中构建仿真地图并添加动态障碍物,使用仿真小车采集激光数据。
  3. A-LOAM详解,算法+代码
  4. Lego-LOAM详解,算法+代码
    完整代码链接在第一讲中

第二节:搭建仿真环境

下载velodyne激光模拟功能包

在完成上一节的内容后,直接clone这个包,然后编译

git clone https://github.com/lmark1/velodyne_simulator.git

需要根据你自己的ros版本安装对应包

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

然后运行即可,运行如果gazebo一直卡住,参考解决方案

roslaunch velodyne_description example.launch 

然后你就会看到机器人在场景中,以及rviz显示的点云图,它提供了16线和32线的模拟。
从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

安装turtlebot3模拟器

turtlebot是使用最多的机器人模拟器,如果没安装的话请先安装

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

安装三维激光雷达到turtlebot3上

我是默认你对urdf有一点了解的,当然其实也很简单,本质上还是个xml文件,每个标签代表了机器人的一部分。我们先在/opt/ros/xxx/share目录下找到turtlebot3的description功能包,为了不修改,我们把urdf文件托到自己功能包下修改,并增加VLP模块。VLP模块也要拖到自己功能包下,仿照velodyne_description中给的例子修改(需要注释掉inertial标签,因为激光的重量会造成机器人的翻倒)。
PS:gpu这个变量非常重要,只有设置为gpu的时候,才可以检测到动态障碍物,但是对性能要求更高

  <xacro:include filename="$(find 3d_slam_simulation)/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.2" rpy="0 0 0" />
  </xacro:VLP-16>

具体内容看我给的github链接

构建Gazebo地图

可以参考这篇博客自己搭建仿真环境,当然我功能包里面有一个搭好的环境。在gazebo中添加地图也可以不显示GUI界面,后台运行,你操作机器人移动可以看激光雷达,在电脑运行不过来GUI的时候可以这么做,对虚拟机友好。

  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="$(find 3d_slam_simulation)/world/gallery.world"/>
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="false"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

添加动态障碍物

Gazebo中添加了actor单位,可以通过指定巡航点的方式让其在环境中自行运动(当然也可以自己写插件,实现更复杂的运动规划)官方教程,其实很容易看懂,skin就是导入了一个人形的皮肤;animation就是让人以什么动作运动(可以跑步、走路、太空漫步等),然后运动做插值可以更顺畅;script里面是如何规划运动,直接使用trajectory标签就是根据waypoint点巡航,运动点首位相接就形成反复绕圈的景象,不相接会瞬间移动。

<actor name="actor">
  <skin>
    <filename>walk.dae</filename>
  </skin>
  <animation name="walking">
    <filename>walk.dae</filename>
    <interpolate_x>true</interpolate_x>
  </animation>
  <script>
    <trajectory id="0" type="walking">
      <waypoint>
        <time>0</time>
        <pose>0 2 0 0 0 -1.57</pose>
      </waypoint>
      <waypoint>
        <time>2</time>
        <pose>0 -2 0 0 0 -1.57</pose>
      </waypoint>
      <waypoint>
        <time>2.5</time>
        <pose>0 -2 0 0 0 1.57</pose>
      </waypoint>
      <waypoint>
        <time>7</time>
        <pose>0 2 0 0 0 1.57</pose>
      </waypoint>
      <waypoint>
        <time>7.5</time>
        <pose>0 2 0 0 0 -1.57</pose>
      </waypoint>
    </trajectory>
  </script>
</actor>

操作机器人建图

安装键盘操作机器人运行的功能包

sudo apt-get install ros-kinetic-teleop-twist-keyboard

使用功能包控制机器人运行并建图,也可以先录制成rosbag后再播放建图,对电脑压力小一些。
aloam要先启动地图,再启动算法(不清楚为什么,不然会出现问题)

roslaunch 3d_slam_simulation gazebo_turtlebot3.launch 
roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch 
rosrun teleop_twist_keyboard teleop_twist_keyboard.py

最终效果

从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)

从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)文章来源地址https://www.toymoban.com/news/detail-428902.html

到了这里,关于从零开始的三维激光雷达SLAM教程第二讲(搭建Gazebo仿真环境,并添加动态障碍物)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RGB-L:基于激光雷达增强的ORB_SLAM3(已开源)

    点云PCL免费知识星球,点云论文速读。 文章:RGB-L: Enhancing Indirect Visual SLAM using LiDAR-based Dense Depth Maps 作者:Florian Sauerbeck, Benjamin Obermeier, Martin Rudolph 编辑:点云PCL 代码:https://github.com/TUMFTM/ORB_SLAM3_RGBL.git 欢迎各位加入免费知识星球,获取PDF论文,欢迎转发朋友圈。文章仅

    2024年02月07日
    浏览(48)
  • SLAM实操入门(六):连接Velodyne的16线激光雷达并可视化

    好久没更新这部分了,最近在搞中期答辩的东西,简单补充一部分多线激光雷达建图的内容。上文介绍使用自己的激光雷达如何通过GMapping算法建图,接下来两节介绍怎么运行Velodyne的16线激光雷达,并使用港科大改进的A-Loam进行建图。 前文链接如下 SLAM实操入门(一):在已

    2024年02月09日
    浏览(35)
  • 从零入门激光SLAM(八)——ROS常用消息

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月12日
    浏览(35)
  • 计算机视觉中的三维重建:基于激光雷达与相机的方法

    作者:禅与计算机程序设计艺术 近年来,随着激光雷达、相机等传感器的广泛应用,三维重建技术逐渐成为热门研究方向。三维重建技术可以从多种角度帮助我们理解世界,并进行精准定位、建筑物三维模型化、环境规划、自然现象研究以及各种各样的应用。 但由于三维重

    2024年03月22日
    浏览(47)
  • 从零入门激光SLAM(六)——ROS常用工具箱

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2023年04月16日
    浏览(55)
  • 从零入门激光SLAM(十)——刚体位姿表达与优化

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月05日
    浏览(40)
  • 从零入门激光SLAM(四)——ROS C++编译基础

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年02月10日
    浏览(42)
  • 激光雷达(LiDAR)| Open3D:第二节 邻近搜索之构建KDTree

    本节将介绍Open3D开源库:KDTree的原理及构建,将无序点云变为有序点云,实现点云的快速邻近搜索。 Open3D使用FLANN构建KDTrees,将无序点云变为有序点云,以便快速检索最近邻。 在激光雷达中,一般使用的是三维点云。所以,kd-tree的维度是3。 KDTree(k 维树)是一种空间分区数

    2024年02月05日
    浏览(50)
  • 从零入门激光SLAM(五)——手把手带你编译运行Lego_loam

    大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激光SLAM,也方便想入门SLAM的同学和小白学习参考,相信看

    2024年01月17日
    浏览(92)
  • 从零开始Vue项目中使用MapboxGL开发三维地图教程(四)改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中心点坐标

    总章节 从零开始Vue项目中使用MapboxGL开发三维地图教程 (一) MapboxGL介绍以及前期vue项目的搭建 (二) Mapbox地图样式 (三) 添加全屏,缩放旋转和比例控制面板以及自定义图标、标记点击弹窗、地图平移等功能 (四) 改变鼠标style、地图置于单击feature中心、量测距离和polgon面积和中

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包