Skip to content
LIBRARY
Cylindrical.md

Cylindrical ​

Cylindrical joint: combined prismatic and revolute along/around the same axis.

Allows one translational and one rotational degree of freedom along axis n.

This component extends from PartialTwoFrames This component extends from Renderable

Usage ​

MultibodyComponents.Cylindrical(render=true, color=world_default_joint_color(), specular_coefficient=1.5, n=[1, 0, 0], cylinder_diameter=world_default_joint_width())

Parameters: ​

NameDescriptionUnitsDefault value
statePriority–10
render–true
color–world_defau...int_color()
specular_coefficient–1.5
nJoint axis resolved in frame_a (= same as in frame_b)–[1, 0, 0]
cylinder_diameterDiameter of the cylinder in animations–world_defau...int_width()

Connectors ​

  • frame_a - Frame3D is the fundamental 3D connector used for 6DOF motion. Most components have one or several Frame

connectors that can be connected together (Frame3D)

  • frame_b - Frame3D is the fundamental 3D connector used for 6DOF motion. Most components have one or several Frame

connectors that can be connected together (Frame3D)

Variables ​

NameDescriptionUnits
sTranslational displacementm
phiRotation anglerad
vTranslational velocitym/s
wAngular velocityrad/s
aTranslational accelerationm/s2
wdAngular accelerationrad/s2

Behavior ​

Source ​

dyad
"""
Cylindrical joint: combined prismatic and revolute along/around the same axis.

Allows one translational and one rotational degree of freedom along axis `n`.
"""
component Cylindrical
  extends PartialTwoFrames()
  extends Renderable(color = world_default_joint_color())
  prismatic = Prismatic(final n = n, render = false)
  revolute = Revolute(final n = n, render = false)
  # Visualization shape
  cylinder_shape = CylinderShape(render = render, color = color, r = frame_a.r_0, R = transpose(frame_a.R), length_direction = n, length = s, width = cylinder_diameter, height = cylinder_diameter)
  structural parameter statePriority::Integer = 10
  "Joint axis resolved in frame_a (= same as in frame_b)"
  parameter n::Real[3] = [1, 0, 0]
  "Diameter of the cylinder in animations"
  parameter cylinder_diameter::Real = world_default_joint_width()
  "Translational displacement"
  variable s::Length(statePriority = statePriority)
  "Rotation angle"
  variable phi::Angle(statePriority = statePriority)
  "Translational velocity"
  variable v::Velocity(statePriority = statePriority)
  "Angular velocity"
  variable w::AngularVelocity(statePriority = statePriority)
  "Translational acceleration"
  variable a::Acceleration
  "Angular acceleration"
  variable wd::AngularAcceleration
relations
  phi = revolute.phi
  w = der(phi)
  wd = der(w)
  s = prismatic.s
  v = der(s)
  a = der(v)
  connect(frame_a, prismatic.frame_a)
  connect(prismatic.frame_b, revolute.frame_a)
  connect(revolute.frame_b, frame_b)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/Cylindrical.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 280,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end
Flattened Source
dyad
"""
Cylindrical joint: combined prismatic and revolute along/around the same axis.

Allows one translational and one rotational degree of freedom along axis `n`.
"""
component Cylindrical
  frame_a = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": -50, "y1": 450, "x2": 50, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  frame_b = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 950, "y1": 450, "x2": 1050, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  parameter render::Boolean = true
  parameter color::Real[4] = [0.5, 0.5, 0.5, 1.0]
  parameter specular_coefficient::Real = 1.5
  prismatic = Prismatic(final n = n, render = false)
  revolute = Revolute(final n = n, render = false)
  # Visualization shape
  cylinder_shape = CylinderShape(render = render, color = color, r = frame_a.r_0, R = transpose(frame_a.R), length_direction = n, length = s, width = cylinder_diameter, height = cylinder_diameter)
  structural parameter statePriority::Integer = 10
  "Joint axis resolved in frame_a (= same as in frame_b)"
  parameter n::Real[3] = [1, 0, 0]
  "Diameter of the cylinder in animations"
  parameter cylinder_diameter::Real = world_default_joint_width()
  "Translational displacement"
  variable s::Length(statePriority = statePriority)
  "Rotation angle"
  variable phi::Angle(statePriority = statePriority)
  "Translational velocity"
  variable v::Velocity(statePriority = statePriority)
  "Angular velocity"
  variable w::AngularVelocity(statePriority = statePriority)
  "Translational acceleration"
  variable a::Acceleration
  "Angular acceleration"
  variable wd::AngularAcceleration
relations
  phi = revolute.phi
  w = der(phi)
  wd = der(w)
  s = prismatic.s
  v = der(s)
  a = der(v)
  connect(frame_a, prismatic.frame_a)
  connect(prismatic.frame_b, revolute.frame_a)
  connect(revolute.frame_b, frame_b)
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/Cylindrical.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 280,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end


Test Cases ​

No test cases defined.

  • Examples

  • Experiments

  • Analyses