智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)

目录

  • 一、准备工作
    • 1、创建racecar_ws和src文件夹
    • 2、初始化工作空间
    • 3、克隆程序并编译
  • 二、开始仿真
    • 1、建立地图
    • 2、启动仿真
  • 三、开始导航
    • 1、启动导航和环境地图
    • 2、启动rviz
    • 3、选择2D Nav Goal发布目标
    • 4、启动python文件进行导航
  • 四、总结

一、准备工作

首先你得有一个ros的工作空间,如果没有就创建一个工作空间,步骤如下

1、创建racecar_ws和src文件夹

mkdir -p ~/racecar_ws/src

src文件下以后可以存放我们所有的资源,mkdir命令用于创建文件夹,-p表示同时创建子目录,而racecar是我们ros的工作区间。

2、初始化工作空间

cd ~/racecar_ws/src

catkin_init_workspace

3、克隆程序并编译

git clone https://github.com/xmy0916/racecar.git

cd ..

catkin_make

智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第1张图片
编译如果出现上面这个问题的,可以下载控件解决。

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

下载完控件再编译,出现下面这张图就编译成功。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第2张图片

二、开始仿真

1、建立地图

首先自己建立一地图,如何建立地图可以参考这个链接https://blog.csdn.net/ZhangRelay/article/details/92799977
我建立好的地图是这样的
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第3张图片
建立好点击左上角的File选择save as,随便取个名字(最好叫runway)保存之后重启gazebo,然后在insert中找到刚刚保存的文件,拖拽到右边,最好把地图的坐标轴放到小车的起点,这样就可以不用修改代码。然后增加路障,保存为world文件即可。

2、启动仿真

首先修改环境变量

echo "source ~/racecar_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

然后就启动地图

roslaunch racecar_gazebo racecar_runway.launch

智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第4张图片
启动之后就看到地图
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第5张图片
新开一个终端,启动slam和rviz

roslaunch racecar_gazebo slam_gmapping.launch

智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第6张图片
使tk窗口保持激活状态,使用wsad进行移动小车建立地图,在看到小车跑完整个地图后,保存地图。

rosrun map_server map_saver -f ~/racecar_ws/src/racecar_gazebo/map/map_runway

保存好的地图文件在这个位置,因为我在移动小车的时候有撞墙和小车翻转的情况,所以有的地方不是很完整。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第7张图片

三、开始导航

1、启动导航和环境地图

首先启动自己的launch文件,把原文件的这个三个地方改为自己的文件名字即可。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第8张图片
然后运行launch文件

roslaunch racecar_gazebo racecar_runway_navigation.launch

2、启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

3、选择2D Nav Goal发布目标

在这里选择要到达的目标位置,通过2D Nav Goal指针选择地图上面的一个点进行导航。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第9张图片

4、启动python文件进行导航

可以通过这句代码

rosrun racecar_gazebo path_pursuit.py

也可以python命令启动

cd ~/racecar_ws/src/racecar_gazebo/scripts

python path_pursuit.py

我是直接启动的。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第10张图片
小车运行的很慢,我就没有一直移动小车,最后出现以下文件就代表导航结束,成功到达目标点了。
智能车大赛ROS仿真(仿真实现2019年室外光电创意组比赛)_第11张图片

四、总结

这次做这个智能车是了解一下智能车大赛的一些东西,如果有机会参加比赛,会熟悉一点。过程中我觉得最困难的一点就是自己建图这一方面,如果是简单的地图还好,但是我选择建的图和智能车竞赛的图类似,所以会很麻烦,还要考虑坐标等得问题,一条线没建好,前面的线都会变的畸形起来,可能也是自己没有熟悉建图,毕竟才建了几次,也可能是自己没掌握到简便的方法吧。建图之后,修改launch啥的都挺简单的,因为代码前面的前辈和很多教程比如古月居的网站都提供了,自己只需要改几个地方就可以了。然后后面运行小车建图时,因为小车运行太慢了,建图很烦,一不注意小车还翻了,后面可以改一下提升一下小车的速度。通过做这个了解了智能车比赛的一些相关信息,并且也知道了怎么建立赛道和仿真,对我的帮助很大。

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