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
statePriority10
rendertrue
colorworld_defau...int_color()
specular_coefficient1.5
nJoint axis resolved in frame_a (= same as in frame_b)[1, 0, 0]
cylinder_diameterDiameter of the cylinder in animationsworld_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