准备工作(安装配置)
下载源码包
先进入ros的工作区域
cd ~/racecar_ws/src
下载:
git clone https://github.com/xmy0916/racecar.git
解决办法:
可以直接进入https://github.com/xmy0916/racecar.git进行下载
安装相应插件
1.driver_base
sudo apt-get install ros-melodic-driver-base
2.controllers
sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-effort-controllers
sudo apt-get install ros-melodic-joint-state-controller
3.ackermann_msgs
sudo apt-get install ros-melodic-ackermann-msgs
4.planner
sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-teb-local-planner
编译
cd ~/racecar_ws
catkin_make
出现的问题:
解决办法:
打开
gedit ~/catkin_ws/src/racecar-master/racecar_gazebo/CMakeLists.txt
修改成自己的OpenCV的位置
这个位置的确定可以采用locate OpenCVConfig.cmake
查询,第一个即是
然后再编译,就成功了!
这里的问题可以详细参考https://github.com/xmy0916/racecar往下拉,就可以看见可能出现的问题解决(BUG汇总)
开始仿真
环境变量添加
echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
运行小车模型
roslaunch racecar_gazebo racecar.launch
小车可以通过WASD来进行移动,在想移动的时候要点击这个tk窗口,才能进行移动操作
可以看到小车的位置,离坐标原点的位置,可以修改这个值,就可以改变小车的起始位置,如下:
(不过在这个地方不需要改变,因为源码包里面已经设计好了
但是自己在搭建模型运行的时候要注意这个问题,可以修改小车的位置也可以修改放置模型的位置,让小车在模型轨道内)
启动地图
这里采用的是源码包里面已经建立好的地图模型(我们也可以自己来创建地图模型,可以设计自己想要的样子,最后会介绍怎么建立地图模型)
roslaunch racecar_gazebo racecar_runway.launch
建图
roslaunch racecar_gazebo slam_gmapping.launch
进行绘图,绘图过程要注意小车的移动,小车不是很稳,小心翻车
建图完成
保存地图
rosrun map_server map_saver -f test_map
保存在主目录里面(红色框)
然后将这两个文件复制到map文件下
导航
由于前面保存的地图名字为test_map,所以这里要修改文件里面的内容
修改为保存的地图的名字
然后,启动导航和环境地图:
roslaunch racecar_gazebo racecar_runway_navigation.launch
启动rviz
roslaunch racecar_gazebo racecar_rviz.launch
就打开了保存的地图,可以进行导航了
用2D Nav Goal发布目标:设计小车行车轨迹
启动导航脚本
rosrun racecar_gazebo path_pursuit.py
开始自主导航(红线部分就是小车导航走过的路)
注意
在用2D Nav Goal发布目标的时候,要把导航路线设置好,拐角的地方要注意,不然就会出现下面的情况,就会卡在这里不动
搭建新模型并进行自主导航
搭建新模型
打开gazebo
gazebo
选择
设计一个自己想要的模型
然后保存
取一个名字,保存
看见已经存在了
重新打开gazebo
这里有两种方法,一种是根据这个位置,估计小车的起始位置从而来放置模型,让小车在模型内
一种是修改参数,如下:也就是小车的起始位置在坐标原点(我这里采用这种方式)
放置模型就像这样
插入障碍物(我操作这个图不是很顺畅,不过大概就是这样画)
选择这个锥桶模型
放入
保存世界文件,点击左上角File选择Save World As
然后保存在这个路径下面
然后可以新建一个launch文件,跟上面racecar_runway.launch文件一样,只是修改一下,修改成保存的test_run.world的名字
导航
然后就可以跟上面一样,进行导航了
roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch
其余步骤与上述一样
在gazebo里面我的图不太清楚,这个时候摄像头就起到了很好的作用,可以进行路况的检测,看前面是否有障碍物
建图完成,然后就是保存
保存地图
rosrun map_server map_saver -f test_run_map
然后移入map文件夹下
修改地图参数,以及修改模型
就完成了自主导航(红线部分就是小车导航走过的路)
注意的是,轨道模型创建的起始位置最好区别开,像我最后自己设置的模型,是个环道,起始位置没有用墙隔开,就导致在2D Nav Goal规划路线的时候,小车后面半段路程就不好画,就会有点问题存在,所以可以避免这个问题。
参考文献
1.https://blog.csdn.net/lxzysx/article/details/105346419
2.https://www.guyuehome.com/6463
3.https://github.com/xmy0916/racecar.git