ROS智能车定位导航仿真

目录

  • 准备工作(安装配置)
    • 下载源码包
    • 安装相应插件
    • 编译
  • 开始仿真
    • 环境变量添加
    • 运行小车模型
    • 启动地图
    • 建图
    • 保存地图
    • 导航
    • 注意
  • 搭建新模型并进行自主导航
    • 搭建新模型
    • 导航
  • 参考文献

准备工作(安装配置)

下载源码包

先进入ros的工作区域

cd ~/racecar_ws/src

下载:

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

ROS智能车定位导航仿真_第1张图片
解决办法:
可以直接进入https://github.com/xmy0916/racecar.git进行下载
ROS智能车定位导航仿真_第2张图片
ROS智能车定位导航仿真_第3张图片

安装相应插件

1.driver_base

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

ROS智能车定位导航仿真_第4张图片
2.controllers

sudo apt-get install ros-melodic-gazebo-ros-control
sudo apt-get install ros-melodic-effort-controllers
sudo apt-get install ros-melodic-joint-state-controller

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

3.ackermann_msgs

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

在这里插入图片描述
4.planner

sudo apt-get install ros-melodic-global-planner
sudo apt-get install ros-melodic-teb-local-planner

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

编译

cd ~/racecar_ws
catkin_make

ROS智能车定位导航仿真_第5张图片出现的问题:
ROS智能车定位导航仿真_第6张图片
解决办法:
打开

gedit ~/catkin_ws/src/racecar-master/racecar_gazebo/CMakeLists.txt

在这里插入图片描述
修改成自己的OpenCV的位置
ROS智能车定位导航仿真_第7张图片
这个位置的确定可以采用locate OpenCVConfig.cmake查询,第一个即是
ROS智能车定位导航仿真_第8张图片
然后再编译,就成功了!
ROS智能车定位导航仿真_第9张图片这里的问题可以详细参考https://github.com/xmy0916/racecar往下拉,就可以看见可能出现的问题解决(BUG汇总)

开始仿真

环境变量添加

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

ROS智能车定位导航仿真_第10张图片

运行小车模型

roslaunch racecar_gazebo racecar.launch 

ROS智能车定位导航仿真_第11张图片
小车可以通过WASD来进行移动,在想移动的时候要点击这个tk窗口,才能进行移动操作
ROS智能车定位导航仿真_第12张图片
可以看到小车的位置,离坐标原点的位置,可以修改这个值,就可以改变小车的起始位置,如下:
(不过在这个地方不需要改变,因为源码包里面已经设计好了

但是自己在搭建模型运行的时候要注意这个问题,可以修改小车的位置也可以修改放置模型的位置,让小车在模型轨道内)
ROS智能车定位导航仿真_第13张图片

启动地图

这里采用的是源码包里面已经建立好的地图模型(我们也可以自己来创建地图模型,可以设计自己想要的样子,最后会介绍怎么建立地图模型)

roslaunch racecar_gazebo racecar_runway.launch

ROS智能车定位导航仿真_第14张图片ROS智能车定位导航仿真_第15张图片

建图

roslaunch racecar_gazebo slam_gmapping.launch

ROS智能车定位导航仿真_第16张图片进行绘图,绘图过程要注意小车的移动,小车不是很稳,小心翻车
ROS智能车定位导航仿真_第17张图片
ROS智能车定位导航仿真_第18张图片

建图完成
ROS智能车定位导航仿真_第19张图片

保存地图

rosrun map_server map_saver -f test_map

ROS智能车定位导航仿真_第20张图片
保存在主目录里面(红色框)
ROS智能车定位导航仿真_第21张图片
然后将这两个文件复制到map文件下
ROS智能车定位导航仿真_第22张图片

导航

由于前面保存的地图名字为test_map,所以这里要修改文件里面的内容
ROS智能车定位导航仿真_第23张图片
修改为保存的地图的名字

ROS智能车定位导航仿真_第24张图片
然后,启动导航和环境地图:

roslaunch racecar_gazebo racecar_runway_navigation.launch

ROS智能车定位导航仿真_第25张图片启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

ROS智能车定位导航仿真_第26张图片就打开了保存的地图,可以进行导航了
ROS智能车定位导航仿真_第27张图片用2D Nav Goal发布目标:设计小车行车轨迹
ROS智能车定位导航仿真_第28张图片
启动导航脚本

rosrun racecar_gazebo path_pursuit.py

在这里插入图片描述
开始自主导航(红线部分就是小车导航走过的路)
ROS智能车定位导航仿真_第29张图片

注意

在用2D Nav Goal发布目标的时候,要把导航路线设置好,拐角的地方要注意,不然就会出现下面的情况,就会卡在这里不动
ROS智能车定位导航仿真_第30张图片

搭建新模型并进行自主导航

搭建新模型

打开gazebo

gazebo

ROS智能车定位导航仿真_第31张图片选择
ROS智能车定位导航仿真_第32张图片
设计一个自己想要的模型

ROS智能车定位导航仿真_第33张图片

然后保存

ROS智能车定位导航仿真_第34张图片

取一个名字,保存

ROS智能车定位导航仿真_第35张图片看见已经存在了
ROS智能车定位导航仿真_第36张图片
重新打开gazebo
这里有两种方法,一种是根据这个位置,估计小车的起始位置从而来放置模型,让小车在模型内
ROS智能车定位导航仿真_第37张图片
ROS智能车定位导航仿真_第38张图片

一种是修改参数,如下:也就是小车的起始位置在坐标原点(我这里采用这种方式)
ROS智能车定位导航仿真_第39张图片
放置模型就像这样
ROS智能车定位导航仿真_第40张图片

插入障碍物(我操作这个图不是很顺畅,不过大概就是这样画)
选择这个锥桶模型
ROS智能车定位导航仿真_第41张图片
放入
ROS智能车定位导航仿真_第42张图片
保存世界文件,点击左上角File选择Save World As

ROS智能车定位导航仿真_第43张图片
然后保存在这个路径下面
ROS智能车定位导航仿真_第44张图片
然后可以新建一个launch文件,跟上面racecar_runway.launch文件一样,只是修改一下,修改成保存的test_run.world的名字
ROS智能车定位导航仿真_第45张图片

导航

然后就可以跟上面一样,进行导航了

roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch

其余步骤与上述一样
ROS智能车定位导航仿真_第46张图片
在gazebo里面我的图不太清楚,这个时候摄像头就起到了很好的作用,可以进行路况的检测,看前面是否有障碍物
ROS智能车定位导航仿真_第47张图片
建图完成,然后就是保存
ROS智能车定位导航仿真_第48张图片
保存地图

rosrun map_server map_saver -f test_run_map

ROS智能车定位导航仿真_第49张图片
然后移入map文件夹下
ROS智能车定位导航仿真_第50张图片ROS智能车定位导航仿真_第51张图片
修改地图参数,以及修改模型
ROS智能车定位导航仿真_第52张图片
ROS智能车定位导航仿真_第53张图片就完成了自主导航(红线部分就是小车导航走过的路)

注意的是,轨道模型创建的起始位置最好区别开,像我最后自己设置的模型,是个环道,起始位置没有用墙隔开,就导致在2D Nav Goal规划路线的时候,小车后面半段路程就不好画,就会有点问题存在,所以可以避免这个问题。
ROS智能车定位导航仿真_第54张图片

参考文献

1.https://blog.csdn.net/lxzysx/article/details/105346419
2.https://www.guyuehome.com/6463
3.https://github.com/xmy0916/racecar.git

你可能感兴趣的:(ros,linux,嵌入式Linux)