BB.LiveView.CommandRobot (bb_liveview v0.2.8)

Copy Markdown View Source

A minimal robot exposing a single continuous command, for dashboard tests.

Summary

Functions

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

Returns the optimised robot representation.

Execute the run_forever command.

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.LiveView.CommandRobot.robot()
link = BB.Robot.get_link(robot, :base_link)
joint = BB.Robot.get_joint(robot, :shoulder)

run_forever(goal \\ [])

@spec run_forever(keyword()) :: {:ok, pid()} | {:error, term()}

Execute the run_forever command.

Returns

  • {:ok, pid()} - Command started, use BB.Command.await/2 for the result
  • {:error, term()} - Command could not be started

Example

{:ok, cmd} = run_forever(goal_args)
{:ok, result} = BB.Command.await(cmd)

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.