用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

结果是这样的:


    
  
  

然后使用如下命令启动仿真环境和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

改成这样:


   
   
   

   
   
   
   
   
       
       
       
   

   
  

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

现在关闭除仿真环境以外的其他节点和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

你可能感兴趣的:(ros)