ubuntu16.04---ROS智能车定位导航
- 一、准备阶段
-
- 二、仿真
- 1.运行小车模型
- 2.运行赛道
- 3.自主定位导航
- 4.搭建自己的地图
- 5.导航
一、准备阶段
1.下载智能车源码包
进入ROS工作区
cd ~/ROS/src/
在终端中使用Git命令下载源码包
git clone https://github.com/xmy0916/racecar.git
如果在终端中下载失败或者下载非常缓慢,也可以试试在浏览器中下载源码包,然后将包放置到src目录下
2.安装相应插件
1.driver_base类
sudo apt-get install ros-melodic-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.更多的错误解决可以参考https://github.com/xmy0916/racecar
3.编译
下载好源码包之后,回到工作空间,使用catkin_make进行编译以下
加入环境变量
source ./devel/setup.bash
然后就可以使用roslaunch进行ros的训练了
二、仿真
1.运行小车模型
roslaunch racecar_gazebo racecar.launch
在程序运行之后,会出现如下图的界面,可以将鼠标移动到tk窗口上,然后可以使用WASD按键进行小车的运动
2.运行赛道
在终端中输入命令运行赛道
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文件夹中
3.自主定位导航
打开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工具进行手工绘制路线,如下
启动自主导航
rosrun racecar_gazebo path_pursuit.py
4.搭建自己的地图
1.打开gazebo
gazebo
2.在gazebo中选择Building Editor,然后进行地图的绘制
3.保存地图
选择save as,然后输入一个名字,保存
4.再次打开gazebo,选择刚才创建的地图,在地图中放置障碍物
放置完成后保存
5.新建一个launch文件
在文件中输入如下内容
6.启动导航
通小车赛道的导航一样,先启动地图模型,然后进行建图处理
roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch
同样通过tk窗口,使用按键来控制小车的运动
待小车运动完成后,相应的地图也绘制完成
同样,打开一个新的终端,保存地图
rosrun map_server map_saver -f test_run_map
在系统的根目录下也可以看到保存的地图
同样将地图文件剪切到racecar_gazebo的map文件夹中
5.导航
修改racecar_runway_navigition.launch文件的内容,将world和map修改为自己建立的world和map模型
修改保存之后,就可以进行自建地图的自主导航了
roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
gazebo和rviz启动之后,在rviz中使用2D Nav Goal进行手动的路线绘制,需要注意路线的精度,不要触碰到周围的障碍物,不然容易造成小车翻车,同时也需要注意小车的起始位置
下图中,由于起始位置小车是对着墙壁的,所以在路线绘制好之后进行自主导航时就出现了翻车现象
在之后,通过手动干预改变小车在地图中的起始位置,再绘制路线时就不会出现问题了
并且由于整个地图是联通的,所以没法进行全路段的导航
最后,小车进行自主导航到达路线的终点
参考文献:
https://www.cnblogs.com/yytlmm/p/11083143.html
https://www.guyuehome.com/6463
https://blog.csdn.net/lxzysx/article/details/107042352
https://github.com/xmy0916/racecar.git
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)