外参手算方法

news/2024/10/19 6:16:01/

     虽然有的slam系统是代外参标定功能,可以在线标定(vins)或者离线进行标定,但外参标定的质量也会与运动激励相关的,例如对于3自由度的小车很难把z方向的外参标定的很好。有些情况车子或者是定位模块是有设计图纸的,因此通过物理方法测量的量转换成实际可行的外参或者外参的初值可以简单高效的提升标定收敛的速度已经精度。

平移外参

    平移外参是一个相对比较好处理的一个值,以imu和camera的外参 t i c t_{ic} tic其物理意义是camera坐标系原点在imu坐标系的位置,因此这个量是比较容易得到的。

旋转外参

    在手动计算旋转外参时候,以东北天和北东地旋转外参转换为例进行说明。形式简单可以慢慢推倒出来旋转都是90或180度这样的情况。形式复杂的一般我会采用欧拉角进行分解计算。

T e n u n e d T_{enu}^{ned} Tenuned东北天到北东地的转换

在这里插入图片描述

  • 简单形式

    在enu下的 [ 1 0 0 ] T \begin{matrix}[1 & 0 & 0]^T\end{matrix} [100]T 对应ned坐标系下的 [ 0 1 0 ] T \begin{matrix}[0 & 1 & 0]^T\end{matrix} [010]T

    在enu下的 [ 0 1 0 ] T \begin{matrix}[0 & 1 & 0]^T\end{matrix} [010]T 对应ned坐标系下的 [ 1 0 0 ] T \begin{matrix}[1 & 0 & 0]^T\end{matrix} [100]T

    在enu下的 [ 0 0 1 ] T \begin{matrix}[0 & 0 & 1]^T\end{matrix} [001]T 对应ned坐标系下的 [ 0 0 − 1 ] T \begin{matrix}[0 & 0 & -1]^T\end{matrix} [001]T

    因此 [ 0 1 0 1 0 0 0 0 − 1 ] = R e n u n e d [ 1 0 0 0 1 0 0 0 1 ] \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & -1 \end{bmatrix} = R_{enu}^{ned} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} 010100001 =Renuned 100010001 因此很轻松的可以推到出来

  • 复杂欧拉形式
    在这里插入图片描述

在源坐标系看第一步是沿x轴按右手顺序正转了180度,

在第一步的坐标系看第二步是沿z轴按右手顺序反转了90度

因此采用eigen中的轴角把运动合成起来

#include "iostream"
#include "eigen3/Eigen/Core"
#include "eigen3/Eigen/Geometry"using namespace Eigen;
using namespace std;int main(int argc, char** argv){AngleAxisd rotX(-M_PI, Vector3d(1, 0, 0)); AngleAxisd rotY(M_PI/2., Vector3d(0, 0, 1)); std::cout << rotY.matrix()*rotX.matrix() << std::endl;return 0;
}

结果:
在这里插入图片描述

与手动推倒的一致


http://www.ppmy.cn/news/86447.html

相关文章

SpringBoot --- 实用篇

一、热部署 1.1、概念 什么是热部署&#xff1f;简单说就是你程序改了&#xff0c;现在要重新启动服务器&#xff0c;嫌麻烦&#xff1f;不用重启&#xff0c;服务器会自己悄悄的把更新后的程序给重新加载一遍&#xff0c;这就是热部署。 ​ 热部署的功能是如何实现的呢&…

Vue 3 第二十一章:组件九(组件高级特性-组件的混入和继承)

文章目录 1. 组件的混入2. 组件的继承总结 Vue 中的组件混入和继承功能允许我们在多个组件之间共享代码&#xff0c;从而提高代码的可重用性和可维护性。 1. 组件的混入 混入是一种将多个对象合并为一个对象的技术。在 Vue 3 中&#xff0c;我们可以使用 mixins 属性来定义混…

Reinforcement Learning | 强化学习十种应用场景及新手学习入门教程

文章目录 1.在自动驾驶汽车中的应用2.强化学习的行业自动化3.强化学习在贸易和金融中的应用4.NLP&#xff08;自然语言处理&#xff09;中的强化学习5.强化学习在医疗保健中的应用6.强化学习在工程中的应用7.新闻推荐中的强化学习8.游戏中的强化学习9.实时出价——强化学习在营…

sftp配置免密以及权限配置

场景&#xff1a;机器A通过sftp免密登录机器B 机器A有用户redis、 nginx, 机器B有用户monitor、 bak用户 需求&#xff1a;机器A在nginx用户环境下&#xff0c;sftp机器B的bak目录 注意&#xff1a;因为sshd为了安全&#xff0c;对属主的目录和文件权限有所要求。如果权限…

Alma Linux 9.2、Rocky Linux 9.2现在是RHEL 9.2的替代品

随着Red Hat Enterprise Linux (RHEL) 9.2的发布&#xff0c;Alma Linux 9.2和Rocky Linux 9.2成为了RHEL 9.2的备选替代品。这两个Linux发行版旨在提供与RHEL兼容的功能和稳定性&#xff0c;以满足那些需要企业级操作系统的用户需求。本文将详细介绍Alma Linux 9.2和Rocky Lin…

《面试1v1》ThreadLocal

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 你好&#xff0c;请问你对 ThreadLocal 有了解吗&#xff1f; 候选人&#xff1a; 您好&#xff0c;我知道 ThreadLocal 是一个 Java 中的类&a…

资深测试老鸟整理,超全自动化测试用例详解-小技巧总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

哈希表封装unordered系列

文章目录 哈希表封装unordered系列前言1. 改良后的类和节点2. 迭代器1. begin 和 end2. operator()3. const迭代器 3. 整体代码3.1 hashtable.h3.2 unordered_set.h3.3 unordered_map.h 哈希表封装unordered系列 前言 本篇文章的大框架部分详解见红黑树封装map和set那篇博客&…