首页 > 其他分享 >loam详细代码解析与公式推导

loam详细代码解析与公式推导

时间:2022-09-25 18:34:19浏览次数:48  
标签:sry 推导 crz loam cry srz srx 解析 坐标系

loam详细代码解析与公式推导(基础理论知识)

一、基础坐标变换

loam中欧拉角解算都采用R P Y 的解算方式,即先左乘R, 再左乘P, 最后左乘Y,用矩阵表示为: R = Ry * Rp * Rr。用个很简单的示例表示,在坐标系Oxyz中经过旋转后得到坐标系O'xyz,可以把坐标系Oxyz当成全局坐标系{world_link},坐标系O'xyz当成局部坐标系{local_link};有局部坐标系上的点Pl,在全局坐标系下的位置Pw是:

Pw = R * Pl = (Ry * Rp * Rr)* Pl

 上式将局部坐标系上的点变换到全局坐标系即:

  R = Ry * Rp * Rr

{world_link} ------------------------> {link_link}

其中:Rr是agv的翻滚角,与loam坐标系中的rot_x对应

    rot_x = [1, 0, 0;
             0, crx, -srx;
             0 , srx, crx];

          Ry是agv的偏航角,与loam坐标系中的rot_y对应

       rot_y = [cry, 0, sry; 
           0, 1, 0; 
             -sry , 0, cry];

         Rp是agv的俯仰角,与loam坐标系中的rot_z对应

            rot_z = [crz, -srz, 0; 
              srz, crz, 0; 
             0 , 0, 1];

二、loam对应的欧拉变换顺序

       loam中坐标变换通常分为从{link_world}到{world_link}和从{world_link}到{link_world}的变换,其分别对应的欧拉拉变换方式为:Rzxy 和 其逆矩阵inv(Rzxy) = R-y-x-z,其中

     Rzxy = rot_z  * rot_x  * rot_y  =  [ cry*crz + srx*sry*srz, crz*srx*sry - cry*srz, crx*sry]
                          [crx*srz,           crx*crz,         -srx]
                           [ cry*srx*srz - crz*sry, sry*srz + cry*crz*srx, crx*cry]

inv(Rzxy) = -rot_y  * -rot_x  * -rot_z = [ cry*crz + srx*sry*srz, crx*srz, cry*srx*srz - crz*sry]
                             [ crz*srx*sry - cry*srz, crx*crz, sry*srz + cry*crz*srx]
                              [     crx*sry,    -srx,               crx*cry]

三、imu角度变换计算

loam中imu的坐标系方向是前左上,假设在current的imu坐标系下的各个方向加速度为

A = [ax; ay; az]

在前左上坐标系中欧拉角的解算方式是:Rxyz = rot_z  *  rot_x  * rot_y,现在需要得到重力加速度在current坐标系下各个方向的分量,应为imu开始坐标系下G=[0; 0; -9.8];现在相当于求全局imu坐标系下的向量在局部imu坐标系下向量值G',故

G'  =  inv(Rxyz) * G

其中

inv(Rxyz) =  [          cry*crz,        cry*srz,    -sry]
          [ crz*srx*sry - crx*srz, crx*crz + srx*sry*srz, cry*srx]
          [ srx*srz + crx*crz*sry, crx*sry*srz - crz*srx, crx*cry]

因此

A’= A  +  inv(Rxyz) *  G

到这里,关于坐标系变换的基础理论就讲明白了。

 

 

 

标签:sry,推导,crz,loam,cry,srz,srx,解析,坐标系
From: https://www.cnblogs.com/RobustFresher/p/16728241.html

相关文章

  • 11第十章:DockerFile解析
    一、DockerFile是什么1、说明Dockerfile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。2、概述3、官网https://docs.docker.co......
  • ExecutorService、Callable、Future实现有返回结果的多线程原理解析
    原创/朱季谦在并发多线程场景下,存在需要获取各线程的异步执行结果,这时,就可以通过ExecutorService线程池结合Callable、Future来实现。我们先来写一个简单的例子——publ......
  • 注解-自定义注解-元注解和解析注解
    注解-自定义注解-元注解元注解:就是用于描述注解的注解@Target:描述注解能够作用的位置@Retention:苗猪注解被保留的阶段@Documented:描述注解是......
  • SVM公式详尽推导,没有思维跳跃。
    假定数据集\(T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},x_n\inR_k,y_n\in\{1,-1\}\)线性可分,SVM的优化目标是:优化一个超平面的参数,使得这个超平面,能够正确划分两类数......
  • 解析库beautifulsoup
    目录一、介绍二、遍历文档树三、搜索文档树(过滤)四、修改文档树五、总结一、介绍BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转......
  • PCQQ9.6.6(28796) 报文解析
    QQ9.6.6(28796)报文解析0825NO.12022-09-2122:17:57SEND163字节[UDP-电脑QQ192.168.0.18:4023->59.83.209.70:8000]023B1708252F6701D04C46030000......
  • Java源码解析库对比:javaparser、qdox、spoon
    Qdox:paul-hammant/qdoxJavaParser:javaparser/javaparserSPOON:INRIA/spoonQdoxJavaParserSPOONGitHub社区1.3kUsers8Contributors328stars⭐45forks3.3......
  • 为什么选择高防DNS云解析?(一)
    DNS(domainnameserver,域名服务器)是互联网的一项核心服务,是进行域名与之对应的IP地址之间转换的系统,可将易于记忆的域名转换为方便服务器识别的用于互连通信的数字IP地址......
  • js回调函数原理解析
    回调函数的定义是指函数作为参数在执行中进行值传递,搞清楚原理之前先明白两件事//1、基本类型值传递//在函数接收基本类型值时,会在该函数内部栈中创建一个一模一样的变......
  • 详细解析11月前能影响加息的数据 点阵图带来的情绪开始缓解 — 2022.9.23
    详细解析11月前能影响加息的数据点阵图带来的情绪开始缓解—2022.9.23九月份的加息结束,以及点阵图带来的终端利率走势,风险市场的情绪持续反而出现了乐观的局面,随着凌晨......