# `BB.IK.TestRobots.SixDofArm`
[🔗](https://github.com/beam-bots/bb_ik_fabrik/blob/main/test/support/test_robots.ex#L467)

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

# `child_spec`

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

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

# `robot`

```elixir
@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()
    {:ok, link} = BB.Robot.get_link(robot, :base_link)
    {:ok, joint} = BB.Robot.get_joint(robot, :shoulder)

# `start_link`

```elixir
@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.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
