大小论文over,坐等毕业。写点ROS上建图与导航的心得,也不知道对错,欢迎讨论~(对,谨慎阅读,不存在误人子弟哈~.~)

news2024/11/24 3:32:23

       大小论文总算是都搞定了,院审过了送外审了,生死有命富贵在天,希望外审专家大佬们高抬贵手o.O~

       我所理解的建图算法的移植,能不能运行起来,大框架上就是把一棵完整的坐标转换关系的TF树给整理“通顺”,TF(Transform)树是用于描述不同坐标系之间转换关系的一种数据结构,它包括了位置和姿态两个方面的变换。在机器人系统中,每个部件(如关节、连杆等)都有一个对应的坐标系,这些坐标系之间的关系通过TF树进行维护。 用常用的坐标系框架REP-105来讲,就是把earth、map、odom、base_link、lase/imu等坐标系转换关系给拼接明白。(关于REP-105坐标系框架的理解是在上一篇文章中已经进行了讲解,详情请移步至这一篇文章~:ROS建图之ROS标准REP-105(官方搬运翻译+个人理解)-CSDN博客)

1 tf树

        在REP-105标准中,我们可以看这样一张框架流程图,这张流程图把最基础的坐标系关系描述了出来,再次提醒,尽管在理解中我们会认为map 和 odom 坐标系都应该相对于机器人而言,即被附加到 base_link坐标系上,但实际的map 帧是 odom 的父帧, odom 是 base_link 的父帧。因为每个帧只能有一个父帧。

       每个帧只能有一个父帧,但并不一定只有唯一子帧。这也是叫tf树的原因之一吧,比如在多机器人(我的硕士课题:多机器人SLAM建图与路径规划)中,多机器人的简易tf树如下:

       两个机器人使用不同的地图进行定位,并具有共同的帧 earth 。为了区分不同机器人的不同坐标系,每一帧的坐标系取用了不同的ID。如何保证最大限度地提高可重用性呢?官方建议在每个robot上使用规范帧id,并使用脚本从robot转发信息。当信息被转发时,帧id应该被重新映射,以消除它们来自和参考的机器人的歧义。

2 tf树节点的数据来源

       tf树中各个帧坐标系的转换是怎么来得呢?以下是一些概括性的信息。

2.1 odom 到 base_link

       从 odom 到 base_link 的变换由里程计源之一计算和广播。详细的方法和代码见鱼香ROS的教程::动手学ROS2Descriptionicon-default.png?t=N7T8https://fishros.com/d2lros2/#/humble/chapt17/slam/3.%E5%BB%BA%E5%9B%BE%E5%89%8D%E5%87%86%E5%A4%872-%E5%8F%91%E5%B8%83odom%E7%9A%84TF

2.2 map 到 base_link 

       从 map 到 base_link 的变换由本地化组件计算。然而,本地化组件不广播从 map到base_link的变换。相反,它首先接收从 odom 到 base_link 的变换,并且使用该信息来广播从map到odom的变换。而刚刚我们获取到了odom到base_link的tf,咦,是不是直接接上了~

2.3 earth到map

       从 earth 到 map 的变换是静态发布的,并且通过选择地图框架来配置。如果未特别配置,则后退位置将使用车辆的初始位置作为地图框的原点。如果地图未被地理配准以支持简单静态变换,则定位模块可以遵循与用于发布从 map 到 odom 帧的估计偏移相同的过程来发布从earth到map帧的变换。 

3 结束

       最后其实还有个机器人坐标系和雷达等传感器的坐标系转换,即base_link 到 雷达或者IMU 之间的坐标转换,这个关系一般使用URDF进行描述,然后使用 robot_state_publisher 进行发布,也可以使用静态TF直接发布。

       至此,机器人建图的完整tf树就连接上了,进行相应步骤的相关实现,最后使用cartorgpher等算法,或者slam_toolbox等建图工具包完成数据的处理与传输,建图功能基本就实现了~

       刚开始进行长篇博客的叙述,技术上和逻辑上问题很大,大家看一乐呵~

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

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

相关文章

一文搞懂Git版本工具常用的操作命令

简述 Git是一个分布式的版本控制工具,其在使用上要比SVN等版本控制工具稍显复杂。为了便于理解,本文通过图文方式详细介绍Git的使用,以便于快速掌握Git。Git涉及的主要概念和命令如图所示。理解上述概念后,基本可以使用Git完成日常开发工作。关于Git的介绍以及常用命令在之前的…

RK3568驱动指南|第十篇 热插拔-第116章netlink监听广播信息实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

CES 2024:AI智能大爆发,引领科技新纪元

美国当地时间1月9日,2024年国际消费类电子产品展览会(CES)如期在内华达州拉斯维加斯举行。作为全球最盛大的科技盛会,每年,来自世界各地的顶尖科技企业都会参加CES,展示他们的最新科技产品和创新&#xff0…

Python的安装与卸载【Windows系统】

在 Windows 上安装与卸载 Python Python的安装 下载Python 安装Python 下载完后打开安装包 注意最底下的"Add Python 3.8 to Path"(将Python加入环境变量)一定要勾选!!!这样就可以免去之后环境配置的烦恼…

在本地测试nginx中localhost不行,需要写成127.0.0.1

在Windows 10系统的命令提示符cmd中,执行命令ping localhost,并没有出现我与其的ip地址“127.0.0.1”,而是“[::1]”。 问题原因 在cmd中ping localhost解析出来的是ipv6的::1的原因是windows有个优先解析列表,当ipv6的优先级高于…

【cmu15445c++入门】(4)c++中的模板方法

一、template模板方法 模板方法是c的一个特性,可以让你的代码在不指定数据类型的情况下,运行不同的数据类型。 你可以创建模板方法和模板类,本文讨论模板方法。 二、代码 // Includes std::cout (printing) for demo purposes. #include &…

4S店汽车行业万能通用小程序源码系统:功能强大,集合汽车在线展示+在线预约+贷款计算器......附带完整的搭建教程

在移动互联网高速发展的今天,越来越多的消费者选择通过手机端了解汽车信息、预约试驾、计算贷款等。4S店需要紧跟时代步伐,提供更加便捷、高效的服务。因此,开发一款集合汽车在线展示、在线预约、贷款计算器等多项功能的通用小程序成为市场趋…

数据结构02附录02:哈希表[C++]

图源:文心一言 上机题目练习整理~🥝🥝 本篇作为线性表的代码补充,每道题提供了优解和暴力解算法,供小伙伴们参考~🥝🥝 第1版:在力扣新手村刷题的记录,优解是Bard老师提…

语义补全任务2023年论文总结

一、3D Semantic Scene Completion: a Survey 语义场景补全SSC旨在联合估计出一个场景完整的几何和语义信息,假设只需要部分稀疏输入数据。 1、数据集 2、场景表示 Point Cloud,点云是一种方便的、记忆高效的表示方法,它将三维连续世界中的…

网站怎么做google搜索引擎优化?

网站想做google搜索引擎优化,作为大前提,您必须确保网站本身符合google规范,我们不少客户实际上就连这点都无法做到 有不少客户公司自己本身有技术,就自己弄一个网站出来,做网站本身不是难事,但前提是您需要…

OpenShift 4 - 在 OpenShift 上运行物体检测 AI 应用

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.14 RHODS 2.5.0 的环境中验证 说明:请先根据《OpenShift 4 - 部署 OpenShift AI 环境,运行 AI/ML 应用(视频)》一文完成 OpenShift AI 环境…

基于k8s Deployment的弹性扩缩容及滚动发布机制详解

k8s第一个重要设计思想:控制器模式。k8s里第一个控制器模式的完整实现:Deployment。它实现了k8s一大重要功能:Pod的“水平扩展/收缩”(horizontal scaling out/in)。该功能从PaaS时代开始就是一个平台级项目必备编排能…

Kali改变为中文

更新kali源之后【如果没有更新,可以参考我的Kakli更新源】。 执行下面的命令: # apt-get update && apt-get upgrade && apt-get clean # dpkg-reconfigure locales 如果没有权限?可以通过sudo命令进行授权 1、先取消英文&…

KT6368A双模蓝牙芯片批量生产使用主机芯片KT6358M测试很方便

一、简介 KT6368A双模蓝牙芯片批量生产使用主机芯片测试很方便 KT6368A批量生产怎么办?不可能用手机一个一个的去连吧,太慢了 别慌,这个问题,我们早就考虑清楚了,答案如下,分为两个方法: 详细…

2024数字安全十大技术趋势预测,不容忽视!

2023年是技术爆发的一年,ChatGPT、量子计算、常温超导体争相刷新眼球;2023年是风云变幻的一年,局部战争、网络战、全球经济震荡交替冲击……无数个值得记忆的瞬间,都对网络安全行业产生着深远影响。 通过观察2023年的国际国内环境…

路由器实验总结(静态路由配置)

1、静态路由的配置 R2(config)#int s0/0/0 R2(config)#ip add 192.168.3.2 255.255.255.0 R2(config)# no shut R1(config)#int s0/0/0 R1(config)#ip add 192.168.3.1 255.255.255.0 R1(config)# no shut串口的配置是这样的,静态路由如下: R2(config)#…

项目经理快速晋升应当具备的四个能力

项目的成功与失败都直接压在项目经理的肩上。不论问题的根源在何处,最终承担责任的总是项目经理。身为项目经理,你务必清楚,自己背负的是何等的重任。 1、计划能力 计划是行动的灯塔,若管理者无法制定计划,又如何引…

低功耗智能雨量监测站现代化雨水情监测网络

低功耗智能雨量监测站现代化雨水情监测网络产品概述 低功耗雨量监测站基于传感技术、无线通信、处理与控制等物联网技术的开发,利用传感技术,通过传感器测量降雨量,并使用物联网进行传输。无需专门的通信线路,在联网的状态下&…

vscode 创建文件自动添加注释信息

随机记录 目录 1. 背景介绍 2. "Docstring Generator"扩展 2.1 安装 2.2 设置注释信息 3. 自动配置py 文件头注释 1. 背景介绍 在VS Code中,您可以使用扩展来为新创建的Python文件自动添加头部注释信息。有几个常用的扩展可以实现此功能&#xff0…

VUE element-ui实现表格动态展示、动态删减列、动态排序、动态搜索条件配置

1、实现效果 1.1、文件目录 1.2、说明 1、本组件支持列表的表头自定义配置,checkbox实现 2、本组件支持列表列排序,vuedraggable是拖拽插件,上图中字段管理里的拖拽效果 ,需要的话请自行npm install 3、本组件支持查询条件动态…