浅谈 vins 、mavros 和 px4 之间的坐标变换

2023-10-17 12:28

本文主要是介绍浅谈 vins 、mavros 和 px4 之间的坐标变换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

在自主无人机系统中,VINS-Fusion、Mavros、PX4 之间的参考坐标系是不同的,而这些坐标系之间的关系又很容易让人产生困惑,本文旨在理清不同模块之间的坐标变换关系,这有利于不同模块之间数据的转换,最后也会给出一些坐标变换方式。

二、 里程计坐标变换关系

本节主要介绍不同的里程计算法,如 VINS-Fusion、msckf_vio、open_vins 等里程计算法与世界坐标系的关系以及其内部不同元素之间的坐标变换关系!

2.1 world 坐标系

每一个里程计一般都会有一个 world 坐标系,然后再估计 body 坐标系在 world 坐标系中的位姿(也就是 body 坐标系 到 world 坐标系的变换关系)。

这里的 world 坐标系指的是一个全局参考系,也就是一个坐标系要确定其世界位置和姿态,共同参考的一个坐标系(参考的点不同,全局位姿就不同,但是全局参考系只能有一个!!!),如下图所示

其中黑色的三轴表示 world 坐标系,而两个蓝色的三轴分别表示 body 1 坐标系和 body 2 坐标系,绿色的箭头指的是 world 坐标系分别到 body 1 坐标系 和 body 2 (transform frame)。

由此可知 body 1 坐标系和 body 2 坐标系 的位姿都是相对 world 坐标系而言的,其中 body 1 坐标系和body 2 坐标系可以是 imu 位姿 或者 相机位姿 或者 雷达位姿,它们的位姿都是相对 world 坐标系而言的!

那么有一个很重要的问题:world 坐标系是怎么确定的?

一般来说,world 坐标系往往会根据 某个 body 坐标系在某个固定时刻的位姿 来确定!

2.1 VINS-Fusion 坐标变换

首先,由于 VINS-Fusion 是有 world 坐标系的,

而其他的一切坐标系的位姿都是相对 world 坐标系而言的,因此必须要先知道 VINS-Fusion 的 world 坐标系是怎么产生的(或者说其他一切坐标系都是参考哪个坐标系的)

这篇关于浅谈 vins 、mavros 和 px4 之间的坐标变换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/225399

相关文章

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Javaee多线程之进程和线程之间的区别和联系(最新整理)

《Javaee多线程之进程和线程之间的区别和联系(最新整理)》进程是资源分配单位,线程是调度执行单位,共享资源更高效,创建线程五种方式:继承Thread、Runnable接口、匿名类、lambda,r... 目录进程和线程进程线程进程和线程的区别创建线程的五种写法继承Thread,重写run实现Runnab

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

浅谈Redis Key 命名规范文档

《浅谈RedisKey命名规范文档》本文介绍了Redis键名命名规范,包括命名格式、具体规范、数据类型扩展命名、时间敏感型键名、规范总结以及实际应用示例,感兴趣的可以了解一下... 目录1. 命名格式格式模板:示例:2. 具体规范2.1 小写命名2.2 使用冒号分隔层级2.3 标识符命名3. 数据类型扩展命

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col