ROS智能车定位导航仿真(已实现)

前提:

操作系统:ubuntu16.04

ROS版本:kinetic

Gazebo版本:7.0.0

参考:

https://blog.csdn.net/lxzysx/article/details/107042352

https://www.guyuehome.com/6463

目录

一.

(1)创建工作空间 

二.

(2)下载智能车源码

(3)安装相应的插件

(4)编译

(5)仿真

(6)搭建自己的地图


一.

(1)创建工作空间 

参考(https://www.cnblogs.com/huangjianxin/p/6347416.html)

>1创建文件夹

mkdir -p ~/ROS/src

>2初始化工作空间


cd ~/ROS/src
catkin_init_workspace

>3编译工作空间

cd ~/ROS/

catkin_make

>4设置环境变量

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

##上面的命令是把工作空间的环境变量设置到bash中

source ~/.bashrc

##上面的命令是使配置在当前的终端生效

二.

(2)下载智能车源码

参考:https://blog.csdn.net/weixin_45306136/article/details/107250906

github地址:https://github.com/xmy0916/racecar

进入ROS工作区

cd ~/ROS/src/

在终端中使用Git命令下载源码包

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

(3)安装相应的插件

1.driver_base类

sudo apt-get install ros-kinetic-driver-base

2.controllers类

sudo apt-get install ros-kinetic-controller-manager
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

3.rtabmap类

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

4.ackermann_msgs类

sudo apt-get install ros-kinetic-ackermann-msgs

5.安装gampping

sudo apt-get install ros-kinetic-gmapping

如果出现如下错误就是没有安装gmapping

ROS智能车定位导航仿真(已实现)_第1张图片

(4)编译

回到工作空间,使用catkin_make进行编译以下

ROS智能车定位导航仿真(已实现)_第2张图片

加入环境变量

source ./devel/setup.bash

然后就可以使用roslaunch进行ros的训练了

 

(5)仿真

新开一个终端,运行小车模型

roslaunch racecar_gazebo racecar.launch

ROS智能车定位导航仿真(已实现)_第3张图片

在程序运行之后,会出现如下图的界面,可以将鼠标移动到tk窗口上,然后可以使用WASD按键进行小车的运动

ROS智能车定位导航仿真(已实现)_第4张图片

运行赛道

在终端中输入命令运行赛道

roslaunch racecar_gazebo racecar_runway.launch

当赛道运行成功后,可以通过tk窗口控制小车的运行,此时,再打开一个终端,输入如下命令,进行slam建图

roslaunch racecar_gazebo slam_gmapping.launch

当建图完成后,rviz中会出现建立成功的图形

ROS智能车定位导航仿真(已实现)_第5张图片

使用slam建图成功后,再打开一个终端,在终端中输入命令,将绘制好的地图保存下来

rosrun map_server map_saver -f test_map

如下图,地图文件已经保存到系统根目录

ROS智能车定位导航仿真(已实现)_第6张图片

剪切到racecar_gazebo的map文件夹中

ROS智能车定位导航仿真(已实现)_第7张图片

自主定位

打开launch文件夹下的rececar_runway_navigation.launch文件,将其中的map路径改为刚才建立的地图名称

ROS智能车定位导航仿真(已实现)_第8张图片

ROS智能车定位导航仿真(已实现)_第9张图片

启动导航和环境地图

roslaunch racecar_gazebo racecar_runway_navigation.launch

启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

启动rviz之后,在rviz的界面中使用2D Nav Goal工具进行手工绘制路线,如下

ROS智能车定位导航仿真(已实现)_第10张图片

注意:如果上面2D Nav Goal 没有出现绿线,并在终端出现(Failed to create the teb_local_planner/TebLocalPlannerROS planner)的错误。可能是少包,执行下面两条命令

sudo apt-get install ros-kinetic-teb-local-planner
sudo apt-get install ros-kinetic-teb-local-planner-tutorials

启动自主导航

rosrun racecar_gazebo path_pursuit.py

ROS智能车定位导航仿真(已实现)_第11张图片

(6)搭建自己的地图

1.打开gazebo

#一个终端执行 

roscore

#另一个终端执行

gazebo

2.在gazebo中选择Building Editor,然后进行地图的绘制

ROS智能车定位导航仿真(已实现)_第12张图片

ROS智能车定位导航仿真(已实现)_第13张图片

 

3.保存地图
选择save as,然后输入一个名字,保存

ROS智能车定位导航仿真(已实现)_第14张图片

4.再次打开gazebo,选择刚才创建的地图,在地图中放置障碍物

这里有两种方法,一种是根据这个位置,估计小车的起始位置从而来放置模型,让小车在模型内

ROS智能车定位导航仿真(已实现)_第15张图片

一种是修改参数,如下:也就是小车的起始位置在坐标原点(我这里采用这种方式)

ROS智能车定位导航仿真(已实现)_第16张图片

放置的模型如图

ROS智能车定位导航仿真(已实现)_第17张图片

插入障碍物(效果)

ROS智能车定位导航仿真(已实现)_第18张图片ROS智能车定位导航仿真(已实现)_第19张图片

保存世界文件,点击左上角File选择Save World As

ROS智能车定位导航仿真(已实现)_第20张图片

然后保存在这个路径下面

ROS智能车定位导航仿真(已实现)_第21张图片

然后可以新建一个launch文件,跟上面racecar_runway.launch文件一样,只是修改一下,修改成保存的test_run.world的名字

ROS智能车定位导航仿真(已实现)_第22张图片

slam地图生成

roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch

ROS智能车定位导航仿真(已实现)_第23张图片

保存地图,然后移到map文件夹

rosrun map_server map_saver -f test_run_map

ROS智能车定位导航仿真(已实现)_第24张图片

ROS智能车定位导航仿真(已实现)_第25张图片

修改地图参数,以及修改模型

ROS智能车定位导航仿真(已实现)_第26张图片

ROS智能车定位导航仿真(已实现)_第27张图片

修改保存之后,就可以进行自建地图的自主导航了

roslaunch racecar_gazebo racecar_runway_navigation.launch
roslaunch racecar_gazebo racecar_rviz.launch

gazebo和rviz启动之后,在rviz中使用2D Nav Goal进行手动的路线绘制,需要注意路线的精度,不要触碰到周围的障碍物,不然容易造成小车翻车,同时也需要注意小车的起始位置
下图中,由于起始位置小车是对着墙壁的,所以在路线绘制好之后进行自主导航时就出现了翻车现象

然后开启自动导航,小车就自动循迹

rosrun racecar_gazebo path_pursuit.py

 

 

 

你可能感兴趣的:(树莓派,自动驾驶)