Skip to content
LIBRARY
FixedTranslation.md

FixedTranslation

Fixed translation between two frames.

frame_b is displaced from frame_a by vector r resolved in frame_a. Orientation is rigidly transferred, forces and torques are balanced (with the lever arm cross product for torques).

This component extends from Renderable

Usage

MultibodyComponents.FixedTranslation(render=true, color=world_default_rod_color(), specular_coefficient=1.5, r=[0, 0, 0], radius=norm(r) / world_default_width_fraction(), r_length=norm(r), r_dir=r / max(r_length, 1e-10))

Parameters:

NameDescriptionUnitsDefault value
rendertrue
colorworld_default_rod_color()
specular_coefficient1.5
rposition vector from frame_a to frame_b, resolved in frame_am[0, 0, 0]
radiusRadius of the body in animationsnorm(r) / w..._fraction()

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)

Behavior

Dict{MIME{Symbol("text/plain")}, String} with 1 entry: MIME type text/plain => "Error displaying result"

Source

dyad
"""
Fixed translation between two frames.

`frame_b` is displaced from `frame_a` by vector `r` resolved in `frame_a`.
Orientation is rigidly transferred, forces and torques are balanced
(with the lever arm cross product for torques).
"""
component FixedTranslation
  extends Renderable(color = world_default_rod_color())
  frame_a = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 50, "y1": 450, "x2": 150, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  frame_b = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 850, "y1": 450, "x2": 950, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  # Visualization shape
  shape = CylinderShape(render = render, color = color, r = frame_a.r_0, R = transpose(frame_a.R), length_direction = r_dir, length = r_length, width = 2 * radius, height = 2 * radius)
  "position vector from frame_a to frame_b, resolved in frame_a"
  parameter r::Length[3] = [0, 0, 0]
  "Radius of the body in animations"
  parameter radius::Real = norm(r) / world_default_width_fraction()
  final parameter r_length::Real = norm(r)
  final parameter r_dir::Real[3] = r / max(r_length, 1e-10)
relations
  # Position: frame_b displaced from frame_a by r resolved to world
  frame_b.r_0 = frame_a.r_0 + resolve1(frame_a.R, r)
  # Orientation rigidly transferred
  frame_b.R = frame_a.R
  # Force balance
  frame_a.f + frame_b.f = [0, 0, 0]
  # Torque balance (with lever arm)
  frame_a.tau + frame_b.tau + cross(r, frame_b.f) = [0, 0, 0]
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/FixedTranslation.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 280,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end
Flattened Source
dyad
"""
Fixed translation between two frames.

`frame_b` is displaced from `frame_a` by vector `r` resolved in `frame_a`.
Orientation is rigidly transferred, forces and torques are balanced
(with the lever arm cross product for torques).
"""
component FixedTranslation
  parameter render::Boolean = true
  parameter color::Real[4] = [0.5, 0.5, 0.5, 1.0]
  parameter specular_coefficient::Real = 1.5
  frame_a = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 50, "y1": 450, "x2": 150, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  frame_b = Frame3D() {
    "Dyad": {
      "placement": {
        "diagram": {"iconName": "default", "x1": 850, "y1": 450, "x2": 950, "y2": 550, "rot": 0}
      },
      "tags": []
    }
  }
  # Visualization shape
  shape = CylinderShape(render = render, color = color, r = frame_a.r_0, R = transpose(frame_a.R), length_direction = r_dir, length = r_length, width = 2 * radius, height = 2 * radius)
  "position vector from frame_a to frame_b, resolved in frame_a"
  parameter r::Length[3] = [0, 0, 0]
  "Radius of the body in animations"
  parameter radius::Real = norm(r) / world_default_width_fraction()
  final parameter r_length::Real = norm(r)
  final parameter r_dir::Real[3] = r / max(r_length, 1e-10)
relations
  # Position: frame_b displaced from frame_a by r resolved to world
  frame_b.r_0 = frame_a.r_0 + resolve1(frame_a.R, r)
  # Orientation rigidly transferred
  frame_b.R = frame_a.R
  # Force balance
  frame_a.f + frame_b.f = [0, 0, 0]
  # Torque balance (with lever arm)
  frame_a.tau + frame_b.tau + cross(r, frame_b.f) = [0, 0, 0]
metadata {
  "Dyad": {
    "icons": {"default": "dyad://MultibodyComponents/FixedTranslation.svg"},
    "labels": [
      {
        "label": "$(instance)",
        "x": 500,
        "y": 280,
        "rot": 0,
        "attrs": {"font-size": "160"}
      }
    ]
  }
}
end


Test Cases

No test cases defined.