Skip to content
RelativeAccelerationSensor.md

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, ϕrel, is first determined as the difference between the absolute angles of the two splines:

phirel=phibphia

The relative angular velocity, wrel, is then calculated as the time derivative of this relative angle:

wrel=dphireldt

Finally, the output, relative angular acceleration arel, is obtained as the time derivative of the relative angular velocity:

arel=dwreldt=d2phireldt2

The sensor is ideal, which implies it does not exert any torque back on the connected splines. This is explicitly modeled by the equation τa=0 for 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

NameDescriptionUnits
phi_relRelative angle between two splinesrad
w_relRelative angular velocity between two splinesrad/s

Behavior

0=spline_b.tau(t)+spline_a.tau(t)phi_rel(t)=spline_b.phi(t)spline_a.phi(t)w_rel(t)=dphi_rel(t)dta_rel(t)=dw_rel(t)dt0=spline_a.tau(t)

Source

dyad
# 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
dyad
# 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.

julia
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"
  • Examples

  • Experiments

  • Analyses