浅谈 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

相关文章

Java对象和JSON字符串之间的转换方法(全网最清晰)

《Java对象和JSON字符串之间的转换方法(全网最清晰)》:本文主要介绍如何在Java中使用Jackson库将对象转换为JSON字符串,并提供了一个简单的工具类示例,该工具类支持基本的转换功能,... 目录前言1. 引入 Jackson 依赖2. 创建 jsON 工具类3. 使用示例转换 Java 对象为

java父子线程之间实现共享传递数据

《java父子线程之间实现共享传递数据》本文介绍了Java中父子线程间共享传递数据的几种方法,包括ThreadLocal变量、并发集合和内存队列或消息队列,并提醒注意并发安全问题... 目录通过 ThreadLocal 变量共享数据通过并发集合共享数据通过内存队列或消息队列共享数据注意并发安全问题总结在 J

Java文件与Base64之间的转化方式

《Java文件与Base64之间的转化方式》这篇文章介绍了如何使用Java将文件(如图片、视频)转换为Base64编码,以及如何将Base64编码转换回文件,通过提供具体的工具类实现,作者希望帮助读者... 目录Java文件与Base64之间的转化1、文件转Base64工具类2、Base64转文件工具类3、

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施:

day-51 合并零之间的节点

思路 直接遍历链表即可,遇到val=0跳过,val非零则加在一起,最后返回即可 解题过程 返回链表可以有头结点,方便插入,返回head.next Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}*

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟)

【每日一题】LeetCode 2181.合并零之间的节点(链表、模拟) 题目描述 给定一个链表,链表中的每个节点代表一个整数。链表中的整数由 0 分隔开,表示不同的区间。链表的开始和结束节点的值都为 0。任务是将每两个相邻的 0 之间的所有节点合并成一个节点,新节点的值为原区间内所有节点值的和。合并后,需要移除所有的 0,并返回修改后的链表头节点。 思路分析 初始化:创建一个虚拟头节点

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

Verybot之OpenCV应用二:霍夫变换查找圆

其实我是想通过这个程序来测试一下,OpenCV在Verybot上跑得怎么样,霍夫变换的原理就不多说了,下面是程序: #include "cv.h"#include "highgui.h"#include "stdio.h"int main(int argc, char** argv){cvNamedWindow("vedio",0);CvCapture* capture;i

浅谈PHP5中垃圾回收算法(Garbage Collection)的演化

前言 PHP是一门托管型语言,在PHP编程中程序员不需要手工处理内存资源的分配与释放(使用C编写PHP或Zend扩展除外),这就意味着PHP本身实现了垃圾回收机制(Garbage Collection)。现在如果去PHP官方网站(php.net)可以看到,目前PHP5的两个分支版本PHP5.2和PHP5.3是分别更新的,这是因为许多项目仍然使用5.2版本的PHP,而5.3版本对5.2并不是完