大小论文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等建图工具包完成数据的处理与传输,建图功能基本就实现了~

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

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

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

相关文章

判断质数-- 试除法判定质数(终于有人给我说明白了)

目录 判断质数思路:代码 原题链接 判断质数 给定 n个正整数 ai,判定每个数是否是质数。 输入格式 第一行包含整数 n 。 接下来 n 行,每行包含一个正整数 ai 。 输出格式 共 n 行,其中第 i 行输出第 i 个正整数 ai 是否为质数&…

pythroch abaconda 安装 cuda、版本确定、pytorch 安装

一、简述 公司有一个深度学习的项目,身上也没有其他项目,恰好乘着个机会学一下pytorch 和YOLOv8. 1、下载abaconda https://repo.anaconda.com/archive/ 2、安装 环境变量要✔ 其他一直下一步 3、测试 (base) C:\Users\alber>conda -V cond…

如何上传苹果ipa安装包?

目录 引言 摘要 第二步:打开appuploader工具 第二步:打开appuploader工具,第二步:打开appuploader工具 第五步:交付应用程序,在iTunes Connect中查看应用程序 总结 引言 在将应用程序上架到苹果应用…

达梦数据库的使用

文章目录 一、安装程序介绍1.dm管理工具2.dm服务查看器3.数据迁移工具 二、达梦数据库联机备份与还原操作1.配置归档2.备份1.归档备份 3.备份还原 一、安装程序介绍 官网文档:https://eco.dameng.com/docs/zh-cn/faq/faq-import-export.html 达梦数据库安装成功后…

OpenCV4.x(C++)人脸检测(眼睛、侧脸、正脸)

一、前言 OpenCV是一款广泛使用的计算机视觉库,提供了许多强大的功能,包括人脸检测和识别。人脸分类器是OpenCV中用于人脸检测的关键工具之一,能够快速准确地检测出图像中的人脸。 本文将介绍如何使用OpenCV自带的人脸分类器,并…

05- OpenCV:图像操作和图像混合

目录 一、图像操作 1、读写图像 2、读写像素 3、修改像素值 4、Vec3b与Vec3F 5、相关的代码演示 二、图像混合 1、理论-线性混合操作 2、相关API(addWeighted) 3、代码演示(完整的例子) 一、图像操作 1、读写图像 (1)…

阿赵UE学习笔记——8、贴图导入设置

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的用法,这次来说一下贴图的导入设置。   在内容浏览器里面可以看到纹理类型的资源,就是贴图了,鼠标悬浮在上面可以看到这个纹理贴图的信息: 双击纹理贴图…

基于ssm文化遗产的保护与旅游开发论文

摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互联网时代才发现能补上自古…

【Python程序开发系列】一文总结程序运行出现No module named ‘xxx‘的解决方案

这是Python程序开发系列原创文章,我的第196篇原创文章。 一、引言 "ModuleNotFoundError: No module named xxx"这个报错是个非常常见的报错,几乎每个python程序员都遇到过,导致这个报错的原因也非常多,解决这个问题之…

原生Camera2中CameraMetadata用法和代码流程详解

1,CameraMetadata介绍 CameraMetadata在Android的Camera2 API中起到了关键的作用。它提供了一种机制,使应用程序能够获取关于相机硬件和其当前状态的元数据。这些元数据包括各种信息,例如相机传感器的状态、镜头的朝向、闪光灯的充电状态、自…

智能AI一键养号,助力账号增加浏览轨迹的全新体验

我想分享一下我对亚马逊鲲鹏系统的智能AI一键养号功能的使用体验。这一创新性的功能让账号的养号过程变得更加轻松、灵活且有效。 首先,我对软件的AI功能页面印象深刻。通过勾选不同的姓名、职业、性别等选项,我可以生成各种不同的AI角色。这些角色使得账…

windows10 装docker和docker compose

一.windows环境准备 开启过程中的问题,进入bios修复 二.docker下载安装 1.下载 Docker Desktop: The #1 Containerization Tool for Developers | Docker 下载最新版有问题,下载老版本试试 Docker Desktop release notes | Docker Docs 2.安装 三.do…