嵌入式运动工程师必须知道智能电子设备如何放置在物理结构中(“嵌入式”)以及每个组件如何相对于彼此移动(“运动”)。在本文中,我想讨论我们如何描述和建模后一个术语,运动,我们通常认为它非常简单。
当我们设计运动系统时,我们会问如下问题:
运动稳定吗?
我们怎样才能让动作更流畅、更优雅?
实现所需运动的最佳方法是什么?
为了以高技术可预测性回答这些问题,我们经常使用可信赖的运动学和动态模型。有时,我们在机械手册、工程工具箱、维基百科或工程网络上的其他地方找到的模型对于我们的场景来说已经足够了。有时,它们不成立,我们需要一个具有更强预测能力的模型。
一句经常被引用的工程谚语说:“所有模型都是错误的。有些是有用的。” 毫无疑问,该原则也适用于 3D 运动。一些运动学和动力学模型在一种情况下可能是合适的,但在其他情况下则不够。
对于运动,普遍适用的方程可以处理多方向的 3D 旋转和平移物体,而简单方程只能处理平移和单向旋转。简单的方程式很有吸引力,因为它们既快速又简单。下面我将通过比较两个系统来说明这个想法,这两个系统需要不同的方法来建立适当的运动学模型。
简单的运动分析
下图显示了一个简单的齿轮系统。底部齿条驱动两个齿轮和另一个齿条。让我们假设两个齿轮的中心是固定的,所以齿轮只是在旋转,而顶部齿条在 x 方向上移动。如果底部齿条以ν 1 = 1mm/s 的速度移动,顶部齿条的移动速度有多快(假设齿轮没有损失)?
事实证明,我们需要的方程非常简单。我们可以在这个例子中轻松定义角度信息:
每个齿轮的角速度 ( ω ) 仅等于一个角度 ( θ ) 的时间变化率。例如,对于较大的齿轮,我们可以说它的角速度用ω 1 = θ̇ 1来描述。
每个齿轮都围绕其质心旋转。
通过将该系统本质上视为 2D,我们可以安全地在分析中使用ν = τω 。应用该关系来设计我们的系统会得出 ν 2 = ν 1。
转向 3D
当我们遇到 3D 运动系统的零件在多个方向而不是围绕其质心旋转时,我们该怎么办?我们如何定义角度?什么是角速度?
四轴飞行器的运动是更复杂的 3D 运动系统的一个合适示例。对于四轴飞行器,我们希望稳定地控制它的位置(“它在哪里?它的速度有多快?”)和空间方向(“‘倾斜’角度是多少?”)。飞行中的四轴飞行器可以在 x、y 和 z 方向上平移并围绕 x、y 和 z 旋转(其中 xyz 是固定在空间中的三个正交方向)。
为了保持四轴飞行器稳定,我们将使用陀螺仪测量每个轴的角速度,并将该信息反馈给控制算法。三轴陀螺仪将输出三个角速度值,但请注意,这些角速度对应于四轴飞行器上固定的轴。这些 xyz 轴与与四轴飞行器在空间中的位置、速度和加速度相关的 xyz 轴不同。可以说,将陀螺仪的输出转换为可被控制算法消化的东西是 3D 动力学模型派上用场的地方。
开始使用更强大的 3D 模型
一个更强大的 3D 运动模型开始于:
将参考系分配给空间中固定的点。
将系统中的所有对象视为刚体。
为每个身体上的某个点分配一个参考系。
参考系是我所说的一组三个正交单位向量,它们连接到某个点。在本例中,唯一的对象是四轴飞行器,因此我们将其视为单个刚体。(我们将在这里忽略四轴飞行器上的其他部分。)我们会说参考系N 固定在地球上的一点,由n̂ x、 n̂ y和 n̂ z组成。我们将参考框架D附加到四轴飞行器的质心。参考系D由d̂ x、 d̂ y和 d̂ z组成。 上图显示了 CAD 中的简化描述。
陀螺仪的测量结果将为我们提供关于d̂ x、 d̂ y和 d̂ z的角速度,对于控制算法,我们想知道这些值如何与n̂ x、n̂ y和n̂ z中的有意义的角度相关联。 实现此目的的一种方法是通过围绕固定在四轴飞行器机身上的轴进行一系列简单旋转来定义四轴飞行器的方向。在这一步的开始,我们可以用d̂ x、d̂ y和d̂ z来表示四轴飞行器的角速度,它看起来像这样:
在这项工作的最后,我们将使用旋转矩阵以欧拉角的形式表示每个角速度。欧拉角为我们提供了一种精确描述物体在 3D 空间中的方向的方法。(请注意,欧拉角不一定对应于我们所说的偏航、俯仰和滚动。)我们将以ω 1、ω 2和 ω 3的精确表达式结束。
由于四轴飞行器可以绕多个轴旋转,我们不再有简单的ω 1 = θ̇ 关系,也不能用ν = τω 来概括地描述四轴飞行器上一点的速度。事实上,ω 1的方程 看起来像 ω 1 = φ̇ = cos α + α̇ - θ̇ sin φ 其中θ、φ和α 是欧拉角。ω 2 和ω 3的方程 不幸的是,同样混乱。简而言之,很容易看出 3D 系统的定义如何超出我们在传统动力学资源中发现的范围。有关这些计算的更多详细信息,请参阅额外信用部分。
模拟复杂的运动现象
当我们对复杂的 3D 运动现象建模时,区分标量和矢量是关键。请记住,向量既有大小又有方向(例如,东北方向 25 mph),而标量只有大小(25 mph)。当我们将其他物理值(速度、加速度、线性和角动量、力、扭矩等)带入我们的模型时,我们应该首先将它们视为向量。例如,当我们谈论扭矩时,指定它的方向(例如,关于正 z 轴)以及它的大小(5 Nm)是很有用的。
使用更复杂模型的好处是,您可以为任何由刚体组成的运动系统精确定义与角度相关的所有量(方向、角动量、力矩和惯性积等) 。方程可能会变得粗糙,因此使用 MATLAB、Working Model或MoTIonGenesis等软件程序通常是明智的。
请注意,如果我在齿轮示例中遵循 3D 模型方法,那么我会明确地将速度和角速度视为矢量。但同样,齿轮示例中的运动符合我简化为 2D 运动学方程的标准,并且我避免了 3D 模型的时间繁重的定义。如果我有一个更复杂的运动系统,那么我必须将运动学和动态量视为向量,否则我可能会面临预测模型不佳的风险。
对系统的运动进行精确建模可能是一件棘手的事情,但通过构建一个稳健的模型,我们可以更快地响应更广泛的问题。如果我们希望制作一个功能强大、平滑且优雅的稳定运动系统,那么我们必须决定哪种模型更合适。作为工程师,我们必须认识到常见 2D 方程的局限性,以及解决 3D 运动系统的其他合适工具。
有关 3D 运动分析相关主题的更多资源和支持,请关注Simplexity 的产品开发博客。
额外学分
这是为四轴飞行器精确定义旋转信息的一种方法:
我们将使用中间参考系来描述四轴飞行器的方向。我们将调用附加到四轴飞行器B的初始参考系。最初, b̂ x = n̂ x、b̂ y = n̂ y和b̂ z = n̂ z。参考系D仍然附着在身体上,最初,d̂ z = b̂ z = n̂ z。我们将首先围绕b̂ z (这里等于d̂ z)旋转,然后我们将旋转角度 + θ。 然后我们可以写出 B 在N中的角速度是
然后我们将围绕身体上的另一个固定轴d̂ y旋转,我们将把这个新的中间参考系称为C。最初,ĉ x = b̂ x、d̂ y = ĉ y = b̂ y和 ĉ z = b̂ z。 我们将围绕 ĉ y旋转角度 + φ。然后我们可以写出 C 在 B 中的角速度是。
最后,我们将围绕固定轴 d̂ x旋转。最初,d̂ x = ĉ x,d̂ y = ĉ y和d̂ z = ĉ z 。我们将 围绕d̂ x旋转角度 + α。然后我们可以写出D在C中的角速度是。
因为这是来自陀螺仪的数据格式。我们想根据我们的全球参考框架N重新表达这一点。
幸运的是,这些旋转中的每一个都在每个中间帧之间创建了一个旋转矩阵,我们可以使用这些旋转矩阵的乘法来表达
我们定义的角度。(我不会详细介绍这部分,但它直接来自进行这些中间旋转。)结果如下:
请注意,我们可以通过以 _ _ _ _ _ _ _ _ _ d̂ 1、d̂ 2和d̂ 3。此外(通过重新排列),我们可以用⍵ 1、⍵ 2和⍵ 3来表示每个欧拉角。例如:
唉,我们为四轴飞行器的角速度给出精确定义并使其可供控制算法使用的第一步已经完成。
审核编辑:郭婷
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)