APM姿态旋转理论基础

2023-05-16

APM姿态旋转理论基础

  • 一、坐标系
    • 1.1 NED坐标系
    • 1.2 机体坐标系
  • 二、欧拉角
    • 姿态变化率与机体角速度的关系
  • 三、旋转矩阵
    • 3.1 基本公式
    • 3.2 矩阵作差
    • 3.3 旋转矩阵与变换矩阵的区别
  • 四、DCM
  • 五、轴角法
    • 5.1 基本概念
    • 5.2 与旋转矩阵的相互转换
  • 六、四元数
    • 6.1 四元数表示旋转
      • 6.1.1 与轴角的相互转换
      • 6.1.2 四元数表示旋转
    • 6.2 四元数与旋转矩阵
    • 6.3 四元数与欧拉角
  • 总结


阅读源码的过程中发现对于一些基础理论的掌握还是不够深,因此本篇先把一些理论知识部分汇总一下。本博文会持续更新修改,所有引用均会表明出处。如有问题,欢迎指正。

以下内容均为个人认为需要掌握之处,可能不会涵盖一些太基础的理论,但是会提供一些参考的链接供大家学习(超长篇警告)。

一、坐标系

无人机领域中最重要的就是惯性坐标系和机体坐标系。

1.1 NED坐标系

因为在现实中通常需要在平面控制无人机,因此NED坐标系通常作为无人机领域的导航坐标系使用。

NED坐标系如下图绿色坐标系,即北东地坐标系,三个方向始终保持不变。

在这里插入图片描述

1.2 机体坐标系

机体坐标系始终与无人机本体固连,同时也表明了无人机当前的姿态。其原点位于无人机的重心,X轴朝向机头,Y轴垂直于X轴指向机身右方,Z轴按照右手法则正交于X和Y轴(这边先关注轴即可,旋转和角度表示后面需要再统一一下标准)。
在这里插入图片描述

通常无人机的姿态一般由惯性测量单元IMU来获取,其中陀螺仪用于获取角速度,加速度计顾名思义获取3轴的加速度,如果带有磁力计,则可以获取到磁场方向。

后面过程NED坐标系会简称为n系,机体坐标系会简称为b系。

举例来说,在n系下我们获取到的是无人机的“东南西北”的绝对位置信息,而在b系下,我们会要求无人机进行“前后左右”的增量式运动,如何将我们给机体的期望运动与导航给我们反馈的n系下的位置、姿态等绝对信息联系起来,就是我们后面要做的事情。

 

参考资料:
无人机运动学控制中的坐标系,及惯性坐标系与机体坐标系之间的矩阵转换 欧拉角
[飞控]聊点姿态(三)-什么是地理系和机体系?

 

二、欧拉角

借一张已经被用烂了的图简单来说一下欧拉角的一些基本概念:
在这里插入图片描述

  1. 欧拉角是利用3次独立绕轴旋转运动来确定三维空间中的某一刚体姿态;
  2. 欧拉角可以绕着固定轴(大地坐标系)运动轴(机体坐标系) 两种类型的轴进行旋转,运动过程对于前者称为外旋,后者称为内旋
  3. 对于绕轴的顺序,科学界并没有明确的规定,实际上根据不同轴旋转顺序总共有24种(外旋12种,内旋12种,在各自的12种中使用2轴还是3轴旋转又可以向内各分为6种)
  4. 使用欧拉角时必须指明旋转顺序以及参考轴,同时不同行业内部会有具体的欧拉角定义,比如无人机类型的使用的zyx
  5. 理论上用欧拉角确实可以表示任意姿态,实际上在实际使用过程中会存在万向节死锁问题
  6. 绕固定轴进行3次旋转之后的最终姿态和以绕运动轴按相反顺序进行3次旋转之后可以获得相同的最终姿态。由此会有绕定轴旋转X-Y-Z的RPY角和绕动轴Z-Y-X旋转之分,但是两者的最终姿态是一致的(当然需要按照特定角度)
  7. 通常欧拉角并不用于计算过程,一般使用的是四元数进行计算,而最终的可视化是转化为欧拉角进行表示的。

在无人机领域中,我们通常使用的欧拉角旋转方式表示为(根据国内标准统一符号,记住此处的角度符号,会在旋转矩阵中用到):

  • Z轴 进行的 偏航 运动,称为 Yaw ,角度符号通常用 ψ 来表示。
  • Y轴 进行的 俯仰 运动,称为 Pitch ,角度符号通常用 θ 来表示。
  • X轴 进行的 滚转 运动,称为 Roll ,角度符号通常用 Φ 来表示。

在这里插入图片描述

姿态变化率与机体角速度的关系

以下内容来自全权老师的《多旋翼飞行器设计与控制》。

在这里插入图片描述

其中,向量 ω ω ω 表示的是机体的旋转角速度, W W W表示旋转过程, Θ Θ Θ表示RPY角,则对应的微分表示的即是姿态变化率(原谅我在编辑器里面打不出 Θ Θ Θ上的一点)。

 
参考资料:
做控制要知道的刚体旋转知识(三)欧拉角
《多旋翼飞行器设计与控制》5.2.1欧拉角小节(P90-91)

 

三、旋转矩阵

旋转矩阵表示的是坐标系的旋转

3.1 基本公式

推导就不推导了,直接给出结论,常用的绕X、Y、Z轴方向的旋转矩阵如下(注意推导时根据旋转方向会有正负号的差异)。我们通常用Φ,θ,ψ表示绕X、Y、Z轴的旋转角度。

在这里插入图片描述
绕轴顺序不同的话最后得到的旋转矩阵也会不同,在无人机领域通常是按照Z-Y-X进行旋转的,结论直接给出。

n系向b系旋转的旋转矩阵 R n b R{^b_n} Rnb(顺序Z-Y-X)
在这里插入图片描述
明确旋转矩阵自身为一个正交矩阵(转置与逆相等)

那么b系向n系旋转的旋转矩阵正好为 R b n = R n b T = R n b − 1 R{^n_b}= R{^b_n}^T= R{^b_n}^{-1} Rbn=RnbT=Rnb1
在这里插入图片描述

3.2 矩阵作差

来源:[飞控]姿态误差(二)-旋转矩阵做差

通常欧拉角下姿态的误差能够通过期望角和当前角相减得到,但是对于由旋转矩阵描述的姿态来说,无法通过矩阵相减得到姿态误差。

通常,假设我们有 R 1 2 R{^2_1} R12描述从坐标系1到2的旋转,而 R 2 3 R{^3_2} R23描述从坐标系2到3的旋转,则有如下性质
R 1 3 = R 2 3 ∗ R 1 2 R{^3_1} = R{^3_2}*R{^2_1} R13=R23R12
即可见相乘的两个矩阵的上下标相互约去得到坐标系1到坐标系3的旋转矩阵。

又由于旋转矩阵为正交矩阵,因此有
( R 2 3 ) − 1 ∗ R 1 3 = ( R 2 3 ) T ∗ R 1 3 = R 3 2 ∗ R 1 3 = R 1 2 {(R{^3_2})}^{-1}*R{^3_1} = {(R{^3_2})}^{T}*R{^3_1} = R{^2_3}*R{^3_1} = R{^2_1} (R23)1R13=(R23)TR13=R32R13=R12

由此可见旋转矩阵中通过左乘一个旋转矩阵的表示姿态作差。

3.3 旋转矩阵与变换矩阵的区别

旋转矩阵通常是以R表示3×3矩阵,而变换矩阵则更多的是用T表示的在齐次坐标系下的4×4矩阵。

在这里插入图片描述

一些论文里面会以群的形式描述三维空间内的旋转矩阵和变换矩阵,通常前者以SO(3)表示,后者用SE(3)表示,有兴趣的同学可以自行翻阅相关群论,此处知道如上表示即可。

 
参考资料:
三维变换中,旋转矩阵左乘与右乘有什么区别?
做控制要知道的刚体旋转知识(四)旋转矩阵/方向余弦矩阵
[飞控]姿态误差(二)-旋转矩阵做差
《多旋翼飞行器设计与控制》P91-95

 

四、DCM

上面的旋转矩阵是从欧拉角进行推导得出的,除此之外,我们还可以直接利用坐标系之间的旋转关系进行推导,此时获得的矩阵成为方向余弦矩阵DCM,实际上从某种意义上来说两者是等价的,因为最后获得的姿态是一样的。

推荐阅读:DCM Tutorial – An Introduction to Orientation Kinematics
中文翻译:方向余弦矩阵(DCM)简介

在这里插入图片描述
以下内容来自上文,简单总结一下:

定义全局坐标系为OXYZ,本体坐标系为Oxyz,两者原点相同。全局坐标系中定义各轴(X、Y、Z)的单位向量分别为 I 、 J 、 K I、J、K IJK,同理本体坐标系中各轴对应的单位向量为 i 、 j 、 k i、j、k ijk

全局坐标系下的单位向量 I 、 J 、 K I、J、K IJK表示为
在这里插入图片描述
本体坐标系下的单位向量 i 、 j 、 k i、j、k ijk表示为
在这里插入图片描述
其中G表示全局坐标系,B表示本体坐标系。具体的推导过程省略,这边可以简单表示为
在这里插入图片描述
i x G i{_x^G} ixG 表示的是i向量在全局坐标系中X轴上的投影,整个过程用点乘实现计算,注意仔细理解上式,我们以后会以 c o s ( I , i ) cos(I, i) cos(I,i) 或者 I . i I.i I.i 的形式表示点乘。那么 i i i 向量在全局坐标系中的投影为
在这里插入图片描述
由此我们可以获得向量 i 、 j 、 k i、j、k ijk在全局坐标系G中的投影坐标,表示为方向余弦矩阵为
在这里插入图片描述
而同样的,在本体坐标系中表示全局坐标系的单位向量 I 、 J 、 K I、J、K IJK在本质上其实是对称的。举例来说 I B I^B IB表示的就是 I I I向量在本体坐标系的投影
在这里插入图片描述

由此获得向量 I 、 J 、 K I、J、K IJK在本体坐标系中的投影(注意 I . i I.i I.i i . I i.I i.I等价)
在这里插入图片描述

可以发现 D C M G DCM^G DCMG D C M B DCM^B DCMB是各为彼此的转置,并且DCM本身为一个正交矩阵。

 

五、轴角法

5.1 基本概念

由于APM中主要采用的就是轴角和四元数来计算姿态误差

先来看看什么是旋转向量,旋转向量定义为:任意旋转均可用一个旋转轴一个旋转角来表示,由此使用一个向量,其方向与旋转轴保持一致,向量长度等于旋转角(摘自《视觉SLAM十四讲》)。

而轴角法(Axis-Angle)实际上就是旋转向量,它使用一个转轴(单位向量)一个旋转角来描述旋转过程。

如下图所示,以z为转轴,α为转角构建轴角,将坐标系xyz旋转到X’Y’Z’。
在这里插入图片描述

5.2 与旋转矩阵的相互转换

只给出结论。

从轴角转换到旋转矩阵,根据罗德里格斯公式有:
在这里插入图片描述
符号^表示将向量转换为反对称矩阵。

可以倒推获得旋转矩阵向轴角的转换:
在这里插入图片描述
t r ( R ) tr(R) tr(R)表示矩阵R的迹

转轴n,在旋转轴上的向量旋转前后不发生变化
R n = n Rn=n Rn=n

 

参考资料:
做控制要知道的刚体旋转知识(一)轴角法
[飞控]姿态误差(三)-四元数和轴角求误差

 

六、四元数

首先明确四元数描述的是三维空间的旋转过程,而不是一个点。

基础理论和数学计算方式这边将不再介绍,后面均表示为国内统一标准。

下图来自《多旋翼飞行器设计与控制》

在这里插入图片描述
即可表示为如下形式,其中 q 0 q_0 q0为实数, q 1 , q 2 , q 3 q_1,q_2,q_3 q1q2q3为虚数。

q ⃗ = q 0 + q 1 i ⃗ + q 2 j ⃗ + q 3 k ⃗ \vec{q} = q_0+q_1\vec{i}+q_2\vec{j}+q_3\vec{k} q =q0+q1i +q2j +q3k

在APM中则是以 q 1 , q 2 , q 3 , q 4 q_1,q_2,q_3,q_4 q1q2q3q4进行表示。

一些基本运算可以看这篇博文:旋转表达之四元数

注意:单位四元数的逆等于它的共轭

在统一使用国内标准描述四元数时,四元数与旋转矩阵也可以像旋转矩阵一样上下标约去

6.1 四元数表示旋转

6.1.1 与轴角的相互转换

前提:轴角已知

四元数本身也是存储了一个旋转轴和一个旋转角度。如果已知一个由轴角n和θ指定的旋转。其中

n ⃗ = x i ⃗ + y j ⃗ + z k ⃗ \vec{n}=x\vec{i}+y\vec{j}+z\vec{k} n =xi +yj +zk

并且向量n为单位向量

∣ ∣ n ⃗ ∣ ∣ = 1 ||\vec{n}||=1 n =1

则用四元数描述这个旋转过程为

q = c o s θ 2 + ( x + y + z ) s i n θ 2 q=cos\frac{θ}{2}+(x+y+z)sin\frac{θ}{2} q=cos2θ+(x+y+z)sin2θ

表示为

q = [ q 0 , q 1 , q 2 , q 3 ] = [ c o s θ 2 , x s i n θ 2 , y s i n θ 2 , z s i n θ 2 ] = [ c o s θ 2 , n s i n θ 2 ] q=[q_0 ,q_1,q_2,q_3]=[cos\frac{θ}{2},xsin\frac{θ}{2},ysin\frac{θ}{2},zsin\frac{θ}{2}]=[cos\frac{θ}{2},nsin\frac{θ}{2}] q=[q0,q1,q2,q3]=[cos2θ,xsin2θ,ysin2θ,zsin2θ]=[cos2θ,nsin2θ]

那么反过来也可以求得轴角
θ = 2 ∗ a r c c o s ( q 0 ) θ=2*arccos(q_0) θ=2arccos(q0) [ x , y , z ] T = [ q 1 , q 2 , q 3 ] T s i n θ 2 [x,y,z]^T=\frac{[q_1,q_2,q_3]^T}{sin\frac{θ}{2}} [x,y,z]T=sin2θ[q1,q2,q3]T

四元数恢复轴角形式

虽然上面给出了公式,然而一种更直观的计算方法如下,前提是已知四元数表达

下图来自旋转表达之四元数

在这里插入图片描述

6.1.2 四元数表示旋转

向量旋转

假设 q q q是一个用四元数表示的旋转过程, v 1 ∈ R 3 v_1\in R^3 v1R3表示一个向量,那么在 q q q的作用下,向量 v 1 v_1 v1旋转为向量 v 1 ′ v_1' v1可表示为
( 0 v 1 ′ ) = q × ( 0 v 1 ) × q − 1 \begin{pmatrix} 0 \\ v_1' \\ \end{pmatrix}=q×\begin{pmatrix} 0 \\ v_1 \\ \end{pmatrix}×q^{-1} (0v1)=q×(0v1)×q1

注意以上过程为0标量运算,具体的运算过程以及非0标量四元数运算详见下面这篇博客(内容会在APM姿态误差计算中用到)
[飞控]姿态误差(三)-四元数和轴角求误差

坐标系旋转

坐标系旋转则刚好相反,想象在一个坐标系下将向量逆时针旋转45°,这个过程是不是等价于将坐标系顺时针旋转45°呢?

因此公式表示为:
( 0 v 1 ′ ) = q − 1 × ( 0 v 1 ) × q \begin{pmatrix} 0 \\ v_1' \\ \end{pmatrix}=q^{-1}×\begin{pmatrix} 0 \\ v_1 \\ \end{pmatrix}×q (0v1)=q1×(0v1)×q

6.2 四元数与旋转矩阵

旋转矩阵 R b e R^e_b Rbe是从机体坐标系b到地球固连坐标系e的转换

摘自《多旋翼飞行器设计与控制》
在这里插入图片描述

摘自《视觉SLAM十四讲》

在这里插入图片描述
其中 t r ( R ) tr(R) tr(R)表示矩阵的迹, t r ( R ) = m 11 + m 22 + m 33 tr(R) = m_{11}+m_{22}+m_{33} tr(R)=m11+m22+m33

6.3 四元数与欧拉角

欧拉角转换为四元数。

回忆一下我们通常用φ,θ,ψ表示绕X、Y、Z轴的旋转角度

在这里插入图片描述
四元数反推欧拉角

在这里插入图片描述
 

参考资料:
如何形象地理解四元数?
旋转表达之四元数
[飞控]姿态误差(三)-四元数和轴角求误差
[飞控]倾转分离(补充)-等效旋转矢量(轴角)与旋转矩阵

 

总结

摘自:https://blog.csdn.net/YuYunTan/article/details/83828258

  1. 旋转矩阵用9个元素表示3自由度旋转,表达具有冗余性。而欧拉角和旋转向量是紧凑的,但具有奇异性。
  2. 旋转向量用一个旋转轴ω \omegaω和旋转角t tt来描述一个旋转,所以也称轴角(Axis-Angle)。不过很明显,因为旋转角度有一定的周期性(2 π 2\pi2π一圈),所以这种表达方式具有奇异性。
  3. 欧拉角有一个致命缺点:万向锁。也就是在俯仰角为±90°时,第一次和第三次旋转使用的是同一个坐标轴,会丢失一个自由度,引起奇异性。
  4. 表达三维旋转的不带奇异性的三维向量描述方式是不存在的,它是一个三维流型,想要无奇异性的表示,仅用3个量是不够的,所以引出了四元数。
  5. 四元数是Hamilton找到的对于复数的扩展,它由一个实部和三个虚部组成,是一种非常紧凑、没有奇异的表达方式。然而四元数不够直观,且运算较为复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APM姿态旋转理论基础 的相关文章

  • Python中__init__.py文件的作用

    在创建python包的过程中 xff0c IDE都会在包根目录下创建一个 init py文件 xff0c 该Python文件默认是空的 目录结构如下 xff1a Pycharm下的package树结构 xff1a 在Finder中的目录结构
  • 使用Ajax以及CSS+DIV高仿谷歌搜索(附源码下载)

    在使用 Google 搜索或者是 Baidu 搜索的时候 xff0c 在输入搜索关键字的同时 xff0c 会自动弹出匹配的其他关键字的提示 xff0c 全心全意为人民服务的精神在这里崭露无遗 这种利用 Ajax 技术实现输入提示和自动完成的
  • 导致索引失效的可能情况

    如下是可能导致索引失效的情况 xff1a 1 xff0e 隐式转换导致索引失效 这一点应当引起重视 也是开发中经常会犯的错误 由于表的字段tu mdn定义为varchar2 20 但在查询时把该字段作为number类型以where条件传给O
  • 二叉搜索树的增删查

    今天把搜索二叉树的思路又理了一遍 xff0c 把代码又从头到尾敲了一遍 xff0c 各位看客就不要在意代码粗糙和内存溢出了 xff0c 主要把插入和删除的过程理了一遍 xff0c 其中比较复杂的地方就是搜索二叉树的删除 xff0c 涉及了很
  • 中缀表达式转前缀和后缀表达式

    之前笔试中国电信IT研发中心的时候 xff0c 遇到了几个前 中 后缀表达式的相互转换 xff0c 当时忘得差不多了 xff0c 今天好好把该方面的知识好好复习 xff0c 并把相关代码和思路自己缕了一遍 xff1a 将中缀表达式转换为前缀
  • java prometheus 自定义exporter开发,以及实现多个接口返回metrics

    普罗 自定义exporter开发 exporter的作用是采集需要监控的数据 xff0c 并将采集到的数据转换成prometheus所需要的数据格式 xff0c 将这些转换后的数据返回 xff0c 供给prometheus 使用 java
  • 双系统重装Ubuntu经验分享

    真的很喜欢ubuntu 但又没有恒心把它学通透 xff0c 毕竟不是相关专业 第一次重装是因为没多少经验 xff0c 安装qqforlinux的时候多了两个东西 xff0c 还自己生成了快捷方式 xff0c 就想点开看看是啥 xff0c 结
  • 还在迷茫不知Dashboard是什么?答案在文中揭晓

    Dashboard的中文翻译是 仪表盘 xff0c 与汽车的仪表盘相同 一种反映车辆各系统工作状况的装置 xff0c 有车速里程表 转速表 燃油表等 司机可以很方便地从汽车仪表盘中获得汽车整体状况 而Dashboard沿袭了汽车仪表盘理念
  • 问题:UPDATE 失败,因为下列 SET 选项的设置不正确: 'ARITHABORT'。

    解决方案 1 你可以在TSQL前Set ARITHABORT ON 代码如下 Set ARITHABORT ON GO INSERT INTO ta 2 在ADO NET中 你可以这样来写 C 代码 MyConnection Execute
  • 智能制造:三体智能革命

    赵敏 宁振波 郭朝晖是走向智能研究院资深专家 xff0c 三体智能革命 编委会中三位重要作者 他们从去年5月起多次参加了中国工程院主持的 中国智能制造发展战略研究报告 的研讨 评审与修订工作 xff0c 对该报告的形成过程 研究主旨和详细内
  • 小觅相机SDK samples安装Link error: cannot find -lvtkproj4

    Link error cannot find lvtkproj4 error ld returned 1 exit status 找不到相关动态库文件 设置软链接 xff1a ln s usr lib x86 64 linux gnu li
  • 年度回忆录(2011.12----2012.09)

    前几天刚刚参加了提高班十期的开学典礼 xff0c 最近师院的新生也陆 陆续 续的开始报道了 每年到这个时候都会感慨 年年岁岁花相似 xff0c 年年岁岁人不同 啊 对于提高班来说每年都有新的血液注入进来 xff0c 提高班的队伍在不断的扩大
  • python函数(变量,参数)

    函数的变量 1 xff0c 全局变量 定义在最外层的变量 xff0c 对于所有的内函数都能调用 2 xff0c 局部变量 定义在函数内的变量叫做局部变量 xff0c 在函数外是不能访问局部变量 注 xff1a 全局变量不能直接在函数内部进行
  • 程序员读书和练习的方法(个人观点)

    lt 传送门 gt 针对本文的交流探讨 gt 总宗旨 xff1a 打好计算机通用理论基础 通用实战能力 xff0c 便于需要时对各领域的无障碍深钻 时间宝贵 xff0c 不要为了学习而学习 计算机通用理论基础 xff1a 计算机各领域理论基
  • 从零开始的Ubuntu 16.04下PX4编译环境的搭建

    近来入手了一块pixhawk xff0c 想进行一些基于已有代码的二次加工 xff0c 于是到官网https dev px4 io 上看教程 官网上的教程是分为中文 英文以及韩文的版本 很多人肯定第一反应就是看中文的版本 但是这样做弊端真的
  • 驱动程序开发:SPI设备驱动

    目录 Linux下SPI驱动简介SPI架构概述SPI适配器 xff08 控制器 xff09 SPI设备驱动spi driver注册示例SPI 设备和驱动匹配过程编写imc20608六轴传感器SPI驱动设备树编写操作具体的imc20608驱动
  • 操作系统知识点(二)

    文章目录 内存管理程序执行过程内存保护 连续分配非连续分配基本分页存储管理方式基本分段存储管理方式段页式存储管理方式 虚拟内存局部性原理请求分页存储管理 内存管理 内存管理 Memory Management 是操作系统设计中最重要和最复杂
  • VR行业发展的前景和现状?

    标题 VR行业发展的前景和现状 xff1f 1 一个新事物的产生 xff0c 总是伴随着看好和唱衰两种声音 这两种态度自然有其可以理解的地方 xff0c 因为摆在我们面前的是未知 xff0c 而坐在餐桌前的两拨人 xff0c 站在不同的角度
  • 头文件与库的区别

    昨天突然问了一下什么是头文件 xff0c 我一听就傻了 xff0c 虽然上课的时候老师在讲编译的四个过程的时候说了一下 xff0c 但是还是不太理解 xff0c 我们知道编译过程中的预处理阶段会进行头文件展开 xff0c 宏替换以及条件编译
  • 进程、线程

    线程 xff08 thread xff09 线程其实是操作系统能够进行运算调度的最小单位 它是被包含在进程之中的 xff0c 是进程中的实际运作单位 一条线程指的是进程中一个单一顺序的控制流 xff0c 一个进程中可以并发多个线程 xff0

随机推荐

  • 基于Zynq7020双千兆以太网的数字信号处理板设计

    一 背景 背景 Xilinx公司在2010年发布了可扩展的处理器平台Zynq7000系列 xff0c 它采用了28nm工艺 xff0c 将FPGA与ARM cortex A9集成在一颗芯片上 xff0c 实现了高性能 高集成度 低功耗 Zy
  • 深入理解JS中的变量作用域

    在 JS 当中一个变量的作用域 xff08 scope xff09 是程序中定义这个变量的区域 变量分为两类 xff1a 全局 xff08 global xff09 的和局部的 其中全局变量的作用域是全局性的 xff0c 即在 JavaSc
  • 硬件工程师,从零开始无人机开发。

    毕业已经五年了 xff0c 一直在杭州某大厂 xff0c 做无人机硬件开发 无人机这块 xff0c 我进去的时候大厂刚开始 做 xff0c 有幸参与到整个无人机的硬件开发 我这个刚毕业的技术小白 xff0c 在这五年间成长了很多 无奈 今年
  • 个人总结:板球控制系统之串级PID整定方法,速度环与位置环,40S任务10S完成

    其实单环我们先出了所有题目 xff0c 但是效果显然没有串级PID的效果好 xff0c 有人需要的话可以把程序包发出来 xff0c 板球运行视屏也有 另外 xff1a 天下舵机参差不齐 xff08 哪怕型号相同 xff09 xff0c 想要
  • 树莓派3B+踩坑记录:一、安装Ubuntu Mate

    树莓派3B 43 踩坑记录 xff1a 一 安装Ubuntu Mate 树莓派 xff0c Ubuntu xff0c ROS硬件准备软件准备系统烧录安装Ubuntu Mate更换国内源网络配置开启ssh远程其他彩虹屏解决方案XShell和X
  • PointNet代码详解

    PointNet代码详解 最近在做点云深度学习的机器人抓取 xff0c 这篇博客主要是把近期学习PointNet的一些总结的知识点汇总一下 PointNet概述详见以下网址和博客 xff0c 这里也就不再赘述了 三维深度学习之pointne
  • 卡尔曼滤波通俗易懂的解释

    关于卡尔曼滤波 xff0c 网上的资料很多 xff0c 但是有很大一部分都是不断堆叠公式 xff0c 然后用各种晦涩难懂的专业术语进行解释 xff0c 说实话我刚开始看的时候也是云里雾里 xff0c 因此写下这篇博客是为了照顾和我一样的萌新
  • STM32通过PWM控制ESC30C电调

    最近在搞一个水下推进器 xff0c 这东西的控制其实跟四旋翼的螺旋桨控制差不多 但我也是第一次用STM32板子来控制电调驱动桨叶旋转 xff0c 因此踩了很多坑 网上找了很多资料 xff0c 但是很多都写的不是很清楚 xff0c 这边稍微记
  • STM32F7同一定时器多路输出PWM波通道之间相互影响问题

    2020 8 12更新 这次用Cube直接生成PWM控制代码 xff0c 然后再RT Thread Studio上编写程序 xff0c 发现可实现TIM1和TIM8的8路PWM波调控 xff0c 因此上面论述的问题可能是自己在写底层时有某些
  • Ardusub源码解析学习(一)——Ardusub主程序

    APM Sub源码解析学习 xff08 一 xff09 Ardusub主程序 前言一 准备工作二 Ardusub cpp解析2 1 scheduler table2 2 schedulerget scheduler tasks setup
  • Ardusub源码解析学习(二)——电机库

    Ardusub源码解析学习 xff08 二 xff09 电机库学习 一 RC输入与输出1 1 RC Input1 2 RC Output 二 电机库学习2 1 setup motors 2 2 add motor raw 6dof 2 3
  • Ardusub源码解析学习(三)——车辆类型

    APM Sub源码解析学习 xff08 三 xff09 车辆类型 一 前言二 class AP HAL HAL三 class AP Vehicle3 1 h3 2 cpp 四 class Sub4 1 h4 2 cpp 五 总结 一 前言
  • 年度回忆录(2012.10----2013.01)

    寒假结束了 xff0c 年也过完了 xff0c 提前回来一天就开始着手补上这迟到的年终总结 xff0c 写了一个多星期还觉得有些东西没有写出来 xff0c 无奈 xff0c 点到为止吧 2012 年的后半年经历了很多 xff0c 收获了很多
  • Ardusub学习——飞行模式

    参考资料 xff1a Ardusb官方手册 Sub Rework joystick input and pilot input in general Flight Modes Ardusub支持多种飞行模式 xff0c 但是其中一部分需要有
  • Ardusub源码解析学习(五)——从manual model开始

    Ardusub源码解析学习 xff08 五 xff09 从manual model开始 manual init manual run 从本篇开始 xff0c 将会陆续对Ardusub中各种模式进行介绍 xff0c stabilize mod
  • 重读Ardupilot中stabilize model+MAVLINK解包过程

    APM源码和MAVLINK解析学习 重读stabilize stabilize modelinit run handle attitude MAVLINK消息包姿态信息传输过程 之前写的模式都是基于master版本的 xff0c 这次重读s
  • QGC添加自定义组件和发送自定义MAVLINK消息

    QGC添加自定义组件和发送自定义MAVLINK消息 一 添加自定义组件1 1 在飞行界面添加组件1 2 实现组件事件1 3 在MOCK模拟链接中实现验证1 4 验证 二 自定义MAVLINK消息的一些预备知识三 QGC自定义MAVLINK消
  • MAVLINK消息在Ardupilot中的接收和发送过程

    MAVLINK消息在Ardupilot中的接收和发送过程 SCHED TASKupdate receive update send 由于现在网上很多的都是APM旧版本的解释 xff0c 因此把自己的一些学习所得记录下来 截至写博客日期 xf
  • Ardupilot姿态控制器 PID控制流程

    Ardupilot姿态控制器 PID控制流程 一 PID姿态控制器1 1 Copter姿态控制官方原图1 2 ArduCopter V4 X STABILIZE 二 姿态控制器类实现2 1 类成员解析2 1 1 类成员变量2 1 2 类成员
  • APM姿态旋转理论基础

    APM姿态旋转理论基础 一 坐标系1 1 NED坐标系1 2 机体坐标系 二 欧拉角姿态变化率与机体角速度的关系 三 旋转矩阵3 1 基本公式3 2 矩阵作差3 3 旋转矩阵与变换矩阵的区别 四 DCM五 轴角法5 1 基本概念5 2 与旋