# `BB.ExampleRobots.FloatingDrone`
[🔗](https://github.com/beam-bots/bb/blob/main/test/support/example_robots.ex#L1111)

An airframe with a fully free base, plus a revolute gimbal.

The `:base` joint is `:floating`, so the airframe has all six degrees of
freedom. The gimbal below it is revolute, and its origin is deliberately
offset on two axes so that composing the two does not commute.

# `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.ExampleRobots.FloatingDrone.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*
