gazebo7.16.0+ros完成小车自主导航(用到racecar包)

环境

ubuntu16.04+Ros+gazebo7.16.0

准备阶段:

创建工作区间,初始化并编译:

mkdir -p racecar_ws/src

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第1张图片
下载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

完成后就是这样的了。
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第2张图片
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第3张图片
再次回到racecar_ws/下编译:

catkin_make

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第4张图片
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第5张图片
如果不出意外,一次就能通过(比如说我的就是);
出了意外一般是某些ros的package没有安装,安装相应的package就行了。

sudo apt-get install ros-版本-package

还有个意外是,opencv的位置问题,我是新装的虚拟机,没有opencv,所以就没管,如果装了opencv的话,还要去改相应的路径(在racecar/racecar_gazebo/下的CMakeLists.txt文件里)
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第6张图片
至此,准备工作基本完成。
下面开始进行测试阶段

测试阶段

运行它自己的racecar模型:可能gazebo还会报错,只要不是红的就没有问题,如果是红的的错误问题,就要去查相关的解决方案了。

roslaunch racecar_gazebo racecar.launch

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第7张图片
这里可以通过WSAD来让小车进行移动,可以自己试试。

然后ctrl+c结束gazebo窗口,再把赛道也一起加载出来吧。

roslaunch racecar_gazebo racecar_runway.launch

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第8张图片
从小车的视角去看看吧,新建终端,运行(这是建图模块了)

roslaunch racecar_gazebo slam_gmapping.launch

可能会报错:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第9张图片
解决:
错误1:安装gmapping建图的package

sudo apt-get install ros-kinetic-gmapping

错误2:安装ros-kinetic-rtabmap-ros的package

sudo apt-get install ros-kinetic-rtabmap-ros

结果:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第10张图片
就把建图完成了吧:跑完全图应该就是如下了。
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第11张图片
然后保存地图:因为他这个包本身就保存了,所以我重新命名了一下。

rosrun map_server map_saver -f racecar_runway1.map

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第12张图片
ctrl+c将之前的终端全部关掉,接下来让小车自己跑起来吧。
分别开三个终端依次运行

roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
rosrun racecar_gazebo path_pursuit.py

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第13张图片
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第14张图片
可以看到小车的运行,但是好像比自己运行的时候要慢一些。不知道是路径规划的问题,还是内存的问题。

自建赛道阶段

使用gazebo创建一个赛道模型:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第15张图片
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第16张图片
然后再建立自己的world文件。
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第17张图片
这里我还添加了一些小障碍物啥的,也可以添加其他的,我添加的是(Construction Cone)
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第18张图片
关闭gazebo界面,然后我们就去看看自己创建的world。
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第19张图片
然后就到了修改赛道配置文件的时候了,将我们自己创建的world文件,放到racecar_gazebo/launch/racecar_runway.launch文件里:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第20张图片
然后回到工作区编译(catkin_make)一次,再运行:

roslaunch racecar_gazebo racecar_runway.launch

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第21张图片
新开一个终端,再次运行建图的文件:

roslaunch racecar_gazebo slam_gmapping.launch

运行过程:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第22张图片
再开一个终端保存map:

rosrun map_server map_saver -f my_racecar_runway.map

gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第23张图片
保存完毕后,将racecar_runway_navigation.launch的map改成自己的my_racecar_runway.map
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第24张图片
将终端全部关闭,重新打开,三个终端
分别运行:

roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch
rosrun racecar_gazebo path_pursuit.py

得到如下结果:
gazebo7.16.0+ros完成小车自主导航(用到racecar包)_第25张图片

至此,我们的智能车导航仿真就完成了。可能会有很多更优的算法,或是道路的规划算法,但这些,我都还没学明白,等后面时间充裕了再进一步学习吧。

你可能感兴趣的:(ROS,linux)