一、准备工作
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,得到如下图的结果
note:如果出现图中类似ERROR
请给这些python编写的文件可执行权限, 回到src下 执行sudo chmod -R 777 文件夹名
2、启动gmapping建图
(1)首先选中rviz界面,点击File->Open Config (如图)
(2)选择如图目录下的rviz文件
(3)启动gmapping
roslaunch bringup slam_gmapping.launch
之后遥控小车便可以得到如图的地图
(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 得到如图画面:
(3)启动导航
roslaunch bringup move_base.launch
选择rviz上方工具栏的 2D Nav Goal(绿色箭头)在地图上点击,可以看到小车自动运行过去。 其中,绿色曲线是全局路径,由之前所建地图得到,红色箭头是局部路径规划,实时修正全局地图。