minimumsnap(1)微分平坦特性(Differential Flatness)

2023-05-16

本文内容参考论文:Minimum Snap Trajectory Generation and Control for Quadrotors,Daniel Mellinger and Vijay Kumar

从名字可以看出,我们需要最小化snap,snap就是加加加速度,我们知道位置是p,位置的导数是速度v,速度的导数是加速度a,加速度的导数是加加速度jerk,加加速度的导数是加加加速度snap,因此我们最小化的就是加加加速度snap。论文开始先证明的微分平坦的特性,我们知道,无人机的全状态空间为12维,位置,速度,姿态角,角速度,如下式子所示
在这里插入图片描述
我们在做轨迹规划的过程中不可能对12维的全维度空间进行规划,这是非常复杂的,但可以找到一个平坦输出的空间,这个空间只有四个维度的变量,位置x,y,z和偏航角,剩下所有的状态都能用这四个变量和其有限阶导数的代数组合所表示,因此在做无人机轨迹规划的时候只需要对这四个变量进行规划就可以了。因此我们平坦输出空间选择为
在这里插入图片描述
其中
在这里插入图片描述

下面证明为什么可以用这四个变量来表示全维度的空间。
首先,位置x,y,z和偏航角不用说了,速度x,y,z的导数也不用说,现证明滚转角和俯仰角可以用这四个变量和其有限阶导数的代数组合所表示,这里给出两种证明方法。
第一种:我们知道对于无人机来说有两个坐标系,一个是地面坐标系,一个是机体坐标系,而机体坐标系就是通过地面坐标系旋转得来的,比如我们常用的欧拉角表示为Z-Y-X那么机体坐标系就是通过先绕Z轴旋转,然后绕Y轴旋转,然后饶X轴旋转,实际上旋转的角度就是三个姿态角,那么如果机体坐标系的三个坐标轴能用这四个变量和其有限阶导数的代数组合所表示,也就表明姿态角能用这四个变量和其有限阶导数的代数组合所表示。看图片,显然机体坐标系的Z轴是可以表示为下列式子的,
在这里插入图片描述
这个应该很好理解了,实际上无人机在飞行过程中一共就受两个力的作用,一个为升力F,其垂直于机体平面向上,一个为重力G,而机体坐标系的Z轴实际上就是升力F的方向,升力在x,y方向分解分别为其在x,y方向的加速度,在Z轴方向分解再减掉一个mg即为在Z轴的加速度方向,因此想得到力在Z轴分解的方向,就用Z方向的加速度加个g就可以了。因此机体坐标系的Z轴可以用这四个变量和其有限阶导数的代数组合所表示。那接下来需要证明机体坐标系的X轴和Y轴也可以用这四个变量和其有限阶导数的代数组合所表示。
首先构造一个坐标系,这个坐标系是将地面坐标系绕着Z轴旋转偏航角获得的。也就是图中的C坐标系,
其中
在这里插入图片描述
然后将C坐标系平移到机体坐标系,与机体坐标系的中心重合。在minimumsnap这篇论文中使用的是Z-X-Y欧拉角,那么机体坐标系可以看做世界坐标系先绕 z B z_B zB轴旋转,此时得到的坐标系与C重合,然后绕着 x B x_B xB,此时 x B x_B xB x C x_C xC依然是重合的,最后绕着 y B y_B yB旋转,那么显然此时 z B z_B zB x B x_B xB,与 x C x_C xC是在一个平面上的,正常我们知道 y B y_B yB是由 z B z_B zB x B x_B xB叉乘得来的,又因为上述三个向量在同一个平面内,因此可以得到 y B y_B yB实际上可以由下面这个式子进行表示,那我们知道 z B z_B zB x C x_C xC都能用平坦输出空间上的变量及其各阶导数的代数组合表示,那么 y B y_B yB就也可以用平坦输出空间上的变量及其各阶导数的代数组合表示,此时 z B z_B zB y B y_B yB确定,那么 x B x_B xB也随之确定了,R实际上就是旋转矩阵。实际上这一部分的证明就是想证明 y B y_B yB垂直于 x C x_C xC,那更简单的一种方法是直接拿出旋转矩阵发现二者直接点乘等于零就行了。至此,两个姿态角也就可以用平坦输出空间上的变量及其各阶导数的代数组合表示,最后就剩下角速度了。

在这里插入图片描述三个坐标系
实际上,姿态角的证明这一部分还有一个直接的方法,就是如果能解出来滚转角和俯仰角与四个平坦输出变量的关系,那也能证明,这个证明在这篇论文中有Vector Field Following for Quadrotors using Differential Flatness,DingJiang Zhou and Mac Schwager具体在这里就不给出了,实际上就是应用无人机的一些方程解出来的。解出来就是这样的形式
在这里插入图片描述
在这里插入图片描述
最后还剩p,q,r三个变量,也就是在x,y,z三个方向上的角速度,这个的证明如下:首先根据牛顿等式有
在这里插入图片描述
然后求导得
在这里插入图片描述
其中的 u 1 u_1 u1指的是升力,这个是无人机建模的牛顿方程,基本上随便一篇无人机的文章都能找到,
u 1 u_1 u1求导有
在这里插入图片描述
右乘一个 z B z_B zB得到
在这里插入图片描述
代入到上面式子,得到
在这里插入图片描述
又因为
在这里插入图片描述

对其叉乘一个 z B z_B zB得到
在这里插入图片描述
然后分别点乘 y B y_B yB x B x_B xB就能得到
在这里插入图片描述
在这里插入图片描述
至此x和y方向上的角速度可以表示出来,我们看一下式子的形式,实际上可以发现,其可以用平坦的四个变量及其各阶导数的代数组合表示,最后就剩下y轴上的角速度r,由于
在这里插入图片描述


z B z_B zB上时没有分量的,因为这个角速度的含义是在C系下看机体坐标系,实际上C系就是世界系转了一个偏航角,那自然再到机体坐标系时就不需要转偏航角了,因此没有分量,因此
在这里插入图片描述
因此r也能用平坦的四个变量及其各阶导数的代数组合表示,至此微分平坦的性质就证明完毕了。

注意:上面证明姿态角的时候使用的是Z-X-Y欧拉角,因为原文使用的就是这个欧拉角表示,那正常我们在做无人机的时候,使用的欧拉角表示为更一般的Z-Y-X欧拉角,那证明的方法实际上大同小异,只是我们应该先拿出 y C y_C yC,然后先求 x B x_B xB。有兴趣可以自己证一下。
在这里插入图片描述

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

minimumsnap(1)微分平坦特性(Differential Flatness) 的相关文章

  • ROS+UR机械臂+Moveit+ 仿真与实体机械臂的使用+realsense相机+eye_handeye手眼标定(亲测有效)下

    1参考链接 1 UR5 realsense手眼标定 2 优遨机器人UR5与RealSense深度摄像头D435的手眼标定 3 UR5 realsense手眼标定 4 标定所需二维码 5 ROS下UR5 usb cam单目外参标定 xff08
  • 链表的头节点理解

    不管带不带头节点 xff0c 头指针始终指向第一个结点 xff0c 头指针始终指向第一个结点 xff0c 而头节点是带头结点的链表的第一个结点 xff0c 结点内通常不存储信息 图示如下 xff1a 2 在建立链表时 xff0c 如果是不带
  • 汇编语言学习04之X86计算机组件

    X86计算机组件 本文首先通过检查典型主板配置以及围绕 CPU 的芯片组来了解 x86 如何与其他组件的集成 然后讨论内存 I O 端口和通用设备接口 最后说明汇编语言程序怎样利用系统硬件 固件 xff0c 并调用操作系统函数来实现不同访问
  • 【翻译】服务器后端的编程语言

    对于那些需要web服务的初创公司里的大型新项目 xff0c 我会选择何种后端编程语言呢 xff1f 在客户端侧有CSS html和javascript xff08 包括CoffeeScript和TypeScript这类衍生语言 xff09
  • ubuntu换内核的方法适用于16-18系统

    2080ti的卡兼容18 04的5 0 0 37 generic内核驱动需要用418 56 ubuntu内核突然变了 导致nvidia显卡驱动用不了 进行内核降级 解决方法 查找可用的内核版本 grep menuentry boot gru
  • 统计信号估计 (二) 最小方差无偏估计量(MUV)的线性模型

    MVU表示最小方差无偏估计 xff0c 下面将推导一个线性模型的MVUE xff0c 即最小方差无偏估计量 线性模型可以表示为 xff1a x 61 H 43 w
  • python二级考试-每日刷题7

    知识导图 文件 文件的类型 文件的打开和关闭 文件的读写
  • 树莓派入门(笔记本当显示屏)

    树莓派入门 笔记本当显示屏 your elephant的博客 CSDN博客 树莓派连接笔记本屏幕
  • python-sklearn实现神经网络(数据量小的情况)

    以下内容笔记出自 跟着迪哥学python数据分析与机器学习实战 xff0c 外加个人整理添加 xff0c 仅供个人复习使用 神经网络 xff08 neural network 模块重要的有两个类 xff0c MLPClassifier 分类
  • 想免像控?RTK/PPK无人机 vs GCP 测绘精度对比

    无人机航拍测绘具有精度高 作业效率高 数据分析能力强的特点 xff0c 很大程度上解决了人工测绘的痛点 因此 xff0c 无人机在测绘工程中的应用越来越广泛 精度对于测绘从业人员来说精度至关重要 xff0c 针对RTK PPK 无人机和使用
  • ROS的GPS驱动包

    ROS WiKi地址 http wiki ros org nmea gps driver ROS功能包 xff1a nmea gps driver Package to parse NMEA strings and publish a ve
  • 【操作系统】进程切换到底是怎么个过程?

    首先 xff0c 我们要了解 xff0c 进程切换是个什么过程 xff1f 进程切换概念 其实很简单 xff0c 进程切换就是从正在运行的进程中 xff0c 收回CPU的使用权利 xff0c 交给下一个要运行的进程 实际上 xff0c 因为
  • docker设置多个环境变量

    在命令行直接使用 e或 env xff0c env file xff0c 每个变量写一次 e 2 在dockerfile里设置 这里键值是以空格分开的
  • 一些好用的c++ STL库函数

    stl可以说是懒癌患者福利了 持续更新 xff08 随缘更新 xff09 全排列函数next permutation 今天在洛谷做题的时候发现一个题简直是这个函数的完美应用 题目链接 xff1a 洛谷P1088 火星人 头文件 xff1a
  • 【FreeRTOS】中断机制

    FreeRTOS 之中断机制 在FreeRTOS中 xff0c 中断是实现实时性必要的操作 一款芯片的中断涉及到硬件触发 xff0c 软件触发 xff0c 软件中断处理 所以FreeRTOS的中断机制其实不好单独拿出来看 FreeRTOS关
  • 【VSPD虚拟串口】【Modbus Poll】【Modbus Slave】仿真工具的学习过程

    学习想法 xff1a 通信是工控行业内采集仪器仪表等设备信息的重要途径 xff0c 同时可以通过通信访问设备的工作状况对设备进行监控 xff0c 也可以通过通信对设备进行参数修改以及控制设备运行 xff0c 所以掌握通信是工控行业人员比不可
  • 【RISC-V】Trap和Exception

    文章目录 控制流 xff08 Control Flow xff09 和TrapRISC V Trap处理中涉及的寄存器mtvec Machine Trap Vector Base Address mepc Machine Exception
  • @TableId(type = IdType.AUTO)不生效问题

    随手记录一下 64 TableId type 61 IdType AUTO private Long id Cause java sql SQLException Field 39 id 39 doesn 39 t have a defau
  • Docker apt-get update报错

    在Docker改apt源出现问题 root 64 1ad3e492d821 etc apt apt get update Ign 1 http mirrors 163 com debian stretch InReleaseGet 2 ht
  • c语言 面试前必备基础知识

    目录 c语言 数据类型c语言 数据类型打印格式 c s d f lf p x o lu lldc语言 格式化输出 md 0md m nf c语言 常用字符的ASCII值c语言 变量 常量c语言 变量c语言 变量命名规范c语言 变量存储类型

随机推荐

  • **make[2]: *** [CMakeFiles/offb_node.dir/build.make:84:报错解决

    make报错很有可能是因为CmakeList里面的文件没有修改好 xff01 如果是cpp文件的话需要修改下面两部分 xff1a 1 修改的第一处 xff1a 把节点修改成自己文件的节点就可以 2 修改的第二处 xff1a
  • Ubuntu18.04下ROS+Gazebo+Mavros+PX4安装教程(最新!最全!)

    一 依赖安装 span class token function sudo span span class token function apt span span class token function install span nin
  • 在Gazebo仿真中修改仿真环境 (World)

    这一步是要把初始环境改成白色地板环境 xff0c 跑仿真或者基于地标降落的时候更容易观察 xff0c 让人看着也比较舒服 这一步只需要修改下面代码 原代码 xff1a xff08 初始环境 xff09 span class token op
  • 关于Arduino、树莓派和 Pixhawk微处理器对比分析

    摘要 xff1a Arduino是一款基于微控制器 xff08 单片机 xff09 的电子开发板 xff0c 它可以运行一些相对比较简单的应用程序 包含硬件 xff08 各种型号的Arduino板 xff09 和软件 xff08 Ardui
  • 关于STARMAC旋翼机的计算系统组成分析

    摘要 xff1a STARMAC xff0c 全称为 the Stanford Testbed of Autonomous Rotorcraft for Multi Agent Control xff0c 是斯坦福大学为为了突破先前飞行器笨
  • 读史铁生随笔摘要

    人可以走向天堂 xff0c 不可以走到天堂 物质的天堂注定难为 xff0c 而精神的天堂恰于走向中成立 永远的限制是其永远成立的依据 无所眺望或有所眺望都证明到达之地并非圆满 xff0c 而你若永远地走向它 xff0c 你便随时都在它的光照
  • IMAX B6电路原理详解

    IMAX B6电路原理详解 本文出自 手电大家谈 xff0c 原帖 xff1a http www shoudian org thread 447417 1 1 html
  • arduino实验第三代码

    include lt avr eeprom h gt define PinA 2 中断0 define led1 1 define led2 3 define led3 4 define led4 5 define da 6 define
  • pytorch总结——1:初步introduction

    pytorch简介 先说Torch xff0c 这是一个与Numpy类似的张量 xff08 Tensor xff09 操作库 xff0c 与Numpy不同的是Torch对GPU支持的很好 xff0c Lua是Torch的上层包装 但是Lua
  • pytorch_RNN相关函数介绍

    1 RNN背景介绍 RNN结构 参数介绍 input size 输入x的特征数量 hiddien size 隐藏层的特征数量 num layers RNN的层数 nonlinearity 指定激活函数是tanh还是relu xff0c 默认
  • 一些tensorflow-VIN 的笔记

    1tensorflow 使用flags定义命令行参数 2 product的执行 3 xff0c round函数 保留小数点后几位 96 a 61 1 12345 result 61 round a 2 print result 1 12 4
  • rosbag录制固定话题,多话题等

    ROS框架下可以很方便的进行数据记录 并且将其转换为txt文件进行matlab处理 下面介绍一下rosbag的日常使用方法 1 查找你所需要的话题 xff1a rostopic list 在ros节点开启的情况下 span class to
  • 相机与IMU标定教程

    标定教程 way 相机与IMU联合标定 1 imu utils 标定IMU的内参 1 imu utils标定IMU的内参 xff0c 可以校准IMU的噪声密度和随机游走噪声 2 kalibr包标定相机的内外参数 xff0c 相机与IMU之间
  • 如何在Win11中安装wsl Ubuntu系统

    目录 前言正文一 环境二 在 Windows 11 上启用 WSL四 按照官方文档进行安装五 安装ubuntu系统六 下载vcxSrv七 运行wsl八 总结 参考 前言 在笔记本上安装一下环境 xff0c 便于平常的工作 正文 一 环境 w
  • 下载PX4固件时网络太慢,经常出现克隆失败

    下载PX4固件时 xff0c 官网给的指令是 git clone https github com PX4 PX4 Autopilot git recursive 需要进行循环克隆 xff0c 在克隆过程中可能出现以下的情况 无法克隆 39
  • roslaunch mavros px4.launch 出现的问题

    在运行roslaunch mavros px4 launch fcu url 61 udp 14540 64 127 0 0 1t 14557 时出现了以下错误 xff0c 这是由于 符号是中文符号导致的 xff0c 切换成英文的即可 RL
  • 解决Ubuntu执行sudo命令后提示无法解析主机

    解决Ubuntu执行sudo命令后提示无法解析主机 异常现象异常原因查看修改主机名普通用户与管理员间的切换 异常现象 异常原因 etc hostname和 etc hosts文件中主机名称不一致导致 xff0c 将其修改一致即可 修改此文件
  • rosdep update 指令超时问题

    在执行rosdep update后出现超时问题 xff0c 报如下错误 reading in sources list data from etc ros rosdep sources list d ERROR unable to proc
  • 使用git --recursive进行循环克隆,由于网络原因,出现克隆失败的情况。

    git clone recursive 用于循环克隆git子项目 xff0c 但由于网络原因 xff0c 经常会出现克隆失败的情况 xff0c 这时不得不删掉克隆文件夹 xff0c 全部重新来过 xff0c 我们可以先将主文件克隆下来 xf
  • minimumsnap(1)微分平坦特性(Differential Flatness)

    本文内容参考论文 Minimum Snap Trajectory Generation and Control for Quadrotors Daniel Mellinger and Vijay Kumar 从名字可以看出 xff0c 我们