用ROS仿真中进行gmapping、导航

1.首先需要安装Turtlebot相关的所有功能包,使用如下命令安装:

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

2.输入

sudo gedit ~/.bashrc

加入下面这一行

export TURTLEBOT_GAZEBO_WORLD_FILE="/opt/ros/kinetic/share/turtlebot_gazebo/worlds/playground.world"

3.启动gazebo仿真

roslaunch turtlebot_gazebo turtlebot_world.launch

正确的话应该会出现gazebo的图。

4.SLAM建图

使用如下命令打开gmapping_demo.launch文件,进行一点修改:

$ roscd turtlebot_gazebo/launch/
$ sudo gedit gmapping_demo.launch

结果是这样的:

<launch>
  <arg name="3d_sensor" default="$(env TURTLEBOT_3D_SENSOR)"/>  <!-- r200, kinect, asus_xtion_pro -->
  <arg name="custom_gmapping_launch_file" default="$(find turtlebot_navigation)/launch/includes/gmapping/$(arg 3d_sensor)_gmapping.launch.xml"/>
  <include file="$(find turtlebot_navigation)/launch/includes/gmapping/gmapping.launch.xml"/>
</launch>

然后使用如下命令启动仿真环境和gmapping节点:

$ roslaunch turtlebot_gazebo turtlebot_world.launch
$ roslaunch turtlebot_gazebo gmapping_demo.launch
$ roslaunch turtlebot_rviz_launchersview_navigation.launch
$ roslaunch turtlebot_teleopkeyboard_teleop.launch

SLAM结束后使用如下命令保存地图,命名为myslam(注意这一步直接使用古月的可能会报错,得指定路径):

rosrun map_server map_saver -f ~/map/myslam

这样就能正确执行了。

接下来我们在建立完成的地图上实现TurtleBot自主导航功能。turtlebot_gazebo功能包中同样提供了实现导航功能的launch启动文件,但是文件内部的包含路径也有问题,直接运行会提示错误。

用相同的方法修改:

$ roscd turtlebot_gazebo/launch/
$ sudo gedit amcl_demo.launch

改成这样:

<launch>
   <!-- Map server -->
   <arg name="map_file" default="$(env TURTLEBOT_GAZEBO_MAP_FILE)"/>
   <node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)" />

   <!-- Localization -->
   <arg name="initial_pose_x" default="0.0"/>
   <arg name="initial_pose_y" default="0.0"/>
   <arg name="initial_pose_a" default="0.0"/>
   <include file="$(find turtlebot_navigation)/launch/includes/amcl/amcl.launch.xml">
       <arg name="initial_pose_x" value="$(arg initial_pose_x)"/>
       <arg name="initial_pose_y" value="$(arg initial_pose_y)"/>
       <arg name="initial_pose_a" value="$(arg initial_pose_a)"/>
   </include>

   <!-- Move base -->
  <include file="$(find turtlebot_navigation)/launch/includes/move_base.launch.xml"/>
</launch>

这里遇到个大坑,因为我是直接复制的古月博主的这一端,结果报错,找了半天发现是他贴上去的这一段的部分空格被消了,所以会报错,我贴的自己自己手动把空格打上了。

现在关闭除仿真环境以外的其他节点和rviz,运行如下命令就可以开始导航了;意思就是只保持gazebo不关,别的都关了:

roslaunch turtlebot_gazebo amcl_demo.launch map_file:=/home/midi/map/myslam.yaml
roslaunch turtlebot_rviz_launchers view_navigation.launch

还是注意古月的空格被消。

最后点击2D Nav Goal可选择目标点。

参考:https://zhuanlan.zhihu.com/p/35822939

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值