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可能是一个更好的选择。同时,还需要考虑计算资源的需求和实时性的要求。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言| 数组元素的删除

同数组元素的插入差不多。 数组元素的插入,是先移动要插入元素位置后面的所有元素,再插入新元素,长度1。 C语言| 数组的插入-CSDN博客 数组元素的删除,是先删除元素,再把后面的元素往前移动一位,而本程序…

三国之家网站的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,论坛管理,公告管理,三国视频管理,基础数据管理,三国图文管理 前台账户功能包括:系统首页,个人中心&#…

2.树莓派4b+ubuntu18.04(ros版本melodic)+arduino mega自制两轮差速小车,实现建图导航功能

这篇文章介绍arduino使用和安装arduino_bridge 将arduino与树莓派连接 查看arduino的端口号,我们这里查看到的时ttyUSB0 ll /dev/ttyUSB*将当前用户添加进dialout组 sudo usermod -a -G dialout your_user_name然后重启树莓派,然后才能生效 然后如果你…

“Driver not loaded“问题解决方案

这两天又碰到了离谱的,愚蠢的,莫名其妙的,丧尽天良的错误。 之前已经解决过这个问题。这几天又碰上了,明明都已经把相应的dll放到了exe的同级目录,NND还是有问题!!!卡了我一个晚上加…

Linux C/C++ socket函数

目录 socket函数 函数原型 头文件 功能 返回值 参数 错误码 socket函数 函数原型 int socket(int domain, int type, int protocol); 头文件 #include <sys/types.h> #include <sys/socket.h> 功能 创建一个用于通信的端点&#xff0c;并返回一个文件描述符…

tensorRT C++使用pt转engine模型进行推理

目录 1. 前言2. 模型转换3. 修改Binding4. 修改后处理 1. 前言 本文不讲tensorRT的推理流程&#xff0c;因为这种文章很多&#xff0c;这里着重讲从标准yolov5的tensort推理代码&#xff08;模型转pt->wts->engine&#xff09;改造成TPH-yolov5&#xff08;pt->onnx-…

Linux - 探秘 Linux 的 /proc/sys/vm 常见核心配置

文章目录 PreLinux 的 /proc/sys/vm 简述什么是 /proc/sys/vm&#xff1f;主要的配置文件及其用途参数调整对系统的影响dirty_background_ratio 和 dirty_ratioswappinessovercommit_memory 和 overcommit_ratiomin_free_kbytes 实例与使用建议调整 swappiness设置 min_free_kb…

6.XSS-钓鱼攻击展示(存储型xss)

xss钓鱼演示 钓鱼攻击利用页面 D:\phpStudy\WWW\pikachu\pkxss\xfish 修改配置文件里面对应自己的入侵者的IP地址或者域名&#xff0c;对应的路径下的fish.php脚本如下&#xff1a; <?php error_reporting(0); // var_dump($_SERVER); if ((!isset($_SERVER[PHP_AUTH_USE…

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测

分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测 目录 分类预测 | Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现GWO-CNN-SVM灰狼冰算法优化卷积支持向量机分类预测&…

嵌入式学习——数据结构(队列)——day50

1. 查找二叉树、搜索二叉树、平衡二叉树 2. 哈希表——人的身份证——哈希函数 3. 哈希冲突、哈希矛盾 4. 哈希代码 4.1 创建哈希表 4.2 5. 算法设计 5.1 正确性 5.2 可读性&#xff08;高内聚、低耦合&#xff09; 5.3 健壮性 5.4 高效率&#xff08;时间复杂度&am…

线程封装,互斥

文章目录 线程封装线程互斥加锁、解锁认识接口解决问题理解锁 线程封装 C/C代码混编引起的问题 此处pthread_create函数要求传入参数为void * func(void * )类型,按理来说ThreadRoutine满足,但是 这是在内类完成封装,所以ThreadRoutine函数实际是两个参数,第一个参数Thread* …

Python | Leetcode Python题解之第174题地下城游戏

题目&#xff1a; 题解&#xff1a; class Solution:def calculateMinimumHP(self, dungeon: List[List[int]]) -> int:n, m len(dungeon), len(dungeon[0])BIG 10**9dp [[BIG] * (m 1) for _ in range(n 1)]dp[n][m - 1] dp[n - 1][m] 1for i in range(n - 1, -1, …

Redis的实战常用一、验证码登录(解决session共享问题)(思路、意识)

一、基于session实现登录功能 第一步&#xff1a;发送验证码&#xff1a; 用户在提交手机号后&#xff0c;会校验手机号是否合法&#xff1a; 如果不合法&#xff0c;则要求用户重新输入手机号如果手机号合法&#xff0c;后台此时生成对应的验证码&#xff0c;同时将验证码进行…

C语言 | Leetcode C语言题解之第187题重复的DNA序列

题目&#xff1a; 题解&#xff1a; #define MAXSIZE 769/* 选取一个质数即可 */ typedef struct Node {char string[101];int index;struct Node *next; //保存链表表头 } List;typedef struct {List *hashHead[MAXSIZE];//定义哈希数组的大小 } MyHashMap;List * …

【百问大模型02】一文讲透RAG实战全解析

1.实时性无法更新&#xff0c;知识容易自相矛盾 2.大模型的缺点有哪些&#xff1f; 3.一个人的能力可以分为两种&#xff1a; 1&#xff09;大模型&#xff1a;推理能力&#xff0c;聪明&#xff0c;知识&#xff1b;很聪明但是缺少知识 2&#xff09;知识库&#xff1a;辅…

第一个Flask程序

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 一切准备就绪&#xff0c;现在我们开始编写第一个Flask程序&#xff0c;由于是第一个Flask程序&#xff0c;当然要从最简单的“Hello World&#xff…

打印机状态显示错误是什么原因?这5个有效方法要记好!

打印机是现代办公中不可或缺的设备之一&#xff0c;但在使用过程中&#xff0c;打印机状态显示错误是一个常见的问题。本文将详细探讨打印机状态显示错误的原因及其解决方法。 摘要 打印机状态显示错误的原因及解决方法如下&#xff1a; 1、网络连接问题&#xff1a;原因&…

【python】python基于微博互动数据的用户类型预测(随机森林与支持向量机的比较分析)(源码+数据集+课程论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

皇河将相董事长程灯虎出席第二十四届世纪大采风并获奖

仲夏时节,西子湖畔。第二十四届世纪大采风品牌人物年度盛典于6月16日至17日在杭州东方文化园隆重举行。本届盛典由亿央网、《华夏英才》电视栏目联合多家媒体共同主办,中世采文化发展集团承办,意尔康股份有限公司、宸咏集团协办,汇聚了来自全国政、商、产、学、研、媒等各界代表…

图像编辑技术的新篇章:基于扩散模型的综述

在人工智能的浪潮中&#xff0c;图像编辑技术正经历着前所未有的变革。随着数字媒体、广告、娱乐和科学研究等领域对高质量图像编辑需求的不断增长&#xff0c;传统的图像编辑方法已逐渐无法满足日益复杂的视觉内容创作需求。尤其是在AI生成内容&#xff08;AIGC&#xff09;的…