URDFRevolute
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.
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:
| Name | Description | Units | Default value |
|---|---|---|---|
axisflange | Expose axis and support rotational flange connectors so the joint can be torque-actuated | – | false |
render | – | true | |
color | – | world_defau...int_color() | |
specular_coefficient | – | 1.5 | |
r | Translation from frame_a to joint origin | m | [0, 0, 0] |
n | Fixed rotation axis | – | [1, 0, 0] |
angle | Fixed rotation angle [rad] | rad | 0 |
joint_n | Revolute 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 severalFrame
connectors that can be connected together (Frame3D)
frame_b- Frame3D is the fundamental 3D connector used for 6DOF motion. Most components have one or severalFrame
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
"""
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"}
}
]
}
}
endFlattened Source
"""
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"}
}
]
}
}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses