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

       大小论文总算是都搞定了,院审过了送外审了,生死有命富贵在天,希望外审专家大佬们高抬贵手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等建图工具包完成数据的处理与传输,建图功能基本就实现了~

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

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

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

相关文章

springboot3(二、StreamAPI)

文章目录 一、StreamAPI1.介绍2.代码示例 二、基本用法1.创建流2.流并发3.流并发问题 三、流方法1.中间操作2.终止操作 一、StreamAPI StreamAPI这种函数式编程是声明式编程,声明式编程是一种编程范式,它着重于描述问题的"是什么"&#xff0c…

深入理解.NET框架中的CLR(公共语言运行时)

深入理解.NET框架中的CLR(公共语言运行时) 引言 .NET框架中的CLR(公共语言运行时)是.NET应用程序运行的核心。本文将继续探索CLR的核心功能,并详细介绍.NET程序启动时是如何自动加载关键的库和服务来提供这些功能的。…

初识QT。

文章目录 前言一、QWidget1、了解内容main文件中的基本内容。.pro项目文件的内容。mywidget.h文件内容。命名规范和快捷键Qt助手 2、button按钮3、对象树4、信号和槽5、自定义信号和槽函数拓展 6、Lambda表达式7、练习 二、QMainWindow1、菜单栏和菜单项2、工具栏3、状态栏4、铆…

适用于安防 音响 车载等产品中中的音频接口选型分析

在人工智能兴起之后,安防市场就成为了其全球最大的市场,也是成功落地的最主要场景之一。对于安防应用而言,智慧摄像头、智慧交通、智慧城市等概念的不断涌现,对于芯片产业催生出海量需求。今天,我将为大家梳理GLOBALCH…

启用Hyper-V的三种方法,总有一种适合你

想在Windows 10计算机上的虚拟机中安装并运行Linux或更早版本的Windows操作系统吗?你将很高兴知道,你不需要第三方虚拟化软件(如VirtualBox)来在Windows 10上安装和运行Linux和Windows。 Windows 10中的内置Hyper-V工具允许你创建…

Android Studio 实现飞机大战游戏App

🍅文章末尾有获取完整项目源码方式🍅 目录 前言 一、运行演示 二、开发环境 三、完成步骤 步骤 1:创建项目 步骤 2:创建包名 步骤 3:实现启动页 步骤 5:实现用户注册 步骤 6:实现用户登…

逃离支原体又陷入流感 | 揭秘呼吸道感染与肠道菌群的隐秘关联

谷禾健康 成人每年大约会患上两到三次普通感冒,儿童每年可能会患上多达八次。而今年尤为显著,各大医院的儿科还是爆满状态,甚至是一号难求。 肺炎支原体感染还没彻底过去,紧接着流感和其他呼吸道病原体感染又跟来了,医…

ffmpeg写YUV420文件碰到阶梯型横线或者条纹状画面的原因和解决办法

版权声明:本文为CSDN博主「文三~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/asdasfdgdhh/article/details/112831581 留作备份 阶梯型横线: 条纹状画面…

vue前端开发自学,父子组件之间的数据传递demo

vue前端开发自学,父子组件之间的数据传递demo!下面为大家展示的是&#xff0c;vue开发中常见的&#xff0c;父子级别关系的&#xff0c;数据 传递案例。先给大家看一下&#xff0c;源码&#xff0c;然后讲解一下里面的注意事项。 <template><h3>Parent</h3>…

耐高压达林顿输出光隔离器TLP187(TPL,E(O 功能介绍及其应用

TLP187(TPL,E(O 是一款达林顿晶体管耦合器&#xff0c;它因采用了 SO6封装而实现了外形的小巧化&#xff0c;也可以保证高温运转的可行性 &#xff08;Ta110degG最大值)。TLP187可以取代其前一代产品&#xff0c;即现有的TIP127型号。该产品的的焊盘尺寸与现有的MFSOP时装参考尺…

ajax+axios——统一设置请求头参数——添加请求头入参——基础积累

最近在写后台管理系统&#xff08;我怎么一直都只写管理系统啊啊啊啊啊啊啊&#xff09;&#xff0c;遇到一个需求&#xff0c;就是要在原有系统的基础上&#xff0c;添加一个仓库的切换&#xff0c;并且需要把选中仓库对应的id以请求头参数的形式传递到每一个接口当中。。。 …

启动redis出现Creating Server TCP listening socket 127.0.0.1:6379: bind: No error异常

1.进入redis安装目录&#xff0c;地址栏输入cmd 2.输入命令 redis-server.exe redis.windows.conf redis启动失败 解决&#xff0c;输入命令 #第一步 redis-cli.exe#第二步 shutdown#第三步 exit第四步 redis-server.exe redis.windows.conf 显示以下图标即成功

【论文阅读】Deep Graph Infomax

目录 0、基本信息1、研究动机2、创新点2.1、核心思想&#xff1a;2.2、思想推导&#xff1a; 3、准备3.1、符号3.2、互信息3.3、JS散度3.4、Deep InfoMax方法3.5、判别器&#xff1a;f-GAN估计散度 4、具体实现4.1、局部-全局互信息最大化4.2、理论动机 5、实验设置5.1、直推式…

Linux第25步_在虚拟机中备份“ST官方的TF-A源码”

TF-A是ARM公司提供的&#xff0c;ST公司通过修改它&#xff0c;做了一个自己的TF-A代码。因为在后期开发中&#xff0c;若硬件被改变了&#xff0c;我们需要通过修改"ST官方的TF-A源码"就可以自己的TF-A代码了。为了防止源文件被误改了&#xff0c;我们需要将"S…

Linux安装MongoDB教程

下载MongoDB安装包 1、官网地址; 下载链接 选择版本 下载好了之后上传到服务器开始安装。 解压 解压 mongodb-linux-x86_64-rhel70-4.2.23.tgz 文件&#xff1a; 解压文件必须进入到压缩包所在的目录&#xff1a; cd /usr/local tar -zxvf mongodb-linux-x86_64-rhel70-4…

HDFS读写数据流程、NameNode与DataNode工作机制

文章目录 HDFS 写数据流程HDFS 读数据流程HDFS 节点距离计算HDFS 机架感知HDFS NN和2NN工作机制HDFS FsImage镜像文件HDFS Edits编辑日志HDFS 检查点CheckPoint时间设置HDFS 退役旧数据节点HDFS DataNode多目录配置HDFS DataNode工作机制HDFS 数据完整性HDFS 掉线时限参数设置 …

在线HMAC计算工具

HMAC在线加密 - BTool在线工具软件&#xff0c;为开发者提供方便。HMAC是密钥相关的哈希运算消息认证码&#xff08;Hash-based Message Authentication Code&#xff09;的缩写&#xff0c;由H.Krawezyk&#xff0c;M.Bellare&#xff0c;R.Canetti于1996年提出的一种基于Hash…

NATURE子刊 | IF:9.8,中科院2区水刊,审稿速度快!接收领域广!

【SciencePub学术】本期&#xff0c;小编给大家推荐的是一本影响因子为9.0的中科院2区Nature子刊。其详情如下&#xff1a; 期刊简介 SCIENTIFIC DATA ISSN&#xff1a;2052-4463 E-ISSN&#xff1a;—— IF&#xff08;2022&#xff09;&#xff1a;9.8 自引率&#…

【EI会议征稿通知】第五届机电一体化技术与智能制造国际学术会议(ICMTIM 2024)

第五届机电一体化技术与智能制造国际学术会议&#xff08;ICMTIM 2024&#xff09; 2024 5th International Conference on Mechatronics Technology and Intelligent Manufacturing 第五届机电一体化技术与智能制造国际学术会议&#xff08;ICMTIM 2024&#xff09;将于2024…

单极子天线

当双极子天线的一个臂演变为无限大地平面时就形成了一个单极子天线&#xff0c;依据单极子天线形状的不同可以将单极子划分为不同的种类&#xff0c;例如三角锥形、圆锥形、袖形等&#xff0c;这里只关注普通的垂直接地细直单极子天线。 依据镜像原理&#xff0c;单极子天线模型…