首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Modelica MultiBody库中体位坐标的动态变化

Modelica MultiBody库中体位坐标的动态变化
EN

Stack Overflow用户
提问于 2017-09-20 10:05:59
回答 3查看 229关注 0票数 1

我对Modelica相当陌生,几个月前,由于我一直在做的一个项目,我才刚刚开始。主要是使用标准Modelica发行版中包含的multibody库处理多体机械系统。

在模拟过程中,我需要根据动态计算出的坐标来改变身体的位置,但我找不到这样的方法。

这是计算给定系统质量中心位置的向量变量:

代码语言:javascript
复制
Modelica.SIunits.Length CMG[2];

CMG[1] = ... + cos(part3rotation.angles[3]) ... + part3origin[1] ...;
CMG[2] = ...;

我想定位一个无质量物体(FixedShape)在坐标(CMG1,CMG2),作为一种方式显示质心和它的运动在模拟期间。

有办法这样做吗?

我试图将主体附加到一个固定的转换组件上,但是它需要一个参数(PARAM)而不是一个变量(VAR),这会导致一个错误。

使用的软件: Modelica 3.2.2和Wolfram SystemModeler 5.0。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-09-20 12:39:13

解决方案是修改FixedTranslation类以包括一个新的输入:

代码语言:javascript
复制
input Modelica.SIunits.Position xyz[3];

并修改方程:

代码语言:javascript
复制
frame_b.r_0 = frame_a.r_0 + xyz;

将CMG向量连接到类的xyz向量就可以了。

票数 0
EN

Stack Overflow用户

发布于 2017-09-20 10:55:00

我将向您的身体添加一个框架Modelica.Mechanics.MultiBody.Interfaces.Frame_b,然后添加以下等式(摘自FixedTranslation):

代码语言:javascript
复制
frame_b.r_0 = your_three_d_vector;
frame_b.R = frame_a.R; // or some other orientation

/* Force and torque balance */
zeros(3) = frame_a.f + frame_b.f; // and maybe some other forces in your system
zeros(3) = frame_a.t + frame_b.t + cross(r, frame_b.f); // and maybe some other torques and forces in your system

为了在Modelica中添加一个额外的连接器,我们不仅要考虑潜在的变量(在这种情况下,位置和方向),还要考虑流变量(力和力矩)。

票数 1
EN

Stack Overflow用户

发布于 2017-09-26 11:42:35

我想你计算出整个系统的质量中心相对于惯性系统的位置。然后,您可以在类中完全省略frame_a,因此不必总是将frame_a明确地连接到world.frame_b,这显然是过时的。

只需确保使用Connections.root(frame_b.R)而不是FixedTranslation中最初定义的Connections.branch(frame_a.R, frame_b.R)

还有一条评论。建议直接使用向量而不是位置矢量组件,并使用来自Modelica.Mechanics.MultiBody.Frames的函数进行矢量转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46319144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档