首先你得有一个ros的工作空间,如果没有就创建一个工作空间,步骤如下
mkdir -p ~/racecar_ws/src
src文件下以后可以存放我们所有的资源,mkdir命令用于创建文件夹,-p表示同时创建子目录,而racecar是我们ros的工作区间。
cd ~/racecar_ws/src
catkin_init_workspace
git clone https://github.com/xmy0916/racecar.git
cd ..
catkin_make
sudo apt-get install ros-kinetic-driver-base
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-ackermann-msgs
sudo apt-get install ros-kinetic-global-planner
sudo apt-get install ros-kinetic-teb-local-planner
首先自己建立一地图,如何建立地图可以参考这个链接https://blog.csdn.net/ZhangRelay/article/details/92799977
我建立好的地图是这样的
建立好点击左上角的File选择save as,随便取个名字(最好叫runway)保存之后重启gazebo,然后在insert中找到刚刚保存的文件,拖拽到右边,最好把地图的坐标轴放到小车的起点,这样就可以不用修改代码。然后增加路障,保存为world文件即可。
首先修改环境变量
echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
然后就启动地图
roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch
使tk窗口保持激活状态,使用wsad进行移动小车建立地图,在看到小车跑完整个地图后,保存地图。
rosrun map_server map_saver -f ~/racecar_ws/src/racecar_gazebo/map/map_runway
保存好的地图文件在这个位置,因为我在移动小车的时候有撞墙和小车翻转的情况,所以有的地方不是很完整。
首先启动自己的launch文件,把原文件的这个三个地方改为自己的文件名字即可。
然后运行launch文件
roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
在这里选择要到达的目标位置,通过2D Nav Goal指针选择地图上面的一个点进行导航。
可以通过这句代码
rosrun racecar_gazebo path_pursuit.py
也可以python命令启动
cd ~/racecar_ws/src/racecar_gazebo/scripts
python path_pursuit.py
我是直接启动的。
小车运行的很慢,我就没有一直移动小车,最后出现以下文件就代表导航结束,成功到达目标点了。
这次做这个智能车是了解一下智能车大赛的一些东西,如果有机会参加比赛,会熟悉一点。过程中我觉得最困难的一点就是自己建图这一方面,如果是简单的地图还好,但是我选择建的图和智能车竞赛的图类似,所以会很麻烦,还要考虑坐标等得问题,一条线没建好,前面的线都会变的畸形起来,可能也是自己没有熟悉建图,毕竟才建了几次,也可能是自己没掌握到简便的方法吧。建图之后,修改launch啥的都挺简单的,因为代码前面的前辈和很多教程比如古月居的网站都提供了,自己只需要改几个地方就可以了。然后后面运行小车建图时,因为小车运行太慢了,建图很烦,一不注意小车还翻了,后面可以改一下提升一下小车的速度。通过做这个了解了智能车比赛的一些相关信息,并且也知道了怎么建立赛道和仿真,对我的帮助很大。