移动机器人路径规划(五)--- 基于Minimun Snap的轨迹优化

news2024/10/7 2:27:31

目录

1 我们本节主要介绍的

2  Minimum Snap Optimization

2.1 Differential Flatness(微分平坦)

2 Minimum Snap

3  Closed-form Solution to Minimum Snap

3.1 Decision variable mapping 待优化问题的映射

4 凸优化 及其它问题


1 我们本节主要介绍的

        1.轨迹优化需要有边界条件(从当前运动开始的,起始状态-->终止状态)

        2.中继节点:我希望经过中继点(到达一个路标点),当然,这个路标点也可以是我们中间的节点(通过路径搜索得到的)。

        3.需要有评价函数:评价这个是光滑(经过路标点的左极限右极限)且是动力学可行的。

2  Minimum Snap Optimization

2.1 Differential Flatness(微分平坦)

  1. 数学模型描述

    • 无人机的状态(states)指的是位置、速度和朝向等物理量,而输入(inputs)通常是指施加在无人机上的控制信号,比如推力或转矩。
    • 这段话表达了一种表示无人机状态和输入的方法:它们可以用代数函数来表达,而这些函数是关于四个特定的平面输出(flat outputs)及其导数的。
  2. 平面输出的作用

    • 通过选取这四个特定的输出以及它们的导数,可以更有效地描述无人机的状态和输入。这种选择有助于简化无人机运动的数学表达。
    • 这种方法的好处之一是能够自动生成飞行路径(trajectories)。
  3. 路径生成和跟踪

    • 在平面输出的空间中,几乎任何光滑的路径都可以通过这种模型下的无人机来追踪。
    • 这意味着,只要在平面输出的空间中给定了一个光滑的路径,这个无人机就可以按照这个路径飞行。
  4. 一个可能的选择

    • 这段话提到了一个可能的选择,即选取的四个平面输出分别是位置的 x、y、z 分量和朝向 ψ(通常表示偏航角度)。
    • 平面输出空间中的轨迹(Trajectory)σ_t 是一个函数,将时间作为参数,输出无人机在三维空间中的位置和旋转。

        我们先看无人机的状态:12维度

        3维位置 + 3维无人机的转动姿态 + 3维xyz运动的速度 + 3个旋转姿态的角速度

        无人机飞行的运动方程:我们通过牛顿方程和欧拉方程描述

        无人机的合力垂直于螺旋桨的,ma = -mg + R(F1+F2+F3+F4)就是一个牛顿第二定律,R是坐标变换。第二-四表示转动的关系表示力矩。

        我们证明确实可以把无人机的12维状态量压缩到xyz、yaw上:

          无人机做planing是否需要对姿态进行planing?它的姿态一定和它的加速度绑定在一起的,因为无人机的合推力一定垂直于螺旋桨的平面垂直于自己的body frame的Z轴产生的推力。我们来看一种情况:

        无人机的合力方向是确定的,合力提供的加速度是知道的。

        到此推导完毕。

2 Minimum Snap

        先拿一维来说,如果我们要生成一个光滑的一段轨迹:

        光滑等价于可导。(多项式其实就是光滑的,多阶微分可导)(如果要求速度连续,则加速度可导)

        连续要保证左右极限相同。

        如果多段呢?

        我们假设每一段有一个多项式函数,我们的机器人要通过中间点,要给定一个速度加速度的值如下:

        但是中间节点的速度,加速度是我们人为指定的,指定多少是合理的呢?我们往往是指定不了的,我们要去利用优化的思想去求解!

        那么我们现在的目标就是求解多段多项式:

        满足首末约束,经过中间点,中间点的左右极限高阶导数相同(光滑连续),整体轨迹snap最小。

        我们可以看一下分段多项式的形式:

        每一段轨迹都是多项式、每一段轨迹的时间一定要是已知的。

        那么我们怎么合理的选择轨迹的阶数呢?

        1.确保轨迹连续性

        2.确保轨迹的光滑性

        3.确保优化阶数最小

        工程上我们有些约定:

        如果我们的轨迹是K段的,我们最小化jerk,首位各提供三个约束(P、V、A),中间有K-1个分段点。每个点提供了位置约束(K-1个P约束),总共有 3 + 3 + K - 1 = K + 5个约束

        有K段轨迹,每段的阶数为N,每一段轨迹提供的未知数的自由度是N+1,总共是(N+1)*K,因此可以算出最低的N。

        还有时间线的问题:

        我们来计算代价函数:

        Qj是海森矩阵。

        我们要对优化问题增加一些约束:

        这是一个等式约束,同样的我们要增加连续性约束:

        是一个凸优化的问题:

        是考研数学的内容:凸集合就是我们在集合中取到任意两个点连接这条线上的每两个点都在集合中:

        那什么是凸优化问题呢?

        我们有一个目标函数f_0{(x)},它会受制于一些不等式、等式约束。

        几种优化问题:

3  Closed-form Solution to Minimum Snap

3.1 Decision variable mapping 待优化问题的映射

        我们之前明白了我们优化的其实是多项式的系数:五阶的话就是p_0-p_5,这样的话其实会问题,这里我们求解出了p_0-p_5其实是没有物理含义的。如果我们求解一个p_5非常大,那么就会出现轨迹不稳定的问题。因此中间点的va需要根据物理意义去求最优解。

        那么我们怎么做?我们需要构造映射矩阵M,把所有我们要求解的p映射为端点的导数

        那应该怎么写呢?把多项式的系数映射成导数。

        d怎么排布呢?端点的导数,和p排列对应,那么d就是排布第一个点的各阶导数、第二个点的各阶导数......

        上面是推导。

        我们通过两个式子可以得到下面的式子:

        将固定不变的变量和优化变量进行分解:

        构造选择矩阵C^T,乘以构造的结果等于原来端点的导数:df固定的变量、dp待优化变量。

        我们求到了解析解d_p^{*}

        我们来看看如何写这个C

        第i段轨迹的最前面的点和最后面的点的各阶导数。我们有16个的量、但是有4个重叠的量,因此只有12个。

        安全性呢?生成轨迹的时候可能撞车??

        如果我们碰到了障碍物,我们在轨迹的中间新生成一个路标点去新生成轨迹。

        但这也不是很好的:我们添加不等式约束

4 凸优化 及其它问题

        Numerical Stability:数值稳定性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1233194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FL Studio21怎么破解?2024年最新FLStudio21.2.0安装解锁特别版下载使用图文教程

用FL Studio编曲,让音乐成为你的翅膀,飞翔在无尽的创作海洋中吧! FL Studio作为一款功能强大且备受赞誉的音乐制作软件,为你提供了一个独特的创作平台。通过FL Studio,你可以自由地创作、编曲,制作属于自己…

利用多核的Rust快速Merkle tree

1. 引言 利用多核的Rust快速Merkle tree,开源代码见: https://github.com/anoushk1234/fast-merkle-tree(Rust) 其具有如下属性: 可调整为任意高度构建root复杂度为O(n)提供了插入和获取叶子节点的方法获取某叶子节…

『C++成长记』类和对象

🔥博客主页:小王又困了 📚系列专栏:C 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、类的引入 二、类的定义 三、类的访问限定符 四、类的作用域 五、类的实例化…

给新手教师的成长建议

随着教育的不断发展和进步,越来越多的新人加入到教师这个行列中来。从学生到教师,这是一个华丽的转身,需要我们不断地学习和成长。作为一名新手老师,如何才能快速成长呢?以下是一名老师教师给的几点建议: 一…

腾讯云服务器标准型S5和CVM标准型S6区别对比_选择攻略

腾讯云服务器CVM标准型S5和S6有什么区别?都是标准型云服务器,标准型S5是次新一代云服务器规格,标准型S6是最新一代的云服务器,S6实例的CPU处理器主频性能要高于S5实例,同CPU内存配置下的标准型S6实例要比S5实例性能更好…

2023 羊城杯 final

前言 笔者并未参加此次比赛, 仅仅做刷题记录. 题目难度中等偏下吧, 看你记不记得一些利用手法了. arrary_index_bank 考点: 数组越界 保护: 除了 Canary, 其他保护全开, 题目给了后门 漏洞点: idx/one 为 int64, 是带符号数, 所以这里存在向上越界, 并且 buf 为局部变量,…

谈谈你对mvc和mvvm的理解

MVC和MVVM是软件开发中两种常见的架构模式,各自有不同的优缺点。 MVC(Model-View-Controller)是一种经典的架构模式,将应用程序分为三个部分:模型(Model)、视图(View)和…

buildadmin+tp8表格操作(5)自定义组装搜索的查询

有时候我们会自定义组装一些数据,发送给后端,让后端来进行筛选,这里有一个示例 const onComSearchIdEq () > {// 展开公共搜索baTable.table.showComSearch true/*** 公共搜索表单赋值* 范围搜索有两个输入框,输入框绑定变量…

如何通过数环通,让企业吸引和留住更多优秀人才?

企业招聘员工以及员工入职,不仅仅只是人力资源重要职能之一,它们更是整个企业成功的关键。 市场永远充满竞争,“战争”一直都在,为了赢得胜利,让最优秀的人选加入是最好的选择。但优秀的人才永远不缺机会,市…

基于RFID手持终端的服装门店管理解决方案

一、方案背景 基于RFID技术的RFID手持终端服装门店应用整体解决方案旨在解决服装门店在订单管理、库存管理、盘点和调配等方面面临的问题,该方案利用RFID标签和RFID手持终端设备,实现对服装产品的追踪、扫描、查询和操作,提高管理效率和准确…

循环链表2

循环链表的实现 对于数据结构中所有的结构而言,每一次都是用之前初始化(处理一开始的随机值)一下, 用完销毁(不管有没有malloc都能用,用了可以保证没有动态内存泄漏了)一下 而在C里面&#x…

请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别

“请简要说明 Mysql 中 MyISAM 和 InnoDB 引擎的区别”。 屏幕前有多少同学在面试过程与遇到过类似问题, 可以在评论区留言:遇到过。 考察目的 对于 xxxx 技术的区别,在面试中是很常见的一个问题 一般情况下,面试官会通过这类…

优思学院|现代质量管理实践与六西格玛方法论如何融合?

企业要解决质量问题必然需要涉及管理,然而,如果仅仅将六西格玛法视为一种质量管理方法,必定会导致六西格玛管理法的失败。六西格玛法是一种具有特定战略性的管理方法,它涉及到市场、顾客、产品、服务、流程、质量、价值链以及财务…

【Java】线程状态

1、线程状态 初始-NEW: Thread : 对象已经创建,但start 方法还没调用. 终止-TERMINATED: Thread 对象还在,内核中的线程已经没了 运行-RUNNABLE: 就绪状态(线程已经在 cpu 上执行了/线程正在排队等待上 cpu 执行) 超时等待-TIMED WAITING: 阻塞.由于 sleep 这种固定…

2023年中国羽绒制品需求现状、市场规模及细分产品规模分析[图]

羽绒羽毛指生长在水禽类动物(鹅、鸭)腋下、腹部羽绒和羽毛的统称,属于上游鹅鸭肉食品工业副产品的综合利用,是下游羽绒制品的填充料。根据国家标准,绒子含量≥50%的称为羽绒,绒子含量<50%的称为…

使用 RAFT 的光流:第 1 部分

一、说明 在这篇文章中,我们将了解一种旗舰的光流深度学习方法,该方法获得了 2020 年 ECCV 最佳论文奖,并被引用超过 1000 次。它也是KITTI基准测试中许多性能最佳的模型的基础。该模型称为 RAFT:Recurrent All-Pairs Field Trans…

白炽灯护眼还是LED护眼?眼科专家都推荐的护眼台灯分享

白炽灯和LED灯相比,我认为还是LED灯会更护眼一些。因为LED灯长时间照射,温度也不会变得很高,这就说明了LED灯的散热效果好,安全性高,而且光线散发会比较均匀。 白炽灯是通过发热发光的,大部分能量都转化为了…

深入分析TaskView源码之触摸相关

问题背景 hi,粉丝朋友们: 大家好!android 10以后TaskView作为替代ActivityView的容器,在课程的分屏pip自由窗口专题也进行了相关的详细介绍分析。 这里再补充一下相关的TaskView和桌面内嵌情况下的触摸分析 主要问题点&#xff…

Power Apps-灵活高度库和普通库的区别

点击插入,可以选择布局中的灵活高度库或其他库 两种库同样把item大小设置得比组件排列起来的小 实现效果: 根据实践发现,如果item中组件排列大小超出item本身大小,灵活高度的库会按照组件排列大小自适应高度,其他库则严…

SVN 修改版本库地址url路径

一、win11用户 1. win11系统右链菜单比较优秀,如果菜单中选择“TortoiseSVN”找不到“重新定位”,如下图所示,则需要添加右键菜单: 2.添加右键菜单:选择“TortoiseSVN”,点击设置,如下图所示&a…