jimsynz
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
Tutorials
See the tutorials for a guided introduction:
- Your First Robot - defining robots with the DSL
- Starting and Stopping - supervision trees
- Sensors and PubSub - publishing and subscribing to messages
- Forward Kinematics - computing link positions
- Commands and State Machine - controlling the robot
- Exporting to URDF - interoperability with ROS tools
- Parameters - runtime-adjustable configuration
- Parameter Bridges - bidirectional remote access
The DSL Reference documents all available options.
Most Liked
jimsynz
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.
jimsynz
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








