RelativeAccelerationSensor
Ideal sensor that measures the relative angular acceleration between two rotational mechanical splines.
This component calculates the relative angular acceleration between two connected splines, spline_a
and spline_b
. The relative angle,
The relative angular velocity,
Finally, the output, relative angular acceleration
The sensor is ideal, which implies it does not exert any torque back on the connected splines. This is explicitly modeled by the equation spline_a
.
This component extends from PartialRelativeSensor
Usage
RelativeAccelerationSensor()
Connectors
spline_a
- (Spline
)spline_b
- (Spline
)a_rel
- This connector represents a real signal as an output from a component (RealOutput
)
Variables
Name | Description | Units |
---|---|---|
phi_rel | Relative angle between two splines | rad |
w_rel | Relative angular velocity between two splines | rad/s |
Behavior
Source
# Ideal sensor that measures the relative angular acceleration between two rotational mechanical splines.
#
# This component calculates the relative angular acceleration between two connected
# splines, `spline_a` and `spline_b`. The relative angle, \$\\phi_{rel}\$,
# is first determined as the difference between the absolute angles of the two
# splines:
# ```math
# \\phi_{rel} = \\phi_b - \\phi_a
# ```
# The relative angular velocity, \$w_{rel}\$, is then calculated as the time
# derivative of this relative angle:
# ```math
# w_{rel} = \frac{d\\phi_{rel}}{dt}
# ```
# Finally, the output, relative angular acceleration \$a_{rel}\$, is obtained
# as the time derivative of the relative angular velocity:
# ```math
# a_{rel} = \frac{dw_{rel}}{dt} = \frac{d^2\\phi_{rel}}{dt^2}
# ```
# The sensor is ideal, which implies it does not exert any torque back on the connected splines.
# This is explicitly modeled by the equation \$\tau_a = 0\$ for `spline_a`.
component RelativeAccelerationSensor
extends PartialRelativeSensor
# Relative angular acceleration between two splines as output signal
a_rel = RealOutput() [{
"Dyad": {
"placement": {"icon": {"x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}}
}
}]
# Relative angle between two splines
variable phi_rel::Angle
# Relative angular velocity between two splines
variable w_rel::AngularVelocity
relations
phi_rel = spline_b.phi-spline_a.phi
w_rel = der(phi_rel)
a_rel = der(w_rel)
0 = spline_a.tau
metadata {
"Dyad": {
"icons": {"default": "dyad://RotationalComponents/RelSensor-Angle-Vel-Acc.svg"}
}
}
end
Flattened Source
# Ideal sensor that measures the relative angular acceleration between two rotational mechanical splines.
#
# This component calculates the relative angular acceleration between two connected
# splines, `spline_a` and `spline_b`. The relative angle, \$\\phi_{rel}\$,
# is first determined as the difference between the absolute angles of the two
# splines:
# ```math
# \\phi_{rel} = \\phi_b - \\phi_a
# ```
# The relative angular velocity, \$w_{rel}\$, is then calculated as the time
# derivative of this relative angle:
# ```math
# w_{rel} = \frac{d\\phi_{rel}}{dt}
# ```
# Finally, the output, relative angular acceleration \$a_{rel}\$, is obtained
# as the time derivative of the relative angular velocity:
# ```math
# a_{rel} = \frac{dw_{rel}}{dt} = \frac{d^2\\phi_{rel}}{dt^2}
# ```
# The sensor is ideal, which implies it does not exert any torque back on the connected splines.
# This is explicitly modeled by the equation \$\tau_a = 0\$ for `spline_a`.
component RelativeAccelerationSensor
# Left spline connector for the sensor.
spline_a = Spline() [{"Dyad": {"placement": {"icon": {"x1": -50, "y1": 450, "x2": 50, "y2": 550}}}}]
# Right spline connector for the sensor.
spline_b = Spline() [{"Dyad": {"placement": {"icon": {"x1": 950, "y1": 450, "x2": 1050, "y2": 550}}}}]
# Relative angular acceleration between two splines as output signal
a_rel = RealOutput() [{
"Dyad": {
"placement": {"icon": {"x1": 450, "y1": 950, "x2": 550, "y2": 1050, "rot": 90}}
}
}]
# Relative angle between two splines
variable phi_rel::Angle
# Relative angular velocity between two splines
variable w_rel::AngularVelocity
relations
0 = spline_a.tau+spline_b.tau
phi_rel = spline_b.phi-spline_a.phi
w_rel = der(phi_rel)
a_rel = der(w_rel)
0 = spline_a.tau
metadata {
"Dyad": {
"icons": {"default": "dyad://RotationalComponents/RelSensor-Angle-Vel-Acc.svg"}
}
}
end
Test Cases
This is setup code, that must be run before each test case.
using RotationalComponents
using ModelingToolkit, OrdinaryDiffEqDefault
using Plots
using CSV, DataFrames
snapshotsdir = joinpath(dirname(dirname(pathof(RotationalComponents))), "test", "snapshots")
"/home/actions-runner-10/.julia/packages/RotationalComponents/0VPxm/test/snapshots"
Related
Examples
Experiments
Analyses