Beam Bots Logo

Beam Bots

CILicense: Apache 2.0Hex version badgeHexdocs badgeREUSE statusOpenSSF Best PracticesOpenSSF ScorecardAsk DeepWiki

Beam Bots is a framework for building resilient robotics projects in Elixir.

Features

Example

defmodule MyRobot.Robot do
use BB
topology do
link :base_link do
joint :shoulder do
type(:revolute)
origin do
z(~u(0.1 meter))
end
axis do
end
limit do
effort(~u(10 newton_meter))
velocity(~u(1 radian_per_second))
end
link :upper_arm do
joint :elbow do
type(:revolute)
origin do
z(~u(0.3 meter))
end
axis do
roll(~u(-90 degree))
end
limit do
effort(~u(10 newton_meter))
velocity(~u(1 radian_per_second))
end
link :forearm do
end
end
end
end
end
end
end
# Start the supervision tree
{:ok, _pid} = BB.Supervisor.start_link(MyRobot.Robot)
# Compute forward kinematics
robot = MyRobot.Robot.robot()
positions = %{shoulder: :math.pi() / 4, elbow: 0.0}
{x, y, z} = BB.Robot.Kinematics.link_position(robot, positions, :forearm)
# Export to URDF
mix bb.to_urdf MyRobot.Robot -o robot.urdf

Documentation

Tutorials

Guided introduction to Beam Bots:

  1. Your First Robot - defining robots with the DSL
  2. Starting and Stopping - supervision trees
  3. Sensors and PubSub - publishing and subscribing to messages
  4. Forward Kinematics - computing link positions
  5. Commands and State Machine - controlling the robot
  6. Exporting to URDF - interoperability with ROS tools
  7. Parameters - runtime-adjustable configuration
  8. Parameter Bridges - bidirectional remote access

How-to Guides

Task-oriented guides for common operations:

Explanation

Understanding the architecture:

Reference

Status

Core functionality is implemented. Companion packages:

See proposals for planned features.

Installation

If your project uses Igniter:

mix igniter.install bb

This will:

To add additional robots later:

mix bb.add_robot --robot MyApp.Robots.SecondRobot

Manual Installation

Add Beam Bots to your dependencies:

def deps do
[
{:bb, "~> 0.1"}
]
end

Then create a robot module manually (see Your First Robot).

Sponsors

This project is made possible by the generous support of our sponsors: