当前位置:网站首页>【路径规划】RRT增加动力模型进行轨迹规划
【路径规划】RRT增加动力模型进行轨迹规划
2022-07-04 23:47:00 【龙猫略略略】
在上篇增加了一个运动对象之后,就可以考虑给这个运动对象增加动力模型,之后按照动力模型来进行轨迹规划。
思路
这个动力模型我的思路是参照开源飞控中使用向量法指定速度方向,使用S曲线来规划速度轨迹的方式,最终做出来的效果看起来还是可以的。
S曲线
这里可以补习一下开源飞控中的速度S曲线规划的知识,总体思想为:保证加速度,速度连续,以固定加加速度来改变速度。总体的效果就是:先以恒加加速度将加速度a加到最大加速度a_max,时间为T1,之后以恒加速度运行T2时间,之后以恒加加速度将加速度从a_max减到0。这里PIX4的源码中也给出了一个注释图:

网上有人画了一个更清晰的图,我借用一下:

按照PIX4的思想,是将整个速度跟踪的过程分为三个时间阶段T1,T2,T3。T1阶段以设定的加加速度进行加速度的提升,T2阶段为恒定加速度,T3阶段以负的恒定加加速度进行加速度下降直到0。我们可以每个周期判断此时是处于哪个阶段,就可以进行控制了。最终这个算法需要达到的目标是在最后的加速度为0的时候,刚好速度达到目标。
这个各个阶段的时间以及末端速度都是高中知识,比较好推导,而且也有源码以及网上的解析可以参考,感觉没必要再浪费篇幅,可以自行推导一下
大致的程序步骤为:
1)计算当加速度为0时的轨迹速度
2)根据加速度为0时的末端速度的大小与目标速度的偏差判断加速方向
3)计算T1,T2,T3各个时间长度
4)根据控制周期的时间间隔判断当前处于哪个时间段,进而生成加速度与速度
按照S曲线的方式,我编写了一个函数,传入最大加加速度,最大加速度,当前加速度,当前速度,目标速度,控制周期T,就可以生成下个周期的加速度与速度控制量:

测试一下,它大概生成的速度S曲线的效果是这样的:

其实效果还不错。之后就可以利用这个速度S曲线函数来牵引模型在轨迹上运动。
牵引轨迹
在前面的文章中,我们已经使用了RRT搜索关键路径点,之后使用五阶贝塞尔平滑了曲线,可以得到平滑曲线的各个轨迹点,那么我们可以设置一个到达区域,比如以10为半径的圆,到达目标轨迹点的半径10以内就算到达该轨迹点,之后就切换到下一个轨迹点进行牵引。牵引的方式可以使用向量的方式,这个也是我比较顺手的方式吧:

由于目标轨迹点我们是知道的,因此可以按照目标轨迹点计算剩余路程,之后我们可以用利用计算出的剩余路程,还没有到一定的剩余路程就以最大速度为目标,接近终点时,就做一些减速的规划,这个就是一个决策的问题了,不属于本章的讨论内容:

当然,这个属于简单的一些速度决策,不影响后续的结果。
之后生成了目标加速度与速度之后,我们就可以分解成xy轴方向的分加速度与分速度进行xy轴的加速度,速度,位置的控制。
最终的效果,我录了一个简易的视频:
RRT+贝塞尔+运动模型轨迹
这样整体效果就好玩多啦。
边栏推荐
- 法国学者:最优传输理论下对抗攻击可解释性探讨
- Mit-6.824-lab4b-2022 (10000 word idea explanation - code construction)
- Fast parsing intranet penetration helps enterprises quickly achieve collaborative office
- The difference between debug and release
- go踩坑——no required module provides package : go.mod file not found in current directory or any parent
- Basic knowledge of database
- Chinese verification of JS regular expressions (turn)
- QT personal learning summary
- 机器人强化学习——Learning Synergies between Pushing and Grasping with Self-supervised DRL (2018)
- S32 design studio for arm 2.2 quick start
猜你喜欢

Power operation and maintenance cloud platform: open the new mode of "unattended and few people on duty" of power system

Pytoch --- use pytoch to realize linknet for semantic segmentation

ECCV 2022 | Tencent Youtu proposed disco: the effect of saving small models in self supervised learning

Hash table, hash function, bloom filter, consistency hash

Microservice

Phpcms paid reading function Alipay payment

A mining of edu certificate station

IELTS examination process, what to pay attention to and how to review?

MIT-6.824-lab4B-2022(万字思路讲解-代码构建)

uniapp 除了数字,其他输入无效
随机推荐
Jar批量管理小工具
Pict generate orthogonal test cases tutorial
How to save your code works quickly to better protect your labor achievements
如果炒股开华泰证券的户,在网上开户安全吗?
【爬虫】数据提取之xpath
Examples of time (calculation) total tools: start time and end time of this year, etc
Acrel-EMS综合能效平台在校园建设的意义
Jar batch management gadget
How to reduce the stock account Commission and stock speculation commission? Is it safe to open an online account
QT personal learning summary
Meet ThreadPoolExecutor
Etcd database source code analysis - brief process of processing entry records
The Chinese output of servlet server and client is garbled
微服务(Microservice)那点事儿
蓝天NH55系列笔记本内存读写速度奇慢解决过程记录
城市轨道交通站应急照明疏散指示系统设计
圖解網絡:什麼是網關負載均衡協議GLBP?
Stm32 Reverse Introduction to CTF Competition Interpretation
The difference between cout/cerr/clog
机器人强化学习——Learning Synergies between Pushing and Grasping with Self-supervised DRL (2018)