2019年大学生智能车大赛室外光电组+在ROS下搭建仿真模拟环境,编程控制小车完成定位导航仿真

2019年大学生智能车大赛室外光电组+在ROS下搭建仿真模拟环境,编程控制小车完成定位导航仿真

    • 一、前言
    • 二、准备工作
      • 1.创建工作空间
      • 2.下载racecar源代码包,并编译工程
    • 三、启动仿真
      • 1.设置环境变量
      • 2.启动地图
    • 四、建图
      • 1.启动slam和rviz:
      • 2.控制车辆(左侧有个控制窗口,图标是问号点开),WASD控制前左后右的运动就可以建图了:
      • 3.保存地图
    • 五、导航
      • 1.启动导航和环境地图:
      • 2.启动rviz:
      • 3.利用2D Nav Goal发布目标
      • 4.启动导航脚本
    • 六、搭建自己的地图进行导航
      • 1.打开新的终端输入命令gazebo,创建新的地图模型
      • 2.点击左上角的Edit选择Building Edit:
      • 3.点击Create Walls下面的Wall进行绘制地图:
      • 4.画完后点击左上角的File选择save as:
      • 5.重启gazebo,点击左上角的Insert可以看到刚刚建立的模型,点击一下拖到gazebo中:
      • 6.插入锥桶,点击Insert选择Construction Cone拖入gazebo
      • 7.保存世界文件,点击左上角File选择Save World As
      • 8.创建launch文件,填写赛道配置参数
      • 9. 运行跑道模型,进行建图操作
      • 10. 启动slam和rviz
      • 11.保存地图
    • 七、用自己的地图进行导航
      • 1. 创建myself.launch文件,并按照前面启动文件下入代码
      • 2. 启动导航和环境地图
      • 3. 运行RVIZ进行手工导航
      • 4. 利用2D Nav Goal发布目标
      • 5. 启动导航脚本
    • 八、问题解决办法
      • 1.报错控制器相关
      • 2.报错driver_base相关
      • 3.报错ackermann_msgs相关
      • 4.报错findline.cpp找到opencv头文件
      • 5.报错无法创建teb_local_planner / TebLocalPlannerROS规划器
      • 6.没有laser相关话题,无法建图

一、前言

操作系统:ubuntu16.04
ROS版本:kinetic
Gazebo版本:7.16.0

二、准备工作

1.创建工作空间

mkdir -p ~/racecar_ws/srccd ~/racecar_ws/srccatkin_init_workspace

2.下载racecar源代码包,并编译工程

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

在这里插入图片描述
创建成功如下:
在这里插入图片描述

三、启动仿真

1.设置环境变量

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

2.启动地图

roslaunch racecar_gazebo racecar_runway.launch

在这里插入图片描述

四、建图

1.启动slam和rviz:

roslaunch racecar_gazebo slam_gmapping.launch

在这里插入图片描述

2.控制车辆(左侧有个控制窗口,图标是问号点开),WASD控制前左后右的运动就可以建图了:

在这里插入图片描述
在这里插入图片描述
完成之后:
在这里插入图片描述
操作小车可能会出现打滑现象,可以多次尝试,跑慢点。

3.保存地图

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

在这里插入图片描述

五、导航

1.启动导航和环境地图:

roslaunch racecar_gazebo racecar_runway_navigation.launch

在这里插入图片描述

2.启动rviz:

roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述

3.利用2D Nav Goal发布目标

在这里插入图片描述

4.启动导航脚本

rosrun racecar_gazebo path_pursuit.py或者cd ~/racecar_ws/src/racecar_gazebo/scriptspython path_pursuit.py

开始进行导航
效果图:
在这里插入图片描述
在这里插入图片描述

六、搭建自己的地图进行导航

1.打开新的终端输入命令gazebo,创建新的地图模型

2.点击左上角的Edit选择Building Edit:

在这里插入图片描述

3.点击Create Walls下面的Wall进行绘制地图:

在这里插入图片描述

4.画完后点击左上角的File选择save as:

在这里插入图片描述
保存完成可以看看是否成功

5.重启gazebo,点击左上角的Insert可以看到刚刚建立的模型,点击一下拖到gazebo中:

在这里插入图片描述
这里最好把坐标轴放到我们车的起点,如图画圈处(不改也没关系,可以在启动文件里定义车模的坐标)
在这里插入图片描述
我们可以先把有小车的地图拿出来再放模型:

roslaunch racecar_gazebo racecar.launch 

这样就很简单的将小车放到模型起始位置!

6.插入锥桶,点击Insert选择Construction Cone拖入gazebo

在这里插入图片描述

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

在这里插入图片描述

8.创建launch文件,填写赛道配置参数

cd racecar_ws/src/racecar/racecar_gazebo/launch
touch myself.launch
gedit myself.launch

写入下面代码:

<?xml version="1.0"?>
<launch><!-- Launch the racecar --><include file="$(find racecar_gazebo)/launch/racecar.launch"><arg name="world_name" value="myself"/></include>
</launch>

在这里插入图片描述

9. 运行跑道模型,进行建图操作

roslaunch racecar_gazebo myself.launch

在这里插入图片描述

10. 启动slam和rviz

roslaunch racecar_gazebo slam_gmapping.launch 

在这里插入图片描述
完成之后:
在这里插入图片描述

11.保存地图

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

在这里插入图片描述
在这里插入图片描述

七、用自己的地图进行导航

1. 创建myself.launch文件,并按照前面启动文件下入代码

在这里插入图片描述

2. 启动导航和环境地图

roslaunch racecar_gazebo myselfnavigation.launch

在这里插入图片描述

3. 运行RVIZ进行手工导航

roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述

4. 利用2D Nav Goal发布目标

在这里插入图片描述

5. 启动导航脚本

rosrun racecar_gazebo path_pursuit.py或者cd ~/racecar_ws/src/racecar_gazebo/scriptspython path_pursuit.py

开始进行导航
效果图:
在这里插入图片描述
在这里插入图片描述

八、问题解决办法

1.报错控制器相关

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

2.报错driver_base相关

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

3.报错ackermann_msgs相关

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

4.报错findline.cpp找到opencv头文件

执行:得到locate OpenCVConfig.cmake你的opencv的路径

执行:gedit ~/racecar_ws/src/racecar_gazebo/CMakeLists.txt

修改第7行的路径成你的路径:set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev/)

5.报错无法创建teb_local_planner / TebLocalPlannerROS规划器

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

6.没有laser相关话题,无法建图

/ racecar_ws / src / racecar_description / urdf / racecar.gazebo在这个文件中61行改成false即可,代码已修复,直接下载没有问题的。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注