Skip to content
LIBRARY
URDFRevolute.md

URDFRevolute

Revolute joint preceded by a fixed translation and rotation.

Used for URDF import where each joint has an associated origin transform. frame_aFixedRotation(r, n, angle)Revolute(n=joint_n)frame_b.

This component extends from PartialTwoFrames This component extends from Renderable

Usage

MultibodyComponents.URDFRevolute(render=true, color=world_default_joint_color(), specular_coefficient=1.5, r=[0, 0, 0], n=[1, 0, 0], angle=0, joint_n=[0, 0, 1])

Parameters:

NameDescriptionUnitsDefault value
axisflangeExpose axis and support rotational flange connectors so the joint can be torque-actuatedfalse
rendertrue
colorworld_defau...int_color()
specular_coefficient1.5
rTranslation from frame_a to joint originm[0, 0, 0]
nFixed rotation axis[1, 0, 0]
angleFixed rotation angle [rad]rad0
joint_nRevolute joint axis (resolved in joint frame)[0, 0, 1]

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)

  • axis - This connector represents a rotational spline with angle and torque as the potential and flow variables, respectively. (Spline)

  • support - This connector represents a rotational spline with angle and torque as the potential and flow variables, respectively. (Spline)

Behavior

Source

dyad
"""
Revolute joint preceded by a fixed translation and rotation.

Used for URDF import where each joint has an associated origin transform.
`frame_a` → `FixedRotation(r, n, angle)` → `Revolute(n=joint_n)` → `frame_b`.
"""
component URDFRevolute
  extends PartialTwoFrames()
  extends Renderable(color = world_default_joint_color())
  trans = FixedRotation(final r = r, final n = n, final angle = angle, render = false)
  rev = Revolute(final n = joint_n, render = render, color = color)
  axis = Spline() if axisflange {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 450, "y1": 670, "x2": 550, "y2": 770, "rot": 0}
      },
      "tags": []
    }
  }
  support = Spline() if axisflange {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 200, "y1": 700, "x2": 300, "y2": 800, "rot": 0}
      },
      "tags": []
    }
  }
  "Expose `axis` and `support` rotational flange connectors so the joint can be torque-actuated"
  structural parameter axisflange::Boolean = false
  "Translation from frame_a to joint origin"
  parameter r::Length[3] = [0, 0, 0]
  "Fixed rotation axis"
  parameter n::Real[3] = [1, 0, 0]
  "Fixed rotation angle [rad]"
  parameter angle::Angle = 0
  "Revolute joint axis (resolved in joint frame)"
  parameter joint_n::Real[3] = [0, 0, 1]
relations
  connect(frame_a, trans.frame_a)
  connect(trans.frame_b, rev.frame_a)
  connect(rev.frame_b, frame_b)
  if axisflange
    connect(axis, rev.axis)
    connect(support, rev.support)
  end
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/Revolute.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 200,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end
Flattened Source
dyad
"""
Revolute joint preceded by a fixed translation and rotation.

Used for URDF import where each joint has an associated origin transform.
`frame_a` → `FixedRotation(r, n, angle)` → `Revolute(n=joint_n)` → `frame_b`.
"""
component URDFRevolute
  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
  trans = FixedRotation(final r = r, final n = n, final angle = angle, render = false)
  rev = Revolute(final n = joint_n, render = render, color = color)
  axis = Spline() if axisflange {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 450, "y1": 670, "x2": 550, "y2": 770, "rot": 0}
      },
      "tags": []
    }
  }
  support = Spline() if axisflange {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 200, "y1": 700, "x2": 300, "y2": 800, "rot": 0}
      },
      "tags": []
    }
  }
  "Expose `axis` and `support` rotational flange connectors so the joint can be torque-actuated"
  structural parameter axisflange::Boolean = false
  "Translation from frame_a to joint origin"
  parameter r::Length[3] = [0, 0, 0]
  "Fixed rotation axis"
  parameter n::Real[3] = [1, 0, 0]
  "Fixed rotation angle [rad]"
  parameter angle::Angle = 0
  "Revolute joint axis (resolved in joint frame)"
  parameter joint_n::Real[3] = [0, 0, 1]
relations
  connect(frame_a, trans.frame_a)
  connect(trans.frame_b, rev.frame_a)
  connect(rev.frame_b, frame_b)
  if axisflange
    connect(axis, rev.axis)
    connect(support, rev.support)
  end
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/Revolute.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 200,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end


Test Cases

No test cases defined.

  • Examples

  • Experiments

  • Analyses