ROS从入门到放弃——用TurtleBot3做Navigation模拟

本教程介绍了使用TurtleBot3在Gazebo环境中进行SLAM和Navigation模拟。通过运行SLAM节点和Teleoperation节点,利用Gazebo仿真环境构建地图并保存为map.pgm和map.yaml。讲解了SLAM参数如`maxUrange`、`map_update_interval`等的调整,以及如何读取保存的地图进行Navigation模拟。在模拟过程中,观察LaserScan数据,理解`/cmd_vel`和`/scan`话题。最后,展示了如何编写自己的漫游地图节点来避开障碍物。
摘要由CSDN通过智能技术生成

本教程参考TurtleBot3


  • 这里我们的机器人有3种选项burger, waffle, waffle_pi
  • Gazebo的地形有两种选项
    • roslaunch turtlebot3_gazebo turtlebot3_world.launch
    • roslaunch turtlebot3_gazebo turtlebot3_house.launch

6.2 SLAM Simulation

  • Terminal 1:打开Gazebo仿真环境
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo turtlebot3_world.launch

【Gazebo】

  • Terminal 2:运行SLAM Node
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

在这里插入图片描述
在这里插入图片描述

  • Terminal 3:运行Teleoperation Node
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

然后对着这个Terminal就可以wasdx来控制前后左右移动了,然后rviz里面的地图也会完整起来

  • Terminal 3:关闭上面那个 运行自主导航
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch

当建好图之后,我们就可以把地图截图保存在桌面上,-f表示我们的希望输入保存的路径,保存完有两个文件map.pgm和map.yaml,yaml里面调用了map.pgm。

rosrun map_server map_saver -f ~/Desktop/map

在这里插入图片描述
白色是可以去的地方,黑色是墙壁,灰色是我们不了解的地方。Occupancy Grid Map (OGM)

  • 地图利用了机器人的里程表(Odometry),tf和扫描信息。
  • 本节里面还介绍了如何使用多个机器人同时建图。

SLAM 参数介绍

我们可以定时或者定距离来采样。

我们可以调节我们的SLAM的参数(在gmapping_params.yaml的文件中)

  • maxUrange:此参数设置激光雷达传感器的最大可用范围。
  • map_update_interval:更新地图的时间,数字越小速度越快
  • minimumScore:此参数设置最小分数值,该分数确定传感器的扫描数据匹配测试的成功或失败。 这样可以减少大面积机器人的预期位置中的误差。 如果参数设置正确,您将看到类似于以下所示的信息:
    Average Scan Matching Score=278.965
    neff= 100
    Registering Scans:Done
    update frame 6
    update ld=2.95935e-05 ad=0.000302522
    Laser Pose= -0.0320253 -5.36882e-06 -3.14142
    
    设置太高,可能会显示Warning
    Scan Matching Failed, using odometry. Likelihood=0
    lp:-0.0306155 5.75314e-06 -3.14151
    op:-0.0306156 5.90277e-06 -3.14151
    
  • linearUpdate:当机器人平移距离大于此值时,它将运行扫描过程。
  • angularUpdate:当机器人旋转的速度超过此值时,它将运行扫描过程。 建议将此值设置为小于linearUpdate。

在这里插入图片描述

6.3 Navigation Simulation

接着上面的步骤,我们可以用来将我们之前保存的地图yaml数据读取出来。($HOME是根目录)

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
或者
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=~/Desktop/map.yaml

在这里插入图片描述

  1. 接着我们点击2D Pose Estimate,然后点击机器人当前的位置,并将绿色箭头指向机器人的前方。
  2. 重复操作1直到两个地图重合。
  3. 然后它会用粒子(绿色的箭头)滤波把绿色的(SLAM)
  4. 接着可以用2D Nav Goal指一个位置就可以把机器人移过去。

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值