# `BB.LiveView.ParameterRobot`
[🔗](https://github.com/beam-bots/bb_liveview/blob/main/test/support/parameter_robot.ex#L5)

A robot whose parameters cover each type the parameters widget can render,
including unit-typed parameters with and without bounds.

# `__bb_default_parameters__`

```elixir
@spec __bb_default_parameters__() :: [{[atom()], term()}]
```

Returns default parameter values.

Returns a list of `{path, value}` tuples for parameters that have defaults.

# `__bb_parameter_schema__`

```elixir
@spec __bb_parameter_schema__() :: [{[atom()], keyword()}]
```

Returns the parameter schema for validation.

The schema is a list of `{path, opts}` tuples where `opts` is a keyword
list compatible with `Spark.Options`.

# `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.LiveView.ParameterRobot.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*
