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.
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
@spec child_spec(Keyword.t()) :: Supervisor.child_spec()
Returns a child specification for starting this robot under a supervisor.
@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)
@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.