S形曲线速度规划--5段式

news/2024/11/21 1:43:04/
为了减小机器人加速过程的冲击,这里梳理一下S形加减速相关知识。

1. S加减速曲线

在这里插入图片描述

计算公式:
加加速度

j ( t ) = { J 0 ≤ t ≤ t 1 − J t 1 ≤ t ≤ t 2 0 t 2 ≤ t ≤ t 3 − J t 3 ≤ t ≤ t 4 J t 4 ≤ t ≤ t 5 j(t)=\begin{cases} J & 0\leq t \leq t_1\\ -J & t_1\leq t \leq t_2\\ 0 & t_2\leq t \leq t_3\\ -J & t_3\leq t \leq t_4\\ J & t_4\leq t \leq t_5\\ \end{cases} j(t)=JJ0JJ0tt1t1tt2t2tt3t3tt4t4tt5

加速度:

a ( t ) = { J ∗ t 0 ≤ t ≤ t 1 J ∗ T 1 − J ∗ ( t − t 1 ) t 1 ≤ t ≤ t 2 0 t 2 ≤ t ≤ t 3 − J ∗ ( t − t 3 ) t 3 ≤ t ≤ t 4 − J ∗ T 4 + J ∗ ( t − t 4 ) t 4 ≤ t ≤ t 5 a(t)=\begin{cases} J*t & 0\leq t \leq t_1\\ J*T_1 - J*(t-t_1) & t_1\leq t \leq t_2\\ 0 & t_2\leq t \leq t_3\\ -J*(t-t_3) & t_3\leq t \leq t_4\\ -J*T_4 + J*(t-t_4) & t_4\leq t \leq t_5\\ \end{cases} a(t)=JtJT1J(tt1)0J(tt3)JT4+J(tt4)0tt1t1tt2t2tt3t3tt4t4tt5

速度:

v ( t ) = { v s + J ∗ t 2 / 2 0 ≤ t ≤ t 1 v 1 + J ∗ T 1 ∗ ( t − t 1 ) − J ∗ ( t − t 1 ) 2 / 2 t 1 ≤ t ≤ t 2 v 2 t 2 ≤ t ≤ t 3 v 3 − J ∗ ( t − t 3 ) 2 / 2 t 3 ≤ t ≤ t 4 v 4 − J ∗ T 4 ∗ ( t − t 4 ) + J ∗ ( t − t 4 ) 2 / 2 t 4 ≤ t ≤ t 5 v(t)=\begin{cases} v_s + J*t^2/2 & 0\leq t \leq t_1\\ v_1 + J*T_1*(t-t_1) - J*(t-t_1)^2/2 & t_1\leq t \leq t_2\\ v_2 & t_2\leq t \leq t_3\\ v_3 - J*(t-t_3)^2/2 & t_3\leq t \leq t_4\\ v_4 - J*T_4*(t-t_4) + J*(t-t_4)^2/2 & t_4\leq t \leq t_5\\ \end{cases} v(t)=vs+Jt2/2v1+JT1(tt1)J(tt1)2/2v2v3J(tt3)2/2v4JT4(tt4)+J(tt4)2/20tt1t1tt2t2tt3t3tt4t4tt5

位移:


s ( t ) = { v s ∗ t + J ∗ t 3 / 6 0 ≤ t ≤ t 1 s 1 + v 1 ∗ ( t − t 1 ) + J ∗ T 1 ∗ ( t − t 1 ) 2 / 2 − J ∗ ( t − t 1 ) 3 / 6 t 1 ≤ t ≤ t 2 s 2 + v 2 ∗ ( t − t 2 ) t 2 ≤ t ≤ t 3 s 3 + v 3 ∗ ( t − t 3 ) − J ∗ ( t − t 3 ) 3 / 6 t 3 ≤ t ≤ t 4 s 4 + v 4 ∗ ( t − t 4 ) − J ∗ T 4 ∗ ( t − t 4 ) 2 / 2 + J ∗ ( t − t 4 ) 3 / 6 t 4 ≤ t ≤ t 5 s(t)=\begin{cases} v_s*t + J*t^3/6 & 0\leq t \leq t_1\\ s_1 + v_1*(t-t_1) + J*T_1*(t-t_1)^2/2 - J*(t-t_1)^3/6 & t_1\leq t \leq t_2\\ s_2 + v_2*(t-t_2) & t_2\leq t \leq t_3\\ s_3 + v_3*(t-t_3) - J*(t-t_3)^3/6 & t_3\leq t \leq t_4\\ s_4 + v_4*(t-t_4) - J*T_4*(t-t_4)^2/2 + J*(t-t_4)^3/6 & t_4\leq t \leq t_5\\ \end{cases} s(t)=vst+Jt3/6s1+v1(tt1)+JT1(tt1)2/2J(tt1)3/6s2+v2(tt2)s3+v3(tt3)J(tt3)3/6s4+v4(tt4)JT4(tt4)2/2+J(tt4)3/60tt1t1tt2t2tt3t3tt4t4tt5

2. 算法流程(vs=0, ve=0)

已知 位移S,最大速度V 加加速度J,按照如下流程进行速度规划:
第一步,计算加速减速距离:

S a = S d = V ∗ V J S_a = S_d = V*\sqrt\frac{V}{J} Sa=Sd=VJV

第二步,比较位移关系

如 果 S a + S d < = S 则 : t 1 = t 2 = t 4 = t 5 = V J t 3 = S − S a − S d V 如果 S_a + S_d <= S \\ 则:\\ t_1 = t_2 = t_4 = t_5 = \sqrt\frac{V}{J}\\ t_3 = \frac{S-S_a-S_d}{V} Sa+Sd<=St1=t2=t4=t5=JV t3=VSSaSd

如 果 S a + S d > S 则 : V , = ( S ∗ J 2 ) 1 3 t 1 = t 2 = t 4 = t 5 = V , J t 3 = 0 如果 S_a + S_d > S \\ 则:\\ V^, = (\frac{S*J}{2})^\frac{1}{3} \\ t_1 = t_2 = t_4 = t_5 = \sqrt\frac{V^,}{J}\\ t_3 = 0 Sa+Sd>SV,=(2SJ)31t1=t2=t4=t5=JV, t3=0

第三步,即得到每阶段对应的插补时间,即可进行速度插补

3. 算法流程(vs>0或 ve>0)

已知 位移S,起始速度Vs,终止速度Ve,最大速度V 加加速度J,按照如下流程进行速度规划:
第一步,计算加速减速距离:

S a = ( V + V s ) ∗ V − V s J S d = ( V + V e ) ∗ V − V e J S_a = (V+V_s)*\sqrt\frac{V-V_s}{J} \\ S_d = (V+V_e)*\sqrt\frac{V-V_e}{J} Sa=(V+Vs)JVVs Sd=(V+Ve)JVVe

第二步,比较位移关系

如 果 S a + S d < = S 则 : t 1 = t 2 = V − V s J t 4 = t 5 = V − V e J t 3 = S − S a − S d V 如果 S_a + S_d <= S \\ 则:\\ t_1 = t_2 = \sqrt\frac{V-V_s}{J}\\ t_4 = t_5 = \sqrt\frac{V-V_e}{J}\\ t_3 = \frac{S-S_a-S_d}{V} Sa+Sd<=St1=t2=JVVs t4=t5=JVVe t3=VSSaSd

如果 	S_a + S_d > S 
重新计算最大速度V,因为解析解计算复杂,这里通过二分法逼近,方法如下:
(1)设置v1 = V,v2设置为Vs,Ve中较大的数值
(2)二分法计算最大速度

V = v 1 + v 2 2 V = \frac{v1+v2}{2} V=2v1+v2

(3)计算加减速距离

S a = ( V + V s ) ∗ V − V s J S d = ( V + V e ) ∗ V − V e J S_a = (V+V_s)*\sqrt\frac{V-V_s}{J} \\ S_d = (V+V_e)*\sqrt\frac{V-V_e}{J} Sa=(V+Vs)JVVs Sd=(V+Ve)JVVe

(3)比较位移

如 果 S > S a + S d 则 : v 2 = V 如 果 S < S a + S d 则 : v 1 = V 如果 S > S_a + S_d \\ 则:\\ v2 = V 如果 S < S_a + S_d \\ 则:\\ v1 = V S>Sa+Sdv2=VS<Sa+Sdv1=V

(4) 重复步骤(1)(2)(3),直到

∣ S − S a − S d ∣ < ϵ |S-S_a-S_d| < \epsilon SSaSd<ϵ

阈值ε根据实际需求进行设置,通常设置为0.000001,迭代次数不超过10次.

http://www.ppmy.cn/news/491193.html

相关文章

K8s端口映射

分享一个大牛的人工智能教程。零基础&#xff01;通俗易懂&#xff01;风趣幽默&#xff01;希望你也加入到人工智能的队伍中来&#xff01;请点击http://www.captainbed.net 1、nodePort 外部流量访问K8s集群中Service入口的一种方式&#xff08;另一种方式是LoadBalancer&a…

DES算法S盒学习

在密码学中&#xff0c;S盒(Substitution-box)是对称密钥算法执行置换计算的基本结构。 S盒用在分组密码算法中&#xff0c;是唯一的非线性结构。 S盒是将48比特压缩成32比特&#xff0c;S盒接受特定数量的输入48比特&#xff0c;经过8个盒将其转换为32比特输出。 在DES算法中…

K8s集群重新初始化

学习来源&#xff1a; 51cto: https://edu.51cto.com/sd/518e5 腾讯课堂: https://ke.qq.com/course/2738602 K8s集群环境搭建&#xff1a;https://blog.csdn.net/qq_26900081/article/details/109291999 学习过程中一不小心把K8s给折腾坏了&am…

PHP -S 命令

从php5.4开始&#xff0c;引入了一个内置web服务器&#xff0c;可以在测试环境迅速搭建web环境而无须复杂的配置。性能肯定是不如nginx和apache服务器的&#xff0c;生成环境还是要搭建服务器。 1-命令使用方法&#xff1a; php -S 0.0.0.0:99 当然的其前提是进入到项目的相…

海思开发:yolo v5s :pytorch->onnx->caffe->nnie

一、前言 主要是遇见几个问题&#xff0c;赶紧记录一下&#xff0c;免得后面兄弟们吃同样的亏,也帮助自己记忆。附上我的 yolo v5 后处理部分 c 语言版本代码&#xff1a;C版 yolo v5s 后处理部分 二、转换报错 1. 报错&#xff1a; Reshape dimention number shall be 2 or…

K8s 端口映射

原文链接 https://www.jianshu.com/p/8275f2031c83 1. nodePort 外部流量访问k8s集群中service入口的一种方式&#xff08;另一种方式是LoadBalancer&#xff09;&#xff0c;即nodeIP:nodePort是提供给外部流量访问k8s集群中service的入口。比如外部用户要访问k8s集群中的一…

windows本地安装K8S

一、安装docker desktop windows 安装k8s &#xff0c; 首先需要安装docker&#xff0c;一般我们是安装docker desktop&#xff0c; Windows版的Docker Desktop 是社区版本&#xff0c;您可以从Docker Hub上直接下载&#xff0c;下载链接如下&#xff1a; Docker Hub 系统…

宋茜 许魏洲 生来倔强 高音质伴奏

宋茜 许魏洲 生来倔强 高音质伴奏