加速度梯形算法:滤波方式下的速度规划

6 篇文章 3 订阅
5 篇文章 3 订阅

已知线段长度 s s s,起点速度 v 0 v_0 v0,利用加速度梯形算法(滤波方式)计算能达到的最大终点速度和最小终点速度。其中,系统最大速度为 v m v_m vm,系统最大加速度为 a m a_m am,系统最大加加速度为 J m J_m Jm,插补周期为 T T T

计算能达到的最大终点速度 v m ′ v'_m vm

(1)假设实际运动的最大加速度为 a m ′ a'_m am,则
n = v m ′ − v 0 a m ′ T , L = a m ′ J m T . \begin{aligned} &n=\dfrac{v'_m-v_0}{a'_mT}, \\ &L=\dfrac{a'_m}{J_mT}. \end{aligned} n=amTvmv0,L=JmTam.
其中, n n n为直线加速度加速的整周期数, L L L为速度滤波器的长度。

实际运动的距离 s s s s = 1 2 ( v 0 + v m ′ ) ( n + L ) T = 1 2 ( v 0 + v m ′ ) ( v m ′ − v 0 a m ′ + a m ′ J m ) s=\dfrac{1}{2}(v_0+v'_m)(n+L)T=\dfrac{1}{2}(v_0+v'_m) \left(\dfrac{v'_m-v_0}{a'_m}+\dfrac{a'_m}{J_m}\right) s=21(v0+vm)(n+L)T=21(v0+vm)(amvmv0+Jmam)

若使运动时间最短,令 v m ′ − v 0 a m ′ = a m ′ J m \dfrac{v'_m-v_0}{a'_m}=\dfrac{a'_m}{J_m} amvmv0=Jmam a m ′ = J m ( v m ′ − v 0 ) a'_m=\sqrt{J_m(v'_m-v_0)} am=Jm(vmv0)

于是有
s = 1 2 ( v 0 + v m ′ ) ⋅ 2 ⋅ v m ′ − v 0 a m ′ = ( v m ′ + v 0 ) ( v m ′ − v 0 ) a m ′ , ( v m ′ + v 0 ) ( v m ′ − v 0 ) = a m ′ s = J m ( v m ′ − v 0 ) ⋅ s , ( v m ′ + v 0 ) ⋅ v m ′ − v 0 = J m ⋅ s , ( v m ′ + v 0 ) 2 ( v m ′ − v 0 ) = J m s 2 , v m ′ 3 + v 0 v m ′ 2 − v 0 2 v m ′ − v 0 3 − J m s 2 = 0. \begin{aligned} &s=\dfrac{1}{2}(v_0+v'_m)\cdot 2\cdot\dfrac{v'_m-v_0}{a'_m}=\dfrac{(v'_m+v_0)(v'_m-v_0)}{a'_m}, \\ &(v'_m+v_0)(v'_m-v_0)=a'_ms=\sqrt{J_m(v'_m-v_0)}\cdot s, \\ &(v'_m+v_0)\cdot \sqrt{v'_m-v_0}=\sqrt{J_m}\cdot s, \\ &(v'_m+v_0)^2(v'_m-v_0)=J_ms^2, \\ &v^{'3}_m+v_0v^{'2}_m-v_0^2v'_m-v_0^3-J_ms^2=0. \end{aligned} s=21(v0+vm)2amvmv0=am(vm+v0)(vmv0),(vm+v0)(vmv0)=ams=Jm(vmv0) s,(vm+v0)vmv0 =Jm s,(vm+v0)2(vmv0)=Jms2,vm3+v0vm2v02vmv03Jms2=0.
(2)求解一元三次方程: v m ′ 3 + v 0 v m ′ 2 − v 0 2 v m ′ − v 0 3 − J m s 2 = 0 v^{'3}_m+v_0v^{'2}_m-v_0^2v'_m-v_0^3-J_ms^2=0 vm3+v0vm2v02vmv03Jms2=0

得到实际的最大终点速度 v m ′ ( v m ′ > v 0 ) v'_m(v'_m>v_0) vm(vm>v0)

(3)检验 a m ′ = v m ′ 2 − v 0 2 s a'_m=\dfrac{v^{'2}_m-v_0^2}{s} am=svm2v02是否满足系统最大加速度的要求。

a m ′ a'_m am不大于系统最大加速度,则 m i n ( v m ′ ,   v m ) min(v'_m,\ v_m) min(vm, vm)即为能达到的最大终点速度。

(4)若 a m ′ a'_m am大于系统最大加速度,则取 a m a_m am为实际运动的最大加速度,重新计算能达到的最大终点速度。
L = a m J m T , n = v m ′ − v 0 a m T , s = 1 2 ( v 0 + v m ′ ) ( L + n ) T = 1 2 ( v 0 + v m ′ ) ( a m J m + v m ′ − v 0 a m ) , J m v m ′ 2 + a m 2 v m ′ + a m 2 v 0 − J m v 0 2 − 2 a m J m s = 0. \begin{aligned} &L=\dfrac{a_m}{J_mT},\quad n=\dfrac{v'_m-v_0}{a_mT}, \\ &s=\dfrac{1}{2}(v_0+v'_m)(L+n)T=\dfrac{1}{2}(v_0+v'_m)\left(\dfrac{a_m}{J_m} +\dfrac{v'_m-v_0}{a_m}\right), \\ &J_mv^{'2}_m+a_m^2v'_m+a_m^2v_0-J_mv_0^2-2a_mJ_ms=0. \end{aligned} L=JmTam,n=amTvmv0,s=21(v0+vm)(L+n)T=21(v0+vm)(Jmam+amvmv0),Jmvm2+am2vm+am2v0Jmv022amJms=0.
由此求得最大终点速度 v m ′ v'_m vm,并且要求 v m ′ > v 0 v'_m>v_0 vm>v0。若不满足要求,则令 v m ′ = v 0 v'_m=v_0 vm=v0

计算能达到的最小终点速度 v m ′ v'_m vm

(1)首先判断能否减速到零,如果能减速到零,则 v m ′ = 0 v'_m=0 vm=0

(2)如果不能减速到零,则假设实际运动的最大加速度为 a m ′ a'_m am,于是有
n = v 0 − v m ′ a m ′ T , L = a m ′ J m T . \begin{aligned} &n=\dfrac{v_0-v'_m}{a'_mT}, \\ &L=\dfrac{a'_m}{J_mT}. \end{aligned} n=amTv0vm,L=JmTam.
其中, n n n为直线加速度减速的整周期数, L L L为速度滤波器的长度。

实际运动的距离 s s s s = 1 2 ( v 0 + v m ′ ) ( n + L ) T = 1 2 ( v 0 + v m ′ ) ( v 0 − v m ′ a m ′ + a m ′ J m ) s=\dfrac{1}{2}(v_0+v'_m)(n+L)T=\dfrac{1}{2}(v_0+v'_m)\left(\dfrac{v_0-v'_m}{a'_m} +\dfrac{a'_m}{J_m}\right) s=21(v0+vm)(n+L)T=21(v0+vm)(amv0vm+Jmam)

若使运动时间最短,令 v 0 − v m ′ a m ′ = a m ′ J m \dfrac{v_0-v'_m}{a'_m}=\dfrac{a'_m}{J_m} amv0vm=Jmam a m ′ = J m ( v 0 − v m ′ ) a'_m=\sqrt{J_m(v_0-v'_m)} am=Jm(v0vm)

于是有
s = 1 2 ( v 0 + v m ′ ) ⋅ 2 ⋅ v 0 − v m ′ a m ′ = ( v 0 + v m ′ ) ( v 0 − v m ′ ) a m ′ , ( v 0 + v m ′ ) ( v 0 − v m ′ ) = a m ′ s = J m ( v 0 − v m ′ ) ⋅ s , ( v 0 + v m ′ ) ⋅ v 0 − v m ′ = J m ⋅ s , ( v 0 + v m ′ ) 2 ( v 0 − v m ′ ) = J m s 2 , v m ′ 3 + v 0 v m ′ 2 − v 0 2 v m ′ − v 0 3 + J m s 2 = 0. \begin{aligned} &s=\dfrac{1}{2}(v_0+v'_m)\cdot 2\cdot\dfrac{v_0-v'_m}{a'_m}=\dfrac{(v_0+v'_m)(v_0-v'_m)}{a'_m}, \\ &(v_0+v'_m)(v_0-v'_m)=a'_ms=\sqrt{J_m(v_0-v'_m)}\cdot s, \\ &(v_0+v'_m)\cdot \sqrt{v_0-v'_m}=\sqrt{J_m}\cdot s, \\ &(v_0+v'_m)^2(v_0-v'_m)=J_ms^2, \\ &v^{'3}_m+v_0v^{'2}_m-v_0^2v'_m-v_0^3+J_ms^2=0. \end{aligned} s=21(v0+vm)2amv0vm=am(v0+vm)(v0vm),(v0+vm)(v0vm)=ams=Jm(v0vm) s,(v0+vm)v0vm =Jm s,(v0+vm)2(v0vm)=Jms2,vm3+v0vm2v02vmv03+Jms2=0.
(3)求解一元三次方程: v m ′ 3 + v 0 v m ′ 2 − v 0 2 v m ′ − v 0 3 + J m s 2 = 0 v^{'3}_m+v_0v^{'2}_m-v_0^2v'_m-v_0^3+J_ms^2=0 vm3+v0vm2v02vmv03+Jms2=0

得到实际的最小终点速度 v m ′ ( v m ′ > 0 v'_m(v'_m>0 vm(vm>0并且 v m ′ < v 0 ) v'_m<v_0) vm<v0)

(4)检验 a m ′ = v 0 2 − v m ′ 2 s a'_m=\dfrac{v_0^2-v^{'2}_m}{s} am=sv02vm2是否满足系统最大加速度的要求。

a m ′ a'_m am不大于系统最大加速度,则 v m ′ v'_m vm即为能达到的最小终点速度。

(5)若 a m ′ a'_m am大于系统最大加速度,则取 a m a_m am为实际运动的最大加速度,重新计算能达到的最小终点速度。
L = a m J m T , n = v 0 − v m ′ a m T , s = 1 2 ( v 0 + v m ′ ) ( L + n ) T = 1 2 ( v 0 + v m ′ ) ( a m J m + v 0 − v m ′ a m ) , J m v m ′ 2 − a m 2 v m ′ − a m 2 v 0 − J m v 0 2 + 2 a m J m s = 0. \begin{aligned} &L=\dfrac{a_m}{J_mT},\quad n=\dfrac{v_0-v'_m}{a_mT}, \\ &s=\dfrac{1}{2}(v_0+v'_m)(L+n)T=\dfrac{1}{2}(v_0+v'_m)\left(\dfrac{a_m}{J_m} +\dfrac{v_0-v'_m}{a_m}\right), \\ &J_mv^{'2}_m-a_m^2v'_m-a_m^2v_0-J_mv_0^2+2a_mJ_ms=0. \end{aligned} L=JmTam,n=amTv0vm,s=21(v0+vm)(L+n)T=21(v0+vm)(Jmam+amv0vm),Jmvm2am2vmam2v0Jmv02+2amJms=0.
由此求得最小终点速度 v m ′ v'_m vm,并且要求 v m ′ > 0 v'_m>0 vm>0并且 v m ′ < v 0 v'_m<v_0 vm<v0。若不满足要求,则令 v m ′ = v 0 v'_m=v_0 vm=v0

插补

已知起始速度 v s v_s vs,终止速度 v e v_e ve,系统最大速度为 v m v_m vm,系统最大加速度为 a m a_m am,系统最大加加速度为 J m J_m Jm

粗插补计算能加速到的最大速度 v m ′ ( v m ′ ⩽ v m ) v_m'(v_m'\leqslant v_m) vm(vmvm),正向最大加速度 a m ′ a_m' am,反向最大加速度 a m ′ ′ a_m'' am
a m ′ = J m ( v m ′ − v s ) , a m ′ ′ = J m ( v m ′ − v e ) , a m ′ = m i n ( a m ′ ,   a m ) , a m ′ ′ = m i n ( a m ′ ′ ,   a m ) . \begin{aligned} &a_m'=\sqrt{J_m(v_m'-v_s)},\quad a_m''=\sqrt{J_m(v_m'-v_e)}, \\ &a_m'=min(a_m',\ a_m),\quad a_m''=min(a_m'',\ a_m). \\ \end{aligned} am=Jm(vmvs) ,am=Jm(vmve) ,am=min(am, am),am=min(am, am).
正向运动距离: s ′ = 1 2 ( v s + v m ′ ) ( L ′ + n ′ ) T s'=\dfrac{1}{2}(v_s+v_m')(L'+n')T s=21(vs+vm)(L+n)T,其中 L ′ = a m ′ J m T L'=\dfrac{a_m'}{J_mT} L=JmTam n ′ = v m ′ − v s a m ′ T n'=\dfrac{v_m'-v_s}{a_m'T} n=amTvmvs

反向运动距离: s ′ ′ = 1 2 ( v e + v m ′ ) ( L ′ ′ + n ′ ′ ) T s''=\dfrac{1}{2}(v_e+v_m')(L''+n'')T s=21(ve+vm)(L+n)T,其中 L ′ ′ = a m ′ ′ J m T L''=\dfrac{a_m''}{J_mT} L=JmTam n ′ ′ = v m ′ − v e a m ′ ′ T n''=\dfrac{v_m'-v_e}{a_m''T} n=amTvmve

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: stm32是一种嵌入式处理器,可以通过连接加速度传感器来测量物体的加速度。在使用这些数据时,我们通常需要对其进行积分以获得物体的速度和位移信息。 在stm32中,可以通过使用计数器来实现加速度数据的积分。计数器是一个内部资源,用于记录时间的流逝。通过使用计数器,我们可以轻松地测量不同加速度值之间的时间间隔,并将其带入积分方程中。 积分方程通常采用离散形式,因为计数器只能在离散时间步长上进行操作。离散积分方程通常采用欧拉法,将加速度值乘以时间步长并将其与之前的速度值相加以获得新的速度值。同样,我们可以使用欧拉法将速度值乘以时间步长并将其与之前的位移值相加以获得新的位移值。 在实现这些积分方程时,我们需要注意数据存储的精度和范围。由于stm32只能处理有限的数字精度和范围,因此在进行积分运算时,我们需要确保数据不会超过这些限制。同时,我们需要注意数值积分的误差累积,这可能会导致积分结果的偏差。 总之,通过使用计数器和积分方程,可以将stm32中的加速度数据积分为速度和位移信息。但是,我们需要注意数据存储的精度和范围以及误差累积等问题,以确保积分结果的准确性。 ### 回答2: STM32是一款单片机芯片,具有广泛的应用,其中就包括运用于加速度传感器。加速度传感器可以将物体的加速度信号转换为数字信号,STM32单片机可以通过读取传感器输出的数据来进行数据的处理和控制。在实际应用中,我们常常需要对加速度信号进行积分来得到速度和位移信息,从而对物体的运动状态进行分析和研究。 STM32可以通过编程实现对加速度数据的积分。首先,需要设置STM32的ADC采样频率,保证数据采样的稳定性和准确性。其次,可以通过数值积分算法,对获得的加速度数据进行处理得到速度和位移信息。常用的数值积分算法包括梯形法、Simpson法、龙格库塔法等,根据实际应用需求选择相应的算法进行编程实现。 需要注意的是,在进行加速度数据的积分时,由于存在传感器噪声、采样误差等因素,积分结果可能存在较大误差。因此,需要进行有效的数据处理和滤波,减少误差的影响。常用的数据处理方法包括卡尔曼滤波、中值滤波等。 在实际应用中,STM32加速度数据的积分具有广泛的应用前景。在机器人控制、姿态控制、运动状态监测等领域中,STM32可以通过对加速度数据的积分,实现精准的位置、速度和姿态信息获取和控制,为实际生产和研究提供关键技术支持。 ### 回答3: STM32是一款高性能、低功耗的嵌入式微控制器,常用于控制系统和嵌入式设备中。加速度传感器是一种常用的传感器,可以用于测量物体的加速度。 在使用STM32测量加速度数据时,需要对数据进行积分,以得到速度和位移等相关信息。为了避免积分过程中的误差,可以采用卡尔曼滤波算法加速度数据进行处理,再进行积分。 积分的方法一般有三种:矩形积分、梯形积分和辛普森积分。在实际应用中,常采用梯形积分的方法。其原理是将每个时间段的加速度平均值乘以时间间隔,得到每个时间段的速度值,再将速度值累加得到位移值。 需要注意的是,在进行积分计算时需要先对加速度数据进行滤波和平滑处理,避免噪音对数据的影响,同时还需要处理积分过程中的漂移问题,以保证测量结果的准确性。 总之,STM32测量加速度数据并进行积分需要进行一系列的处理,包括数据采集、滤波、平滑、积分等步骤,才能得到准确的测量结果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值