PlanarMechanics.RelativeAcceleration
Measures relative acceleration and angular acceleration between the origins of two frame connectors.
Composes RelativePosition (FrameA) + differentiation + TransformRelativeVector + differentiation. Following Modelica convention, the transform is applied between the two differentiations so that rotating-frame effects are handled correctly. This is a sensor component: it reads kinematic quantities without exerting forces.
This component extends from PartialTwoFrameSensor
Usage
MultibodyComponents.PlanarMechanics.RelativeAcceleration()
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
resolve_in_frame | – | MultibodyComponents.ResolveInFrame.FrameA() |
Connectors
frame_a- Coordinate system (2-dim.) fixed to the component with one cut-force and cut-torque.
All variables are resolved in the planar world frame. (Frame2D)
frame_b- Coordinate system (2-dim.) fixed to the component with one cut-force and cut-torque.
All variables are resolved in the planar world frame. (Frame2D)
frame_resolve- Coordinate system (2-dim.) fixed to the component with one cut-force and cut-torque.
All variables are resolved in the planar world frame. (Frame2D)
rel_a_x- This connector represents a real signal as an output from a component (RealOutput)rel_a_y- This connector represents a real signal as an output from a component (RealOutput)rel_alpha- This connector represents a real signal as an output from a component (RealOutput)
Variables
| Name | Description | Units |
|---|---|---|
rpx | m | |
rpy | m | |
rpphi | rad | |
vrpx | m/s | |
vrpy | m/s | |
vrpphi | rad/s |
Behavior
Source
"""
Measures relative acceleration and angular acceleration between the origins of two
frame connectors.
Composes RelativePosition (FrameA) + differentiation + TransformRelativeVector +
differentiation. Following Modelica convention, the transform is applied between
the two differentiations so that rotating-frame effects are handled correctly.
This is a sensor component: it reads kinematic quantities without exerting forces.
"""
component RelativeAcceleration
extends PartialTwoFrameSensor
frame_resolve = Frame2D() if resolve_in_frame == MultibodyComponents.ResolveInFrame.FrameResolve() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": -50, "x2": 550, "y2": 50, "rot": 0}
},
"tags": []
}
}
"Relative x acceleration"
rel_a_x = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 950, "x2": 200, "y2": 1050, "rot": 90}
},
"tags": []
}
}
"Relative y acceleration"
rel_a_y = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}
},
"tags": []
}
}
"Relative angular acceleration"
rel_alpha = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 800, "y1": 950, "x2": 900, "y2": 1050, "rot": 90}
},
"tags": []
}
}
rel_pos = RelativePosition(resolve_in_frame = MultibodyComponents.ResolveInFrame.FrameA())
transform = TransformRelativeVector(frame_in = MultibodyComponents.ResolveInFrame.FrameA(), frame_out = resolve_in_frame) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": 610, "x2": 550, "y2": 710, "rot": 0}
},
"tags": []
}
}
structural parameter resolve_in_frame::MultibodyComponents.ResolveInFrame = MultibodyComponents.ResolveInFrame.FrameA()
variable rpx::Length
variable rpy::Length
variable rpphi::Angle
variable vrpx::Velocity
variable vrpy::Velocity
variable vrpphi::AngularVelocity
relations
connect(frame_a, rel_pos.frame_a)
connect(frame_b, rel_pos.frame_b)
connect(frame_a, transform.frame_a)
connect(frame_b, transform.frame_b)
if resolve_in_frame == MultibodyComponents.ResolveInFrame.FrameResolve()
connect(frame_resolve, transform.frame_resolve)
end
rpx = rel_pos.rel_x
rpy = rel_pos.rel_y
rpphi = rel_pos.rel_phi
vrpx = der(rpx)
vrpy = der(rpy)
vrpphi = der(rpphi)
transform.x_in = der(vrpx)
transform.y_in = der(vrpy)
transform.phi_in = der(vrpphi)
rel_a_x = transform.x_out
rel_a_y = transform.y_out
rel_alpha = transform.phi_out
metadata {
"Dyad": {
"icons": {"default": "dyad://MultibodyComponents/TwoFrameSensor.svg"},
"labels": [{"label": "rel acc", "x": 500, "y": 680, "rot": 0}]
}
}
endFlattened Source
"""
Measures relative acceleration and angular acceleration between the origins of two
frame connectors.
Composes RelativePosition (FrameA) + differentiation + TransformRelativeVector +
differentiation. Following Modelica convention, the transform is applied between
the two differentiations so that rotating-frame effects are handled correctly.
This is a sensor component: it reads kinematic quantities without exerting forces.
"""
component RelativeAcceleration
frame_a = Frame2D() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 50, "y1": 450, "x2": 150, "y2": 550, "rot": 0}
},
"tags": []
}
}
frame_b = Frame2D() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 850, "y1": 450, "x2": 950, "y2": 550, "rot": 0}
},
"tags": []
}
}
frame_resolve = Frame2D() if resolve_in_frame == MultibodyComponents.ResolveInFrame.FrameResolve() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": -50, "x2": 550, "y2": 50, "rot": 0}
},
"tags": []
}
}
"Relative x acceleration"
rel_a_x = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 100, "y1": 950, "x2": 200, "y2": 1050, "rot": 90}
},
"tags": []
}
}
"Relative y acceleration"
rel_a_y = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}
},
"tags": []
}
}
"Relative angular acceleration"
rel_alpha = RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 800, "y1": 950, "x2": 900, "y2": 1050, "rot": 90}
},
"tags": []
}
}
rel_pos = RelativePosition(resolve_in_frame = MultibodyComponents.ResolveInFrame.FrameA())
transform = TransformRelativeVector(frame_in = MultibodyComponents.ResolveInFrame.FrameA(), frame_out = resolve_in_frame) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 450, "y1": 610, "x2": 550, "y2": 710, "rot": 0}
},
"tags": []
}
}
structural parameter resolve_in_frame::MultibodyComponents.ResolveInFrame = MultibodyComponents.ResolveInFrame.FrameA()
variable rpx::Length
variable rpy::Length
variable rpphi::Angle
variable vrpx::Velocity
variable vrpy::Velocity
variable vrpphi::AngularVelocity
relations
connect(frame_a, rel_pos.frame_a)
connect(frame_b, rel_pos.frame_b)
connect(frame_a, transform.frame_a)
connect(frame_b, transform.frame_b)
if resolve_in_frame == MultibodyComponents.ResolveInFrame.FrameResolve()
connect(frame_resolve, transform.frame_resolve)
end
rpx = rel_pos.rel_x
rpy = rel_pos.rel_y
rpphi = rel_pos.rel_phi
vrpx = der(rpx)
vrpy = der(rpy)
vrpphi = der(rpphi)
transform.x_in = der(vrpx)
transform.y_in = der(vrpy)
transform.phi_in = der(vrpphi)
rel_a_x = transform.x_out
rel_a_y = transform.y_out
rel_alpha = transform.phi_out
metadata {
"Dyad": {
"icons": {"default": "dyad://MultibodyComponents/TwoFrameSensor.svg"},
"labels": [{"label": "rel acc", "x": 500, "y": 680, "rot": 0}]
}
}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses
Tests