BB.IK.TestRobots.SixDofArm (bb_ik_dls v0.3.2)

Copy Markdown View Source

6-DOF anthropomorphic arm for testing orientation-constrained IK.

Structure:

  • base_link
    • shoulder_yaw (revolute, Z-axis)
      • shoulder_link1
        • shoulder_pitch (revolute, Y-axis)
          • shoulder_link2
            • shoulder_roll (revolute, X-axis)
              • upper_arm (0.25m)
                • elbow_pitch (revolute, Y-axis)
                  • forearm (0.2m)
                    • wrist_pitch (revolute, Y-axis)
                      • wrist_link
                        • wrist_roll (revolute, X-axis)
                          • hand
                            • tip_joint (fixed, 0.1m)
                              • tip

Total: 6 revolute joints providing full 6-DOF control

  • Shoulder: yaw (Z), pitch (Y), roll (X) - spherical wrist
  • Elbow: pitch (Y) - single axis bend
  • Wrist: pitch (Y), roll (X) - allows tool orientation

This arm can achieve arbitrary position and orientation within its workspace. Total reach: ~0.55m from shoulder

Summary

Functions

Returns a child specification for starting this robot under a supervisor.

Returns the optimised robot representation.

Starts the robot's supervision tree.

Functions

child_spec(opts \\ [])

@spec child_spec(Keyword.t()) :: Supervisor.child_spec()

Returns a child specification for starting this robot under a supervisor.

robot()

@spec robot() :: BB.Robot.t()

Returns the optimised robot representation.

This struct is built at compile-time from the DSL definition and contains:

  • All physical values converted to SI base units (floats)
  • Flat maps for O(1) lookup of links, joints, sensors, and actuators
  • Pre-computed topology metadata for efficient traversal

Examples

robot = Elixir.BB.IK.TestRobots.SixDofArm.robot()
link = BB.Robot.get_link(robot, :base_link)
joint = BB.Robot.get_joint(robot, :shoulder)

start_link(opts \\ [])

@spec start_link(Keyword.t()) :: Supervisor.on_start()

Starts the robot's supervision tree.

Options

All options are passed through to sensor and actuator child processes.