BB.Kino (bb_kino v0.3.3)

View Source

Livebook widgets for the Beam Bots robotics framework.

This library provides interactive Kino widgets for working with BB robots in Livebook notebooks.

Smart Cell

The easiest way to get started is using the "Manage robot" Smart Cell:

  1. Click "+ Smart" in Livebook
  2. Select "Manage robot"
  3. Enter your robot module name
  4. Evaluate the cell

This gives you a complete dashboard with all widgets in a grid layout.

Available Widgets

Quick Start

# Display safety controls
BB.Kino.safety(MyRobot)

# Control joints (only works when armed)
BB.Kino.joints(MyRobot)

# Watch all robot messages
BB.Kino.events(MyRobot)

# Execute commands
BB.Kino.commands(MyRobot)

# 3D visualisation with live position updates
BB.Kino.visualisation(MyRobot)

# View and edit parameters
BB.Kino.parameters(MyRobot)

Usage with Real Robots

Make sure your robot supervisor is started before creating widgets:

{:ok, _pid} = MyRobot.start_link()

BB.Kino.safety(MyRobot)

Summary

Functions

Creates a command widget for the robot.

Creates an event stream widget for the robot.

Creates a joint control widget for the robot.

Creates a parameters widget for the robot.

Creates a safety status widget for the robot.

Creates a 3D visualisation widget for the robot.

Functions

commands(robot_module)

@spec commands(module()) :: Kino.JS.Live.t()

Creates a command widget for the robot.

Displays available commands in tabs with dynamic forms for arguments.

Example

BB.Kino.commands(MyRobot)

events(robot_module, opts \\ [])

@spec events(
  module(),
  keyword()
) :: Kino.JS.Live.t()

Creates an event stream widget for the robot.

Shows a live stream of BB messages with filtering and pause/resume.

Options

  • :path_filter - filter by path (e.g., [:sensor])
  • :message_types - filter by message types
  • :max_messages - max messages to display (default: 100)

Examples

# All messages
BB.Kino.events(MyRobot)

# Only sensor messages
BB.Kino.events(MyRobot, path_filter: [:sensor])

joints(robot_module)

@spec joints(module()) :: Kino.JS.Live.t()

Creates a joint control widget for the robot.

Displays all movable joints with position sliders. Controls are disabled when the robot is not armed.

Example

BB.Kino.joints(MyRobot)

parameters(robot_module)

@spec parameters(module()) :: Kino.JS.Live.t()

Creates a parameters widget for the robot.

Displays all robot parameters in a tab-based interface with editing controls. Local parameter groups appear as tabs, remote bridge parameters in separate tabs.

Example

BB.Kino.parameters(MyRobot)

safety(robot_module)

@spec safety(module()) :: Kino.JS.Live.t()

Creates a safety status widget for the robot.

Shows the current arming state and provides arm/disarm controls.

Example

BB.Kino.safety(MyRobot)

visualisation(robot_module)

@spec visualisation(module()) :: Kino.JS.Live.t()

Creates a 3D visualisation widget for the robot.

Displays an interactive Three.js view with real-time joint position updates. Supports orbit camera controls (pan, zoom, rotate).

Example

BB.Kino.visualisation(MyRobot)