math - 计算具有初始速度的三角形和/或梯形运动曲线的时间
问题描述
考虑到一些初始速度,我想计算从initial-pos到达target-pos所需的时间。
- i:初始位置:0.0 m
- t:目标位置:10.0 m
- a:加速度:0.3 m/s 2
- d: 十二月: 0.3 m/s 2
- v:最大速度:0.5 m/s
- u:初始速度:[ 0.0 m/s, -0.5 m/s, 5.0 m/s]
首先,我计算达到最大速度所需的距离。
v_dist = ((v² * (a + d)) / (a * d)) / 2.0
v_dist = ((0.25 * 0.6) / 0.09) / 2.0
v_dist = ((0.15) / (0.09)) / 2.0
v_dist = 0.833333
如果我们没有达到最大速度,换句话说,如果我们没有达到达到最大速度所需的距离,它将始终是三角运动曲线
对于三角运动曲线,我使用以下公式:
t = sqrt(2.0 * abs(t-i) * ((a+d)/(a*d)))
Which results in:
t = sqrt(2.0 * abs(10.0) * ((0.3+0.3)/(0.3*0.3)))
t = sqrt(20 * (0.6/(0.09)))
t = sqrt(20 * (6.6667))
t = sqrt(133.333)
t = 11.547
不幸的是,这个公式不尊重初始速度,我不知道在哪里插入它。我在将头绕在((a+d)/(a*d))
零件上时也遇到了困难。
即使当前运动方向与目标位置相反,如何调整公式以使其确实考虑初始速度?
对于梯形轮廓,我使用以下公式:
t = (abs(t-i) - ((a * (v/a)²) /2) + ((d * (v/d)²) /2)) / v + (v/a) + (v/d)
对于这个公式,我遇到与三角公式相同的问题。我不明白我把 u (初始速度)放在哪里,所以它被正确处理。
解决方案
查看显示图表的图片V(t)
- 梯形轮廓(ACDE)和三角形轮廓(BFG)的速度与时间(横坐标值在这里是任意的)
A点的纵坐标为初速度,C、D的纵坐标为最大速度,E的纵坐标为到达终点所需的某个速度。
C、F的横坐标为力矩,加速结束时,F、D——减速开始时,E、G为停止力矩。
AB 和 BC 的斜率是加速度。DE和FG的斜率是减速。
折线下的面积是距离。
因此,对于梯形轮廓,您可以计算加速和减速所需的时间,然后在 CD 范围内找到时间以提供所需的距离(0AC1、1CD3、3DE 的总和)。
对于三角形轮廓,找到 BF 和 FG 段的时间(它们取决于)提供所需的距离(作为 0BF4 和 4FG 的总和)
推荐阅读
- javascript - 将文本添加到文本输入 onKeyPress react.js
- java - 如何使用 DateTimeFormatter 用冒号解析偏移量?
- python - 如何在 NumPy 中一次乘以 3 个以上的向量
- node.js - 如何使用 vscode 中的共享打字稿项目解决“属性不存在错误”?
- java - 如何使用resttemplate发送和接收列表?
- r - devtools::check() 完成时没有错误、警告或消息,travis 构建失败 (devtools::dev_package_deps)
- azure-data-factory - Azure 数据工厂:用于分层架构映射的对象名称中的空格
- c - mlockall 和共享库
- string - 如何从字符串中的给定区域删除重复字符?(假设我们有从中读取字符串的缓冲区)
- python - Python循环认为一个网格-200|200