前提:
操作系统:ubuntu16.04
ROS版本:kinetic
Gazebo版本:7.0.0
参考:
https://blog.csdn.net/lxzysx/article/details/107042352
https://www.guyuehome.com/6463
目录
一.
(1)创建工作空间
二.
(2)下载智能车源码
(3)安装相应的插件
(4)编译
(5)仿真
(6)搭建自己的地图
参考(https://www.cnblogs.com/huangjianxin/p/6347416.html)
>1创建文件夹
mkdir -p ~/ROS/src
>2初始化工作空间
cd ~/ROS/src
catkin_init_workspace
>3编译工作空间
cd ~/ROS/
catkin_make
>4设置环境变量
echo "source ~/ROS/devel/setup.bash" >> ~/.bashrc
##上面的命令是把工作空间的环境变量设置到bash中
source ~/.bashrc
##上面的命令是使配置在当前的终端生效
参考:https://blog.csdn.net/weixin_45306136/article/details/107250906
github地址:https://github.com/xmy0916/racecar
进入ROS工作区
cd ~/ROS/src/
在终端中使用Git命令下载源码包
git clone https://github.com/xmy0916/racecar.git
1.driver_base类
sudo apt-get install ros-kinetic-driver-base
2.controllers类
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
3.rtabmap类
sudo apt-get install ros-kinetic-rtabmap-ros
4.ackermann_msgs类
sudo apt-get install ros-kinetic-ackermann-msgs
5.安装gampping
sudo apt-get install ros-kinetic-gmapping
如果出现如下错误就是没有安装gmapping
回到工作空间,使用catkin_make进行编译以下
加入环境变量
source ./devel/setup.bash
然后就可以使用roslaunch进行ros的训练了
新开一个终端,运行小车模型
roslaunch racecar_gazebo racecar.launch
在程序运行之后,会出现如下图的界面,可以将鼠标移动到tk窗口上,然后可以使用WASD按键进行小车的运动
运行赛道
在终端中输入命令运行赛道
roslaunch racecar_gazebo racecar_runway.launch
当赛道运行成功后,可以通过tk窗口控制小车的运行,此时,再打开一个终端,输入如下命令,进行slam建图
roslaunch racecar_gazebo slam_gmapping.launch
当建图完成后,rviz中会出现建立成功的图形
使用slam建图成功后,再打开一个终端,在终端中输入命令,将绘制好的地图保存下来
rosrun map_server map_saver -f test_map
如下图,地图文件已经保存到系统根目录
剪切到racecar_gazebo的map文件夹中
自主定位
打开launch文件夹下的rececar_runway_navigation.launch文件,将其中的map路径改为刚才建立的地图名称
启动导航和环境地图
roslaunch racecar_gazebo racecar_runway_navigation.launch
启动rviz
roslaunch racecar_gazebo racecar_rviz.launch
启动rviz之后,在rviz的界面中使用2D Nav Goal工具进行手工绘制路线,如下
注意:如果上面2D Nav Goal 没有出现绿线,并在终端出现(Failed to create the teb_local_planner/TebLocalPlannerROS planner)的错误。可能是少包,执行下面两条命令
sudo apt-get install ros-kinetic-teb-local-planner
sudo apt-get install ros-kinetic-teb-local-planner-tutorials
启动自主导航
rosrun racecar_gazebo path_pursuit.py
1.打开gazebo
#一个终端执行
roscore
#另一个终端执行
gazebo
2.在gazebo中选择Building Editor,然后进行地图的绘制
3.保存地图
选择save as,然后输入一个名字,保存
4.再次打开gazebo,选择刚才创建的地图,在地图中放置障碍物
这里有两种方法,一种是根据这个位置,估计小车的起始位置从而来放置模型,让小车在模型内
一种是修改参数,如下:也就是小车的起始位置在坐标原点(我这里采用这种方式)
放置的模型如图
插入障碍物(效果)
保存世界文件,点击左上角File选择Save World As
然后保存在这个路径下面
然后可以新建一个launch文件,跟上面racecar_runway.launch文件一样,只是修改一下,修改成保存的test_run.world的名字
slam地图生成
roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch
保存地图,然后移到map文件夹
rosrun map_server map_saver -f test_run_map
修改地图参数,以及修改模型
修改保存之后,就可以进行自建地图的自主导航了
roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
gazebo和rviz启动之后,在rviz中使用2D Nav Goal进行手动的路线绘制,需要注意路线的精度,不要触碰到周围的障碍物,不然容易造成小车翻车,同时也需要注意小车的起始位置
下图中,由于起始位置小车是对着墙壁的,所以在路线绘制好之后进行自主导航时就出现了翻车现象
然后开启自动导航,小车就自动循迹
rosrun racecar_gazebo path_pursuit.py