一、准备工作

1、下载代码并安装必要功能包

本文代码已上传 github 期待点个star 环境: Ubuntu16.04 + ros kinetic 记得预先安装以下功能包(可能有遗漏,大家根据报错自行安装吧,或者私聊我)  
sudo apt-get install ros-kinetic-ackermann-msgs
sudo apt-get install ros-kinetic-navigation
sudo apt-get install ros-kinetic-openslam-gmapping
sudo apt-get install ros-kinetic-geographic-info
sudo apt-get install ros-kinetic-controller-manager
sudo apt-get install ros-kinetic-gazebo-ros-control
sudo apt-get install ros-kinetic-effort-controllers
sudo apt-get install ros-kinetic-joint-state-controller 
sudo apt-get install ros-kinetic-position-controllers  
sudo apt-get install ros-kinetic-teb-local-planner

2、编译

将代码放到自己的工作空间里的src编译(应该不会报错); 编译之前记得执行 sudo chmod -R 777 carlike_robot_sim/ (工作空间的创建参考 ROS学习--第3篇:ROS基础---创建工作空间 的前三点)  
#终端输入
cd
cd catkin_ws
catkin_make
 

二、启动仿真

本文所使用的模型是MIT的racecar,是Ackermann 转向机构的gazebo仿真  

1、启动gazebo和rviz

我已经写好了一个launch文件,方便直接启动 直接执行  
 
#首先启动gazebo 和 rviz界面
roslaunch bringup car_sim_gmapping.launch
 
#之后启动遥控
rosrun racecar_control keyboard_teleop.py
  注意:遥控使用wasd控制 之后rviz中添加TF并将Fixed Frame选为odom,得到如下图的结果   微信图片_20201105115442   note:如果出现图中类似ERROR   微信图片_20201105115451   请给这些python编写的文件可执行权限, 回到src下 执行sudo chmod -R 777 文件夹名   微信图片_20201105115457

2、启动gmapping建图

(1)首先选中rviz界面,点击File->Open Config (如图)

  微信图片_20201105115500  

(2)选择如图目录下的rviz文件

  微信图片_20201105115848  

(3)启动gmapping

 
roslaunch bringup slam_gmapping.launch 
  微信图片_20201105115853   之后遥控小车便可以得到如图的地图   微信图片_20201105115856  

(4)保存地图

执行以下命令即可  
rosrun map_server map_saver -f  ~/catkin_ws/src/calf_carlike_robot/bringup/map/mymap
  完成地图保存后便可以关闭所有界面了。  

3、导航仿真

这里我们使用的是teb算法

(1)启动gazebo和rviz仿真

 
roslaunch bringup car_sim_nav.launch 
 

(2)打开rviz配置文件

和之前操作一样,选择rviz窗口,点击File->Open Config,和之前的路径一样 选择在bringup/rviz文件夹下的movebase.rviz 得到如图画面:   微信图片_20201105115859  

(3)启动导航

 
roslaunch bringup move_base.launch 
  选择rviz上方工具栏的 2D Nav Goal(绿色箭头)在地图上点击,可以看到小车自动运行过去。 其中,绿色曲线是全局路径,由之前所建地图得到,红色箭头是局部路径规划,实时修正全局地图。   微信图片_20201105115902