ROS智能车定位导航仿真

2023-10-09 04:59
文章标签 智能 仿真 ros 定位导航

本文主要是介绍ROS智能车定位导航仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

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

准备工作(安装配置)

下载源码包

先进入ros的工作区域

cd ~/racecar_ws/src

下载:

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

在这里插入图片描述
解决办法:
可以直接进入https://github.com/xmy0916/racecar.git进行下载
在这里插入图片描述
在这里插入图片描述

安装相应插件

1.driver_base

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

在这里插入图片描述
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

![在这里插入图片描述](https://img-blog.csdnimg.cn/2020063015222840.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2x4enlzeA==,size_16,color_FFFFFF,t_70出现的问题:
在这里插入图片描述
解决办法:
打开

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

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

开始仿真

环境变量添加

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

在这里插入图片描述

运行小车模型

roslaunch racecar_gazebo racecar.launch 

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

但是自己在搭建模型运行的时候要注意这个问题,可以修改小车的位置也可以修改放置模型的位置,让小车在模型轨道内)
在这里插入图片描述

启动地图

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

roslaunch racecar_gazebo racecar_runway.launch

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

建图

roslaunch racecar_gazebo slam_gmapping.launch

在这里插入图片描述进行绘图,绘图过程要注意小车的移动,小车不是很稳,小心翻车
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

建图完成
在这里插入图片描述

保存地图

rosrun map_server map_saver -f test_map

在这里插入图片描述
保存在主目录里面(红色框)
在这里插入图片描述
然后将这两个文件复制到map文件下
在这里插入图片描述

导航

由于前面保存的地图名字为test_map,所以这里要修改文件里面的内容
在这里插入图片描述
修改为保存的地图的名字

在这里插入图片描述
然后,启动导航和环境地图:

roslaunch racecar_gazebo racecar_runway_navigation.launch

在这里插入图片描述启动rviz

roslaunch racecar_gazebo racecar_rviz.launch

在这里插入图片描述就打开了保存的地图,可以进行导航了
在这里插入图片描述用2D Nav Goal发布目标:设计小车行车轨迹
在这里插入图片描述
启动导航脚本

rosrun racecar_gazebo path_pursuit.py

在这里插入图片描述
开始自主导航(红线部分就是小车导航走过的路)
在这里插入图片描述在这里插入图片描述在这里插入图片描述

注意

在用2D Nav Goal发布目标的时候,要把导航路线设置好,拐角的地方要注意,不然就会出现下面的情况,就会卡在这里不动
在这里插入图片描述

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

搭建新模型

打开gazebo

gazebo

在这里插入图片描述选择
在这里插入图片描述
设计一个自己想要的模型

在这里插入图片描述

然后保存

在这里插入图片描述

取一个名字,保存

在这里插入图片描述看见已经存在了
在这里插入图片描述
重新打开gazebo
这里有两种方法,一种是根据这个位置,估计小车的起始位置从而来放置模型,让小车在模型内
在这里插入图片描述
在这里插入图片描述

一种是修改参数,如下:也就是小车的起始位置在坐标原点(我这里采用这种方式)
在这里插入图片描述
放置模型就像这样
在这里插入图片描述

插入障碍物(我操作这个图不是很顺畅,不过大概就是这样画)
选择这个锥桶模型
在这里插入图片描述
放入

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

在这里插入图片描述
然后保存在这个路径下面
在这里插入图片描述
然后可以新建一个launch文件,跟上面racecar_runway.launch文件一样,只是修改一下,修改成保存的test_run.world的名字
在这里插入图片描述

导航

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

roslaunch racecar_gazebo test_run.launch
roslaunch racecar_gazebo slam_gmapping.launch

其余步骤与上述一样
在这里插入图片描述
在gazebo里面我的图不太清楚,这个时候摄像头就起到了很好的作用,可以进行路况的检测,看前面是否有障碍物
在这里插入图片描述
建图完成,然后就是保存
在这里插入图片描述
保存地图

rosrun map_server map_saver -f test_run_map

在这里插入图片描述
然后移入map文件夹下
在这里插入图片描述在这里插入图片描述
修改地图参数,以及修改模型
在这里插入图片描述
在这里插入图片描述就完成了自主导航(红线部分就是小车导航走过的路)

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

参考文献

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

这篇关于ROS智能车定位导航仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/lxzysx/article/details/107042352
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/170525

相关文章

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

使用Python实现表格字段智能去重

《使用Python实现表格字段智能去重》在数据分析和处理过程中,数据清洗是一个至关重要的步骤,其中字段去重是一个常见且关键的任务,下面我们看看如何使用Python进行表格字段智能去重吧... 目录一、引言二、数据重复问题的常见场景与影响三、python在数据清洗中的优势四、基于Python的表格字段智能去重

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

Spring AI与DeepSeek实战一之快速打造智能对话应用

《SpringAI与DeepSeek实战一之快速打造智能对话应用》本文详细介绍了如何通过SpringAI框架集成DeepSeek大模型,实现普通对话和流式对话功能,步骤包括申请API-KEY、项目搭... 目录一、概述二、申请DeepSeek的API-KEY三、项目搭建3.1. 开发环境要求3.2. mav

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设