jimsynz

jimsynz

Ash Core Team

Beam Bots - Resilient Robotics on the BEAM

Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns.

Why?

When you look at ROS2’s architecture, so much of what it provides maps directly to BEAM/OTP patterns:

  • ROS2’s pubsub → Phoenix.PubSub, Registry, process messaging
  • ROS2’s Services → GenServer.call/3
  • ROS2’s Actions → supervised Task with progress messages
  • ROS2’s Controllers → GenServers with state machines
  • ROS2’s parameter system → ETS

The BEAM already gives you fault tolerance, concurrency, soft real-time performance, and good behaviour in resource-constrained environments. BB builds on that
foundation.

See harton.nz • Elixir for Robots for more

Features

  • Spark DSL for declarative robot definitions - your code mirrors your robot’s physical structure
  • Topology-based supervision - the supervision tree mirrors your robot topology for fault isolation
  • Physical units with the ~u sigil - ~u(90 degree), ~u(0.5 meter), ~u(10 newton_meter)
  • Forward kinematics using Nx (GPU-accelerated where supported)
  • Hierarchical PubSub for sensor data with message type filtering
  • URDF export for integration with ROS visualisation tools

Current Status

Early days - the framework compiles, tests pass, and the DSL works, but it hasn’t controlled physical robots yet. I’m currently building a rover to close that loop.
Looking for feedback and contributors.

Read harton.nz • Announcing Beam Bots: Resilient Robotics on the BEAM for more details.

Links

https://github.com/beam-bots/bb

Tutorials

See the tutorials for a guided introduction:

  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

The DSL Reference documents all available options.

Most Liked

jimsynz

jimsynz

Ash Core Team

That’s definitely the idea. I want to build it out to the point that it’s a no brainer if you want to build robots to use BB. I know I’m in for the long haul to build out the ecosystem of packages and device support but it’s something that I’ve wanted to exist for years, and now I’ve spent several years being shown how to lovingly own and evangelise a framework by @zachdaniel I think I can handle the challenge.

10
Post #8
jimsynz

jimsynz

Ash Core Team

Week four progress update for Beam Bots - the Elixir robotics framework.

Highlights:

  • Collision detection system (broad phase AABB + narrow phase primitives)
  • IK solvers can now reject self-colliding solutions
  • Commands converted from Tasks to GenServers for interruptibility (E-stop actually stops mid-motion now)
  • New Parameters widget for Livebook
  • WidowX 200 arm running real motions with DLS inverse kinematics
jimsynz

jimsynz

Ash Core Team

it’s definitely something I plan to do, starting with something very very simple.

Last Post!

jimsynz

jimsynz

Ash Core Team

Here’s what landed in June for Beam Bots, resilient robotics on the BEAM:

  • bb’s kinematics core moved to Nx defn — forward kinematics, all-link transforms and analytical Jacobians instead of finite differences.
  • Both IK solvers cashed in: bb_ik_dls now uses the analytical Jacobian; bb_ik_fabrik is now composable defns.
  • Servo disarm got honest — confirms torque is actually off rather than reporting false success on a dead controller.
  • Continuous commands cancel cleanly — no more “cancellation logged as a crash”, plus cancel controls in bb_kino and bb_liveview.
  • @mcass19’s ex_ratatui + bb_tui now render a live 3D view of your robot in the terminal.
  • Whole ecosystem is on Elixir 1.20 now.
  • Balance bot for the Goatmire workshop is rolling its wheels; learned-policy package (bb_policy) has started.

I’ll be at Goatmire in September and the Ash Summit on 3 October in Varberg — the Ash Summit CFP is open, so submit a talk.

Full write-up: July 2026: Show Your Working | Beam Bots

Where Next?

Popular in Announcing Top

grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 54006 488
New
OvermindDL1
I created a new library (rather I pulled out a couple files from my big project), it manages an operating system PID file for the BEAM. ...
New
wfgilman
I’ve cleaned up and open sourced three financial libraries I was using for my company. They are bindings for the APIs of these three comp...
New
mbuhot
Leverage Open Api 3.0 (Swagger) to document, test, validate and explore your Plug and Phoenix APIs. Generate and serve a JSON Open API ...
New
mindok
What is ContEx? A pure Elixir server-side data plotting/charting library outputting SVG. It has nice barcharts in particular and works g...
New
woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
markmark206
simple_feature_flags is a tiny package that lets you turn features on or off based on which environment (e.g. localhost, staging, product...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 130286 1222
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36654 110
New
nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 49084 226
New

We're in Beta

About us Mission Statement