Robotics: Aerial Robotics(空中机器人)笔记(三):无人机运动学建模

2023-05-16

在这一章里,我们将探索四旋翼无人机的运动学原理。 这章将会讲机器人学中的坐标转换(Transformation)、旋转(Rotation)、欧拉角(Euler Angles)、角-轴旋转表示(Axis/Angle Representations for Rotations)、角速度(Angular Velocity) 等知识。

上一章链接:

Robotics: Aerial Robotics(空中机器人)笔记(二):无人机能量学与系统设计

坐标变换(Transformations)

在这部分中,我们将深入了解描述三维刚体运动所需的基本概念和描述三维位移的基本工具。

参考坐标系(reference frame)

首先我们来讲一下参考坐标系:

因为是要描述三维刚体运动,所以参考坐标系是三个相互正交(虽然不一定要正交,但是正交会更方便)的向量。通常对于四旋翼无人机来说,这三个方向一般如图所示,一个是无人机的前进方向,一个垂直于前进方向,最后一个是垂直于这两个轴的相交平面指向上方。

那么四旋翼无人机的速度就可以确定下来了:

刚体位移(Rigid Body Displacemen) 

当这个刚体位移时,点 p 位移到一个新的点,我们称之为 g(p),位移本质上是点的变换。当然如果有一个点 q ,那么位移后的点就是 g(q) 。p 到 q的矢量 v 经过位移后的向量为 g_*(p) ,因为一个输入的是点,一个输入的是向量,所以名字不一样。

那么刚体的位移有什么特性?

(1)刚体内任意两点的距离不变,这很容易理解:

(2)刚体内任意向量的外积经过位移等于位移后的向量的外积:

(3)正交的向量也互相映射:

(4)内积也满足:

旋转矩阵(Rotation Matrix):

我们在刚体位移中引入参考坐标系(向量两两正交),那么这两个参考坐标系怎么描述呢?

我们通过线性代数的学习就可以知道,每个向量都可以用相互正交的向量来描述,在三维空间中就有:

其中,这样的矩阵就是定义为旋转矩阵:

旋转矩阵的特性(Properties of a Rotation Matrix) :

(1)旋转矩阵是个正交矩阵,也就是它与它的转置相乘就是单位矩阵。

(2)其行列式等于1。

(3)任意两个旋转矩阵相乘也是旋转矩阵,也就是当刚体运动多次时,我们只需要把每个旋转矩阵相乘就能得到最后的坐标变换。

(4)旋转矩阵的逆矩阵也是旋转矩阵,这里稍微提一下,如果我们旋转一个矩阵,要把它还原回去,其实旋转回去的的旋转矩阵就是原先的逆矩阵(转回去就是逆回来)。而正交矩阵的转置是其逆矩阵,所以旋转矩阵的逆矩阵是其转置。

那么刚体位移后的点 g(Q) 应当怎么描述?

我们把位移后的 Q (称之为 Q' )放到位移前的参考坐标系中,那在参考坐标系下的从原点到 Q'

的向量可以这样描述: 

其中:

旋转(Rotation) 

我们之前讨论了旋转矩阵,旋转矩阵是3X3矩阵,其为正交矩阵,并且行列式的值为1。

这些类型的矩阵构成了特殊的正交群。我们用 SO(3)来指代这个群。它是指三个维度上的特殊正交
Special Orthogonal group in 3 dimensions ) :

描述旋转其实有多种方法,旋转矩阵就是其中一种,但不够直观,接下来我们会讲一些描述旋转的其它方法,其中有些方法在这门课中不会提及:

(1)旋转矩阵(Rotation matrices) 

(2)欧拉角(Euler angles)

(3)Axis angle parameterization

(4)指数坐标(Exponential coordinates,不讲)

(5)四元数(Quaternions,不讲)

这里还提到了一点,我们经常会使用纬度和经度来描述地球表面上的一点。也就是说这一点和这一点的经纬度是一一对应的,没有其它的点可以用这对经纬度来描述,这对经纬度也只能指代这一个点。但事实上并不是所以的点都可以由唯一的经纬度来描述,这些点就是地球的南北两极点。两极有可以一个独特的纬度,但经度却没有明确定义。事实上,任何经度都可以用来描述北极或南极。

为什么特别提出这一点呢?这在后面的内容会有涉及。

 欧拉角(Euler Angles

欧拉证明了描述一般旋转需要三个坐标,这些坐标称为欧拉角。如果我们要描述A坐标系到D坐标系的旋转 ^{A}R_D ,我们可以将其分解成三个过程,分别是将A坐标系绕 x 轴旋转角度 \psi ,绕 y 轴旋转角度 \phi 以及绕 z 轴旋转角度 \theta ,其中这三个角度就是翻滚角(roll)、俯仰角(pitch)和偏航角(yaw),并且这样的描述方式我们称之为X-Y-Z 欧拉角

 还有一种描述方式我们称之为Z-Y-Z欧拉角,其实就是先绕 z 轴旋转 \phi,再绕 y轴旋转 \theta,最后再绕 z 轴旋转 \psi:   

 我们发现当 \theta 不为 0 时,其它两个旋转时的 z 轴是不共线的,这三个旋转的组合就可以与特定的旋转一一对应。但当 \theta 为 0 时, 其它两个旋转时的 z 轴是共线的,这时候的情况就与地球的南北两极点类似。比如说,当\phi = \psi= 45度时实际步就是绕  z 轴旋转了90度,那么其实也可以用 \phi = 30度且\psi= 60度来描述,也就是说这个旋转组合的描述就不唯一了。

 我们再深入了解一下,Z-Y-Z欧拉角对应的旋转矩阵如下:

 怎么推的,这里我用matlab代码演示一下:

syms psi theta phi real; %定义三个角度的符号变量并设置成实数

R1 = [cos(phi) -sin(phi) 0; sin(phi) cos(phi) 0; 0 0 1];
R2 = [cos(theta) 0 sin(theta); 0 1 0; -sin(theta) 0 cos(theta)];
R3 = [cos(psi) -sin(psi) 0; sin(psi) cos(psi) 0; 0 0 1];

simplify(R1*R2*R3)

结果就是上面的公式,至于R1,R2,R3为什么这么设置,推荐看下面的链接:

3维旋转矩阵推导与助记

感兴趣的同学也可以试下用代码看一下X-Y-Z欧拉角的旋转矩阵的样子。

假如我们已经知道了旋转矩阵的具体值,那么通过绿色的方框也就是R_{33} 我们就能求得 \theta 的值,再通过蓝色的方框我们就能求得 \psi 的值,同时通过黄色的方框求得 \phi 的值:当 \left | R_{33}\right | <1 时的计算公式如下:

 注意这里用的是atan2函数。这是因为如果用普通的反正切,输入正切值的话会造成模糊的结果,用atan2函数则可以避免:

 

 当 \left | R_{33}\right | =\pm 1 时,我们会发现,旋转矩阵里的每一个元素其实都是关于 \phi 和 \psi的正余弦角度求和公式,所以说这时的旋转矩阵其实就是一个关于  \phi + \psi 的函数。假设   \phi + \psi =90,那么就有无数个 \phi 和 \psi 的组合满足这一条件。就如同我们之前讲的Z-Y-Z欧拉角中绕 y 轴旋转的  \theta 为 0 时, 其它两个旋转时的 z 轴是共线的,那这个旋转组合的描述就不唯一了。

最后还讲到他们实验室用的四旋翼无人机常用的欧拉角描述方式是 Z-X-Y欧拉角,如下图所示:

角-轴旋转表示(Axis/Angle Representations for Rotations)

现在看看另一种描述旋转的方式,这种方式给定一个旋转轴和旋转角度就能描述一个旋转。

假设刚体上有一个点O,如果经过位移后这个点O保持不变,就相当于刚体在绕着这个穿过点O的轴旋转。

怎么证明这一点呢?

通过之前的讨论我们可以知道,刚体经过旋转后的某个点可以这样表示:

所以我们就有两个3 X 1的向量 \textbf{p} 和 \textbf{q},与旋转矩阵相关:

那么我们想知道的是:是否存在一个点 \textbf{p}使得经过 R 的旋转后,保持不变?也就是:

 这个形式学过线性代数的同学就会很熟悉,这不就是特征向量和特征值吗:

所以当特征值,也就是 \lambda=1 里就是这个问题的解,也就是说结果是存在的,即经过旋转后p的方向和大小保持不变,那就相当于绕着经过 \textbf{p} 的轴旋转了。

接下来我们反过来思考,给定一个特定的轴 \textbf{u} 和旋转方向 \phi,我们怎么计算旋转矩阵?如下图所示,我们建立一个与旋转轴 \textbf{u} 垂直的向量 \textbf{v},把 \textbf{p} 分解成这两个向量的量,那么在 \textbf{u} 方向上的分量就是 (\textbf{p} \cdot \textbf{u})\textbf{u}(因为点积就是求一个向量在另一个方向的投影的大小)。在 \textbf{v} 方向上的分量就是 \textbf{p} 本身减去  \textbf{u} 方向上的分量 (\textbf{p} \cdot \textbf{u})\textbf{u},由于是在三维空间,我们还建了一个\textbf{w}=\textbf{u} X \textbf{v}的轴,表示与其它两个轴正交:   

接下来我们可以考虑绕特定的轴 \textbf{u} 和旋转 \phi 的情况了,其相关的公式如下图所示,我们来进行一个个推导:

首先是向量 \textbf{v} 绕 \textbf{u} 旋转后的向量,我们可以用其在 \textbf{w} 和 \textbf{v} 上的分量相加得到,也就是:

\text{v}cos\phi + \text{u} \times \text{v}sin\phi

那么向量 \textbf{p} 在这个向量上的投影就是把 \textbf{p}-(\textbf{p}\cdot \textbf{u})\textbf{u} 代入到 \textbf{v}

(\textbf{p}-(\textbf{p}\cdot \textbf{u})\textbf{u})cos\phi + \textbf{u} \times (\textbf{p}-(\textbf{p}\cdot \textbf{u})\textbf{u})sin\phi

由于向量 \textbf{p} 在 \textbf{u} 轴上的分量 (\textbf{p}\cdot \textbf{u})\textbf{u} 旋转后也不会变化,所以向量 \textbf{p} 旋转后的向量就是这两个向量相加:

(\textbf{p}-(\textbf{p}\cdot \textbf{u})\textbf{u})cos\phi + \textbf{u} \times (\textbf{p}-(\textbf{p}\cdot \textbf{u})\textbf{u})sin\phi + (\textbf{p}\cdot \textbf{u})\textbf{u}

\textbf{p}cos\phi + (\textbf{p}\cdot \textbf{u})\textbf{u}(1-cos\phi) + \textbf{u} \times \textbf{p}sin\phi     其中\textbf{u} \times (\textbf{p}\cdot \textbf{u})\textbf{u} = 0

我们把 (\textbf{p}\cdot \textbf{u})\textbf{u} 改写成向量相乘的形式:

(\textbf{p}\cdot \textbf{u})\textbf{u} =\textbf{u} (\textbf{p}\cdot \textbf{u}) = \textbf{u}(\textbf{u}^T\textbf{p}) = \textbf{u}\textbf{u}^T\textbf{p}

那么就得到:

\textbf{p}cos\phi + \textbf{u} \textbf{u}^T(1-cos\phi) \textbf{p}+ \textbf{u} \times \textbf{p}sin\phi

因为叉积的形式可以这么表达,我们用hat操作符表示一个反对称矩阵:

 所以就有:

\textbf{a} \times \textbf{b} =\hat{\textbf{a}}\textbf{b}

所以就得到最终的形式以及相应的旋转矩阵:

通过这个旋转矩阵的公式我们就可以知道,(u,\phi) 和 (-u,2\pi - \phi) 可以描述同一个旋转,所以不是一对一的关系,那么要是把 \phi 限制到 [0,\pi] 呢,这个我们后面讨论。

得到这个旋转矩阵之后,我们怎么求得对应的轴 \textbf{u} 和旋转角度 \phi 呢?公式如下:

其中 \tau 是旋转矩阵的迹:

\tau = tr(I)cos\phi + tr(\textbf{u}\textbf{u}^T)(1-cos\phi) + tr(\hat{\textbf{u}})sin\phi

=3cos\phi + 1-cos\phi

= 2cos\phi +1

由于反对称矩阵的性质我们可以知道 \hat{a}^T= -\hat{a},而旋转矩阵的转置其它两个相加的量不会发生变化,所以我们就有:

R-R^T = 2\hat{u}sin\phi

所以得证。由公式就可以知道当 \tau=3 时 \phi=0,那么相当于没有旋转,也就不用讨论要绕那个特定的轴,换句话说,就是任意的轴都可以用来描述。也就是此时(u,\phi)和旋转矩阵不是一对一的关系。\tau=-1 时 \phi=\pi,可以用 \textbf{u} 和 \textbf{-u} 来描述,我们可以把其代入公式看看,所以也不是一对一的关系。所以当把 \phi 限制到 [0,\pi] 时,除了这两种情况其它都是一对一的关系。

角速度(Angular Velocity) 

讨论完旋转的概念之后,我们就可以来讲一下旋转变化率,也就是角速度了。我们知道,线速度的话就是位移对时间求导,那么自然地,求角速度就是旋转角度对时间求导。

现在我们来对一个3 X 3 的旋转矩阵求导,我们知道,旋转矩阵是正交的,所以有如下性质,并对其求导得到如下的恒等式:

那么我们就可以得到 R^T\dot{R} 和 \dot{R}R^T 是反对称矩阵,简单推导R^T\dot{R},另一个同理:

  R^T\dot{R} = -\dot{R^T}R = -(R^T\dot{R})^T

我们再来考虑如下的旋转:

这次我们要想象,这次的旋转是随着时间发生变化的,也就是:

注意到向量 \textbf{p} 是一个常量,因为我们把 \textbf{p} 放在固连系(body-fixed frame)思考,也就是这个坐标系会随着刚体的旋转而旋转,即  \textbf{p} 在这个坐标系上的位置不会发生改变,而q是在惯性系(inertial frame)考量的,也就是有一个绝对的坐标系,它不会随着刚体的旋转而发生改变。所以有以上的式子。

我们对这个式子求导,所以左边的部分的 \dot{q} 是惯性系下的速度,右边部分的 p 是固连系下的位置:

然后我们在式子两边同时左乘上 R^T,那么在式子右边就是固连系下的速度。这是因为我们在上面两个坐标系的定义就可以知道,固连系旋转回去就和惯性系重合,就得到如下的式子,紫色方框内的变量我们在上面就推导出了是反对称矩阵,所以可以用 \hat{\omega}^b 表示:

那在惯性系下的表示如下,用 q = Rp 两式左乘 R^T 得到 p = R^Tq,将其代入上式中得到。同理橙色方框的式子用 \hat{\omega}^s 表示:

有了这两个式子,我们就可以分别求到惯性系和固连系上的角速度。 

下一章链接:

Robotics: Aerial Robotics(空中机器人)笔记(四):无人机动力学

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Robotics: Aerial Robotics(空中机器人)笔记(三):无人机运动学建模 的相关文章

  • 《机器学习》周志华 集成学习

    8 1个体集成 个体学习器可以由 C4 5决策树算法 BP神经网络等 来训练 个体学习器 同质 gt 叫基学习器 也叫弱学习器 指泛化性能略优于随机猜测的学习器 xff0c 如二分类问题上精度略高于50 的分类器 相应的算法叫做 基学习算法
  • 【Windows内核编程】Win10/Win11通过PspCidTable取得EProcess

    温馨提示 本文的内容均在Windows 11 Enterprise 22000 466 版本下测试 不同版本的部分内容可能存在差异 xff0c 但万变不离其中 Upadate 20220803 经测试 xff0c 本文内容目前向下兼容 正文
  • 自抗扰控制的入门学习(一)—— 前言

    自抗扰控制的入门学习 xff08 一 xff09 前言 与很多人一样 xff0c 接触这个算法之后心态也经历过 xff0c 从一开始的 不明觉厉 xff0c 中途的 不以为然 xff0c 到最后的 辩证看待 的演变过程 借用别人的话 xff
  • Qt中QMessageBox的用法---看这一篇就够了

    一 详细说明 QMessageBox类提供一个模态对话框 xff0c 用于通知用户或询问用户一个问题并接收答案 消息框显示一个主要文本 xff0c 用于向用户提示某个情况 显示一个信息文本 xff0c 用于进一步解释警报或向用户询问问题 显
  • CCM-SLAM代码阅读

    ClintNode cpp boost span class token operator span shared ptr span class token operator lt span cslam span class token o
  • 树莓派之无屏幕无路由器网线直连树莓派(二)

    经上篇博客安装好系统后 xff0c 先不要拔出SD卡 xff0c 因为树莓派默认不开启ssh xff0c 所以先打开SD卡在里面新建文件命名为 ssh xff08 一定要小写 xff09 xff0c 然后找到cmdline txt文件打开并
  • SQL Server无法连接到服务器的解决方法

    SQL Server连接失败如何解决 xff1f 楼主安装了两次数据库 xff0c 都是官网最新的2017 Developer版本的 SSMS安装的是最新的18 3 经历了各种失败之后成功连接数据库 下面总结几种实用的方法给大家 xff0c
  • Android Studio如何实现音乐播放器(简单易上手)

    我们大家平时长时间打代码的时候肯定会感到疲惫和乏味 xff0c 这个时候一边播放自己喜欢的音乐 xff0c 一边继续打代码 xff0c 心情自然也愉快很多 音乐带给人的听觉享受是无可比拟的 xff0c 动听的音乐可以愉悦人的身心 xff0c
  • 一分钟学会Python中pip的安装与使用

    文章目录 一 简单介绍二 下载安装三 最常用命令1 显示版本和路径2 获取帮助3 升级 pip4 安装包5 升级包6 卸载包7 搜索包8 显示安装包信息9 列出已安装的包10 查看指定包的详细信息 一 简单介绍 pip 是 Python 包
  • 不清楚SBUS,这份SBUS协议详解请收藏

    1 简介 SBUS xff0c 全称Serial Bus xff0c 即串行通信总线 本质上是一种串口通信协议 xff0c 采用100K的波特率 xff0c 8位数据位 xff0c 2位停止位 xff0c 偶效验 xff0c 即8E2的串口
  • IDEA 创建Servlet,HelloWorldServlet(图文并茂,超级详细)

    第一步 xff1a 创建一个空的新项目 xff0c File gt New gt Project Empty Project 第二步 xff1a 生成一个module xff0c 项目上点右键 xff0c New gt Moudle 或 F
  • 教你彻底卸载Ubuntu双系统,去污不残留

    我们卸载Ubuntu双系统 xff0c 可能出于以下原因 xff1a span class token number 1 span span class token class name Ubuntu span 系统内核损坏无法正常进入 s
  • Python安装Pytorch教程(图文详解)

    最近人工智能等多门课需要复现论文 xff0c 近两年的论文很多都是基于Pytorch环境做的实验 xff0c 所以 xff0c 这里总结一下Pytorch的安装教程 xff0c 做好最快 最简单 最好地完成安装 本机环境Win10 43 1
  • Win10安装Ubuntu18.04双系统,图文详解,全网最详细教程

    博主经历过多次双系统的安装与卸载 xff0c 所以这次安装就记录下全过程 xff0c 能让后面的同学少走弯路 本教程对笔记本电脑单硬盘和双硬盘通用 安装目录 一 查看电脑信息1 BIOS模式2 查看硬盘数 二 制作系统盘1 下载镜像源2 制
  • Ubuntu18.04安装Ceres,图文详解

    视觉SLAM14讲 的第6章里面 xff0c 用到了Ceres库 xff0c 按照本书3rdparty提供的资源编译时 xff0c 会报错 xff0c 原因是和eigen3版本发生冲突 网上很多解决方法是重装eigen xff0c 尝试后也
  • Ubuntu20.04部署yolov5目标检测算法,无人车/无人机应用

    在FireFly RK3588开发板上烧录了Ubuntu20 04系统 xff0c 在此基础上线部署下简单的Python版本yolov5代码 xff0c 目前博主已全部转为C 43 43 版本了 xff0c 并且转化了pt模型为rknn模型
  • ubuntu查看cpu使用率

    rk3588上安装的ubuntu系统 xff0c 规格书上是8核CPU xff0c 希望跑算法时使用4核来跑 xff0c 所以需要查看cpu的使用情况 输入gnome system monitor xff0c 开启进程界面 xff1a 点击
  • 【视觉SLAM】MonoRec: Semi-Supervised Dense Reconstruction in Dynamic Environments from a Single Moving C

    Citations xff1a F Wimbauer N Yang L von Stumberg et al MonoRec Semi Supervised Dense Reconstruction in Dynamic Environme
  • Win10蓝屏问题:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED

    最近一段时间 xff0c 我一直出现蓝屏的情况 xff0c 以为是 span class token constant CPU span 散热不行导致的重启 xff0c 因为比较频繁所以在此记录解决这个问题 xff0c 还是一贯的风格 xf
  • Android Studio实现文件管理器

    项目目录 一 项目概述二 开发环境三 详细设计1 布局设计2 程序运行时申请权限3 查看文件4 删除文件5 搜索文件6 新建文件 四 运行演示 一 项目概述 本次带来的文件管理器 xff0c 能够对SD卡的目录进行管理 主要功能包括新建文件

随机推荐

  • Failed to install the following Android SDK packages as some licences have not been accepted. bu

    报错信息 Android 开发者工具 Android开发者构建工具28 0 3 Android开发者平台28的协议都没有被接受 Failed to install the following Android SDK packages as
  • Jetson TX1 介绍

    前因 Jetson TX1 核心模块目前已经停产 xff0c 但是我们发现市面上有很多二手模块可以很容易获取 xff0c 同时 xff0c 英伟达对于Jetson TX1 的所有软件支持依然集成在了SDK manager中 xff0c 在最
  • Received status code 400 from server: Bad Request

    一 报错信息 FAILURE span class token operator span span class token class name Build span failed span class token keyword wit
  • Oracle VirtualBox虚拟机安装

    1 到官网下载虚拟机安装包 xff08 https www virtualbox org wiki Downloads xff09 2 下载后的样子 3 选择安装路径 4 选择要安装的功能 5 安装 6 安装完成
  • VirtualBox虚拟机安装Red Hat Enterprise Linux7.2

    1 首先安装好VirtualBox 2 下载好rhel server 7 2 xff0c 下载好长这样 3 点击新建 xff0c 在弹出窗口中输入名称 xff0c 选择类型和版本 xff0c 之后点击下一步 4 选择内存大小 xff0c 根
  • HTML 页面中的 target 用法

    值含义 blank在新窗口中打开链接 parent在父窗体中打开链接 self在当前窗体打开链接 此为默认值 top在当前窗体打开链接 xff0c 并替换当前的整个窗体 框架页 一个对应的框架页的名称在对应框架页中打开
  • VirtualBox挂载RedHat光盘

    1 使用root用户登录RedHat系统 xff0c 点击设备 gt 安装增强功能 2 安装增强功能后桌面会出现一个光盘标志 xff0c 弹出框点取消 3 为防止后续步骤出错 xff0c 此处重新分配光盘 点击设备 gt 分配光驱 xff0
  • RedHat系统使用yum安装软件

    使用yum命令安装软件 xff0c 此处以system config users为例 1 配置yum源配置文件 xff08 存放在 etc yum repos d文件夹下 xff09 xff1b 切换到 etc yum repos d文件夹
  • 初识HTML

    什么是HTML xff1f HTML 指的是超文本标记语言 HyperText Markup LanguageHTML 不是一种编程语言 xff0c 而是一种标记语言标记语言是一套标记标签 markup tag HTML 使用标记标签来描述
  • Window 安装MySQL8

    1 下载安装包 官网下载MySQL安装包 xff0c 下载地址 https dev mysql com downloads mysql 2 解压缩 将下载好的压缩包解压至你的安装目录 xff0c 我的路径为E tools MySQL ins
  • Windows 安装Navicat 连接MySQL

    1 下载Navicat Premium 进入官网https www navicat com cn download navicat premium下载Navicat Premium 2 安装 选择安装路径 然后一直点击下一步 xff0c 直
  • win10 安装Python3.8和pip

    下载安装包 1 进入Python官网https www python org xff0c 选择Windows 2 往下滑 xff0c 找到3 8 10 xff0c 选择Download Windows installer 64 bit xf
  • jeston TX1/TX2 系统迁移至SD卡的正确步骤

    如果是刚刚开始Nvidia jeston TX1 TX2 开发的初学者 xff0c 希望本文可以帮助节省时间 首先上张图 xff0c 完成配置后的 jeston TX1 载板使用的是作者自己设计的EdgeBox EHub tx1 tx2 E
  • win 10安装IPython

    什么是IPython Ipython是一种交互式解释器 Ipython的性能优于标准Python的shell IPython支持变量自动补全 xff0c 自动缩进 xff0c 支持 bash shell 命令 xff0c 内置了许多很有用的
  • Java连接MySQL数据库

    Java连接MySQL数据库 数据库帮助类DBHelper java 使用的JDBC驱动是 mysql connector java 8 0 25 jar span class token keyword import span java
  • ubuntu安装cmake

    参考 xff1a ubuntu安装cmake 陈 洪 伟的博客 CSDN博客 ubuntu安装cmake 注意 xff1a https cmake org download 下载cmake时 xff0c 要下载Source distribu
  • ADRC最速综合函数fhan实现

    ADRC最优综合函数fhan函数测试 fhan函数是ADRC的跟踪微分控制器的核心函数 xff0c 使得状态变量可以快速跟踪上系统输入 本例中 xff0c 设理想输入v 61 sin t 用状态变量x1跟踪输入 xff0c x2跟踪输入的导
  • 【日志】gazebo无法加载模型 & 黑屏 & ResourceNotFound &[gazebo-1] process has died [pid 11734, exit code 255]

    问题1 ResourceNotFound xacro 解决方法 sudo apt get install ros kinetic xacro 问题2 ERROR cannot launch node of type gazebo ros g
  • Robotics: Aerial Robotics(空中机器人)笔记(二):如何设计一架四旋翼无人机

    在这一章里 xff0c 我们将探索四旋翼如何飞行的 这章将会讲一些基本的力学原理以及如何设计无人机 上一章链接 xff1a Robotics Aerial Robotics xff08 空中机器人 xff09 笔记 xff08 一 xff0
  • Robotics: Aerial Robotics(空中机器人)笔记(三):无人机运动学建模

    在这一章里 xff0c 我们将探索四旋翼无人机的运动学原理 这章将会讲机器人学中的坐标转换 xff08 Transformation xff09 旋转 xff08 Rotation xff09 欧拉角 xff08 Euler Angles