ROS机器人虚拟仿真挑战赛持续学习笔记-20240619

cartographer

需要全手工编译……比较麻烦。

如果使用新版ceres-solver,版本2.x,需要修改源码,部分“接口代码”有改动。

稳妥使用ceres-solver-1.13.0,且需要安装abseil-cpp。

验证是否成功,使用roscd或roslaunch,查看一下是否有对于功能包:


map

只有room_mini和tianracer_racetrack.pgm提供了“原装”地图。

没有提供地图的world需要建图之后才能更好的导航,或者选用行为式控制器,而非路径算法类规划器。跑圈算法可分为有地图和无地图两种:

  1. 有地图-需要SLAM了……/(ㄒoㄒ)/~~
  2. 无地图-后续有空再写

 /(ㄒoㄒ)/~~

此处省略……

原版参数:

image: room_mini.pgm
resolution: 0.050000
origin: [-50.000000, -50.000000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196
image: tianracer_racetrack.pgm
resolution: 0.025000
origin: [-12.200000, -12.500000, 0.0000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196

新环境均为大图,参考tianracer_racetrack.yaml参数。


源码地址:

要注意使用raicom分支。

过往学习笔记:

ROS机器人虚拟仿真挑战赛学习笔记_无人车竞速仿真-CSDN博客


SLAM

为了使用ROS Racecar仿真更好地建立SLAM地图以用于导航,可以按照以下步骤进行:

  1. 准备工作
    • 确保已经正确安装了ROS和相关的依赖包。
    • 创建一个ROS工作空间,并下载或编写所需的Racecar仿真代码。
  2. 启动仿真环境
    • 设置环境变量,确保ROS环境能够正确运行。
    • 使用roslaunch命令启动Racecar的仿真环境。
  3. 启动SLAM建图
    • 在仿真环境中,启动SLAM算法(如gmapping)来构建地图。这通常涉及运行一个SLAM节点,该节点将使用激光雷达(或其他传感器)数据来创建环境的2D地图。
    • 同时,启动rviz(ROS Visualization)来可视化建图过程。
  4. 控制车辆进行建图
    • 通过键盘控制或其他控制方式(如遥控器、游戏手柄等)手动驾驶Racecar在仿真环境中移动。
    • 确保车辆遍历整个环境,以便SLAM算法能够捕捉到所有必要的特征并构建完整的地图。
  5. 保存和优化地图
    • 当车辆遍历完整个环境后,停止SLAM建图过程,并保存生成的地图文件。
    • 可以使用地图优化工具(如map_server的map_saver节点)来保存和优化地图,以提高其质量和准确性。
  6. 验证和使用地图
    • 加载保存的地图到导航系统中,并进行测试以验证其准确性和可用性。
    • 如果地图质量不佳或存在错误,可以重复上述步骤进行修正和优化。
  7. 注意事项
    • 在建图过程中,确保仿真环境的设置与实际环境相匹配,包括传感器配置、障碍物布局等。
    • 调整SLAM算法的参数以适应不同的环境和传感器特性,以获得最佳的建图效果。
    • 定期更新和维护地图,以适应环境中的变化。

通过以上步骤,你可以更好地在ROS Racecar仿真中建立SLAM地图,并将其用于导航任务。

当提到建图算法时,虽然Gmapping在某些情况下可能表现不够理想,但确实存在其他更先进的建图算法可供选择。以下是一些推荐的建图算法,它们在不同的环境和应用场景下具有出色的性能:

  1. Cartographer
    • 特点:基于图优化的激光SLAM算法,能够生成高质量的二维和三维地图。
    • 优势:通过扫描匹配(scan-matching)和子图(submaps)的概念,Cartographer能够在实时性和准确性之间取得良好的平衡。它适用于各种室内和室外环境,并且具有较低的计算资源需求。
    • 应用场景:广泛应用于机器人导航、无人驾驶等领域。
  2. Hector SLAM
    • 特点:一种适用于激光扫描仪的SLAM算法,它基于高斯-牛顿法解决scan-matching问题。
    • 优势:Hector SLAM不需要依赖里程计数据,因此在某些没有准确里程计信息的应用场景中表现出色。它使用多分辨率地图来避免局部最小解,并提高建图精度。
    • 注意事项:对传感器噪声和机器人速度有一定要求,需要在相对静态和特征丰富的环境中进行建图。
  3. ORB-SLAM
    • 特点:一种基于视觉的SLAM算法,使用ORB(Oriented FAST and Rotated BRIEF)特征点进行定位和建图。
    • 优势:ORB-SLAM能够在室内外环境中工作,并且具有较高的鲁棒性和准确性。它支持单目、双目和RGB-D相机,并且支持回环检测和重定位功能。
    • 应用场景:适用于需要视觉信息的导航和定位任务。
  4. LSD-SLAM
    • 特点:一种直接法的视觉SLAM算法,基于半稠密地图表示。
    • 优势:LSD-SLAM能够在光照变化较大的环境中工作,并且能够处理动态物体。它生成的地图包含丰富的几何信息,适用于需要高精度导航的应用场景。
    • 注意事项:计算资源需求较高,实时性可能受到一定影响。
  5. DSO(Direct Sparse Odometry)
    • 特点:一种基于稀疏直接法的视觉里程计算法,它直接对图像像素进行操作,不需要特征点提取和描述子匹配。
    • 优势:DSO具有较高的鲁棒性和准确性,能够在纹理较少或光照变化较大的环境中工作。它适用于高速运动和动态环境下的视觉定位。
    • 应用场景:无人机、自动驾驶汽车等需要高速、准确视觉定位的应用场景。

总结

在选择建图算法时,需要根据具体的应用场景和需求进行权衡。对于需要高精度定位和导航的应用场景,Cartographer和ORB-SLAM是不错的选择。对于没有准确里程计信息或需要处理动态物体的场景,Hector SLAM和LSD-SLAM可能更适合。而对于需要高速、准确视觉定位的应用场景,DSO可能是一个更好的选择。同时,还需要考虑计算资源的需求和实时性的要求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/855558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步步教你用Python Selenium抓取动态网页任意行数据

引言 在现代网络中,动态网页越来越普遍,这使得数据抓取变得更具挑战性。传统的静态网页抓取方法在处理动态内容时往往力不从心。本文将详细介绍如何使用Python Selenium抓取动态网页中的任意行数据,并结合代理IP技术以提高抓取的成功率和效率…

STM32CubeIDE对STM32F072进行ADC配置及使用

目录 1. 配置2. 时钟3. ADC配置4. 代码补充 1. 配置 引脚配置:PB0 2. 时钟 都是48MHz 3. ADC配置 ADC配置: 开启中断: 4. 代码补充 轮训ADC采样: HAL_ADC_PollForConversion(&hadc,10);ADC采样: HAL_ADC_Start (&a…

LoReFT——大语言模型的表示微调

引言 参数高效的微调或 PeFT 方法寻求通过更新少量权重来适应大型语言模型。然而,大多数现有的可解释性工作已经证明,表示编码了丰富的语义信息,这表明它可能是编辑这些表示的更好、更强大的替代方案。预先训练的大型模型通常经过微调以用于…

tedsign vue3 web-端框架中封装一个验证码组件 以及对应node 接口逻辑说明

一个这样的组件 我直接上代码了 <template><t-loading size"small" :loading"loading" show-overlay><div class"container" click"refresh"><div v-if"svg" class"svg" v-html"svg&…

解锁LLMs的“思考”能力:Chain-of-Thought(CoT) 技术推动复杂推理的新发展

1.简介 Chain-of-Thought(CoT)是一种改进的Prompt技术&#xff0c;目的在于提升大模型LLMs在复杂推理任务上的表现&#xff0c;如算术推理&#xff08;arithmetic reasoning&#xff09;、常识推理&#xff08;commonsense reasoning&#xff09;、符号推理&#xff08;symbol…

数据结构--顺序表(图文)

顺序表的概念和特点 顺序表是一种线性数据结构&#xff0c;它由一组数据元素构成&#xff0c;这些元素具有相同的特性&#xff0c;并按照一定的顺序排列。在顺序表中&#xff0c;数据元素通常存储在连续的内存空间中&#xff0c;这使得通过索引可以直接访问到表中的任意元素。…

tiaoshixitong

data_interval : 当是ubus 时 重新赋值为 3&#xff1b;当是ws 时 重新赋值为 20&#xff1b; 1. 如何理解data_tik &#xff1f; 在函数can_packet_check_timer 定时can发送函数里面&#xff0c;data_tik 作为倒计时时间&#xff0c;当倒计时间到&#xff0c;则发送。…

Nuxt3页面开发实战探索

title: Nuxt3页面开发实战探索 date: 2024/6/19 updated: 2024/6/19 author: cmdragon excerpt: 摘要&#xff1a;这篇文章是关于Nuxt3页面开发实战探索的。它介绍了Nuxt3的基础入门&#xff0c;安装与配置&#xff0c;项目结构&#xff0c;内置组件与功能&#xff0c;以及页…

笔记本Win + v剪贴板打开失效问题解决

使用快捷键winv打开剪贴板时&#xff0c;突然没有了反应&#xff0c;原因是explorer.exe程序占用了winv键。解决方法&#xff1a; 1、管理员身份运行powershell 2、先杀掉explorer.exe程序&#xff1a;taskkill /f /im explorer.exe 3、重启explorer.exe程序 4、再使用winv …

变声方法大公开,变女声很自然的3款变声器推荐,值得收藏

将男声变成女声并且要很自然的变声器有吗&#xff1f;很多喜欢玩游戏的小伙伴们在进行游戏连麦时&#xff0c;可能为了增加趣味&#xff0c;想要试试变成女声来交流&#xff0c;或者喜欢视频剪辑创作的小伙伴们在进行视频配音时&#xff0c;不想用自己的声音出镜&#xff0c;需…

市值飙升!超微软、苹果,英伟达成为全球市值最高上市公司

KlipC报道&#xff1a;当地时间6月18日&#xff0c;英伟达股价再度大涨&#xff0c;盘后股价上涨3.51%&#xff0c;总市值达3.335万亿美元&#xff0c;报135.58美元再刷历史新高&#xff0c;超微软、苹果成为全球市值最高的上市公司。 值得一提的是&#xff0c;在本月初&#x…

vue3面试题八股集合——2024

vue3比vue2有什么优势&#xff1f; 性能更好&#xff0c;打包体积更小&#xff0c;更好的ts支持&#xff0c;更好的代码组织&#xff0c;更好的逻辑抽离&#xff0c;更多的新功能 描述Vu3生命周期 Options API的生命周期&#xff1a; beforeCreate: 在实例初始化之后、数据观…

Linux top 命令使用教程

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/139775547 文章目录 一、top 是什么二、top的基础语法三、top输出信息解读 一、top 是什么 Linux top 是一个在Linux和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时…

云计算【第一阶段(16)】安装及管理程序

目录 一、linux 应用程序基础 1.1、应用程序与系统命令的关系 1.2、典型应用程序的目录结构 1.3、常见的软件包封装类型 二、RPM软件包管理工具 2.1、rpm命令的格式 2.2、安装&#xff0c;升级&#xff0c;卸载 rpm软件包 安装软件包 升级软件包 卸载软件包 查询软件…

Android OTA 升级基础知识详解+源码分析

前言&#xff1a; 本文仅仅对OTA升级的几种方式的概念和运用进行总结&#xff0c;仅在使用层面对其解释。需要更详细的内容我推荐大神做的全网最详细的讲解&#xff1a; https://blog.csdn.net/guyongqiangx/article/details/129019303?spm1001.2014.3001.5502 三种升级方式…

前端高级架构师课程(总共111门课程,1150GB)

由阿里P8前端架构师亲自精心筛选整理的全网最新最具价值的前端进阶学习课程&#xff01; 培训机构原版教程&#xff01; 课程知识点和一线大厂完美匹配&#xff01; 所有课程资源完整成套&#xff0c;不残缺&#xff0c;不拼凑&#xff0c;不拆开乱发&#xff01; 这系列课程包…

JavaScript-拓展简单和引用数据类型

学习目标&#xff1a; 掌握拓展简单和引用数据类型 学习内容&#xff1a; 拓展-术语解释拓展-基本数据类型和引用数据类型 拓展-术语解释&#xff1a; 拓展-基本数据类型和引用数据类型&#xff1a; 简单类型又叫做基本数据类型或者值类型&#xff0c;复杂类型又叫做引用类型…

如何快速在一台新电脑上安装 Python 环境

一、下载miniconda 1.下载 我们可以在清华大学开源软件镜像站下载最新版本的miniconda。如&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py38_4.9.2-Windows-x86_64.exe 2.安装 双击exe文件安装&#xff0c;如果没有特殊的需求&#x…

UML详解

1.what is the UML UML 全称是 Unified Modeling Language&#xff08;统一建模语言&#xff09;&#xff0c;它以图形的方式来描述软件的概念 2.它存在的目的 UML 的目标是通过一定结构的表达&#xff0c;来解决现实世界到软件世界的沟通问题。 3.什么是模&#xff0c;…

127.0.0.1与本机IP地址的区别

大家好&#xff0c;今天我们来聊聊一个在网络世界中常常被提及&#xff0c;但可能对于非专业人士来说还有些模糊的概念——127.0.0.1与本机IP地址。这两个地址在网络通信中都扮演着重要的角色&#xff0c;但它们之间又有着怎样的区别呢&#xff1f;让我们一起来探究一下。 一、…