ubuntu16.04+Ros+gazebo7.16.0
创建工作区间,初始化并编译:
mkdir -p racecar_ws/src
下载racecar包:racecar或者直接git clone,一般早上网速会快一点。
(注意位置:racecar_ws/src)
git clone https://github.com/xmy0916/racecar.git
顺便把环境包路径加到~/.bashrc下:
echo "source ~/workspace/racecar_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
完成后就是这样的了。
再次回到racecar_ws/下编译:
catkin_make
如果不出意外,一次就能通过(比如说我的就是);
出了意外一般是某些ros的package没有安装,安装相应的package就行了。
sudo apt-get install ros-版本-package
还有个意外是,opencv的位置问题,我是新装的虚拟机,没有opencv,所以就没管,如果装了opencv的话,还要去改相应的路径(在racecar/racecar_gazebo/下的CMakeLists.txt文件里)
至此,准备工作基本完成。
下面开始进行测试阶段
运行它自己的racecar模型:可能gazebo还会报错,只要不是红的就没有问题,如果是红的的错误问题,就要去查相关的解决方案了。
roslaunch racecar_gazebo racecar.launch
然后ctrl+c结束gazebo窗口,再把赛道也一起加载出来吧。
roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch
可能会报错:
解决:
错误1:安装gmapping建图的package
sudo apt-get install ros-kinetic-gmapping
错误2:安装ros-kinetic-rtabmap-ros的package
sudo apt-get install ros-kinetic-rtabmap-ros
结果:
就把建图完成了吧:跑完全图应该就是如下了。
然后保存地图:因为他这个包本身就保存了,所以我重新命名了一下。
rosrun map_server map_saver -f racecar_runway1.map
ctrl+c将之前的终端全部关掉,接下来让小车自己跑起来吧。
分别开三个终端依次运行
roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
rosrun racecar_gazebo path_pursuit.py
可以看到小车的运行,但是好像比自己运行的时候要慢一些。不知道是路径规划的问题,还是内存的问题。
使用gazebo创建一个赛道模型:
然后再建立自己的world文件。
这里我还添加了一些小障碍物啥的,也可以添加其他的,我添加的是(Construction Cone)
关闭gazebo界面,然后我们就去看看自己创建的world。
然后就到了修改赛道配置文件的时候了,将我们自己创建的world文件,放到racecar_gazebo/launch/racecar_runway.launch文件里:
然后回到工作区编译(catkin_make)一次,再运行:
roslaunch racecar_gazebo racecar_runway.launch
roslaunch racecar_gazebo slam_gmapping.launch
rosrun map_server map_saver -f my_racecar_runway.map
保存完毕后,将racecar_runway_navigation.launch的map改成自己的my_racecar_runway.map
将终端全部关闭,重新打开,三个终端
分别运行:
roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
rosrun racecar_gazebo path_pursuit.py
至此,我们的智能车导航仿真就完成了。可能会有很多更优的算法,或是道路的规划算法,但这些,我都还没学明白,等后面时间充裕了再进一步学习吧。