LIBRARY
Planar
Planar joint: motion in a plane plus rotation about the plane normal.
Provides 2 translational DOF (in the plane) and 1 rotational DOF (about n). The plane is defined by its normal n and a direction n_x in the plane. Composed of two Prismatic joints and one Revolute joint.
This component extends from PartialTwoFrames This component extends from Renderable
Usage
MultibodyComponents.Planar(render=true, color=world_default_joint_color(), specular_coefficient=1.5)
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
n | Plane normal, resolved in frame_a | – | [0, 0, 1] |
n_x | Direction of x-axis in the plane, resolved in frame_a (must be orthogonal to n) | – | [1, 0, 0] |
statePriority | – | 3 | |
render | – | true | |
color | – | world_defau...int_color() | |
specular_coefficient | – | 1.5 |
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)
Variables
| Name | Description | Units |
|---|---|---|
s_x | Translation along x-axis in plane | m |
s_y | Translation along y-axis in plane | m |
phi | Rotation angle around plane normal | rad |
v_x | Velocity along x-axis | m/s |
v_y | Velocity along y-axis | m/s |
w | Angular velocity | rad/s |
a_x | Acceleration along x-axis | m/s2 |
a_y | Acceleration along y-axis | m/s2 |
wd | Angular acceleration | rad/s2 |
Behavior
Source
dyad
"""
Planar joint: motion in a plane plus rotation about the plane normal.
Provides 2 translational DOF (in the plane) and 1 rotational DOF (about `n`).
The plane is defined by its normal `n` and a direction `n_x` in the plane.
Composed of two `Prismatic` joints and one `Revolute` joint.
"""
component Planar
extends PartialTwoFrames()
extends Renderable(color = world_default_joint_color())
prismatic_x = Prismatic(final n = cross(cross(n, n_x), n), render = render)
prismatic_y = Prismatic(final n = cross(n, n_x), render = render)
revolute = Revolute(final n = n, rooted = RootedFrame.FrameB(), render = render)
"Plane normal, resolved in frame_a"
structural parameter n::Real[3] = [0, 0, 1]
"Direction of x-axis in the plane, resolved in frame_a (must be orthogonal to n)"
structural parameter n_x::Real[3] = [1, 0, 0]
structural parameter statePriority::Integer = 3
"Translation along x-axis in plane"
variable s_x::Length(statePriority = statePriority)
"Translation along y-axis in plane"
variable s_y::Length(statePriority = statePriority)
"Rotation angle around plane normal"
variable phi::Angle(statePriority = statePriority)
"Velocity along x-axis"
variable v_x::Velocity(statePriority = statePriority)
"Velocity along y-axis"
variable v_y::Velocity(statePriority = statePriority)
"Angular velocity"
variable w::AngularVelocity(statePriority = statePriority)
"Acceleration along x-axis"
variable a_x::Acceleration
"Acceleration along y-axis"
variable a_y::Acceleration
"Angular acceleration"
variable wd::AngularAcceleration
relations
s_x = prismatic_x.s
s_y = prismatic_y.s
phi = revolute.phi
v_x = der(s_x)
v_y = der(s_y)
w = der(phi)
a_x = der(v_x)
a_y = der(v_y)
wd = der(w)
connect(frame_a, prismatic_x.frame_a)
connect(prismatic_x.frame_b, prismatic_y.frame_a)
connect(prismatic_y.frame_b, revolute.frame_a)
connect(revolute.frame_b, frame_b)
metadata {
"Dyad": {
"icons": {"default": "dyad://MultibodyComponents/PlanarJoint.svg"},
"labels": [
{
"label": "$(instance)",
"x": 500,
"y": 200,
"rot": 0,
"attrs": {"font-size": "160"}
}
]
}
}
endFlattened Source
dyad
"""
Planar joint: motion in a plane plus rotation about the plane normal.
Provides 2 translational DOF (in the plane) and 1 rotational DOF (about `n`).
The plane is defined by its normal `n` and a direction `n_x` in the plane.
Composed of two `Prismatic` joints and one `Revolute` joint.
"""
component Planar
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_x = Prismatic(final n = cross(cross(n, n_x), n), render = render)
prismatic_y = Prismatic(final n = cross(n, n_x), render = render)
revolute = Revolute(final n = n, rooted = RootedFrame.FrameB(), render = render)
"Plane normal, resolved in frame_a"
structural parameter n::Real[3] = [0, 0, 1]
"Direction of x-axis in the plane, resolved in frame_a (must be orthogonal to n)"
structural parameter n_x::Real[3] = [1, 0, 0]
structural parameter statePriority::Integer = 3
"Translation along x-axis in plane"
variable s_x::Length(statePriority = statePriority)
"Translation along y-axis in plane"
variable s_y::Length(statePriority = statePriority)
"Rotation angle around plane normal"
variable phi::Angle(statePriority = statePriority)
"Velocity along x-axis"
variable v_x::Velocity(statePriority = statePriority)
"Velocity along y-axis"
variable v_y::Velocity(statePriority = statePriority)
"Angular velocity"
variable w::AngularVelocity(statePriority = statePriority)
"Acceleration along x-axis"
variable a_x::Acceleration
"Acceleration along y-axis"
variable a_y::Acceleration
"Angular acceleration"
variable wd::AngularAcceleration
relations
s_x = prismatic_x.s
s_y = prismatic_y.s
phi = revolute.phi
v_x = der(s_x)
v_y = der(s_y)
w = der(phi)
a_x = der(v_x)
a_y = der(v_y)
wd = der(w)
connect(frame_a, prismatic_x.frame_a)
connect(prismatic_x.frame_b, prismatic_y.frame_a)
connect(prismatic_y.frame_b, revolute.frame_a)
connect(revolute.frame_b, frame_b)
metadata {
"Dyad": {
"icons": {"default": "dyad://MultibodyComponents/PlanarJoint.svg"},
"labels": [
{
"label": "$(instance)",
"x": 500,
"y": 200,
"rot": 0,
"attrs": {"font-size": "160"}
}
]
}
}
endTest Cases
No test cases defined.
Related
Examples
Experiments
Analyses