Week One: Discord, Robot Arms, and Livebook Widgets
Beam Bots gets a Discord channel, a 5-DoF robot arm donation, interactive Livebook widgets, a safety system, and two servo drivers. Not bad for a week.
It's been six days since I announced Beam Bots, and things have moved faster than expected. Here's what happened.
We Have a Discord Channel
The Elixir Discord community has given Beam Bots its own #beam-bots channel. If you want to chat about resilient robotics on the BEAM, ask questions, or just lurk, come say hello.
Frank Hunleth Donated a Robot Arm
Frank Hunleth, co-creator of Nerves, has donated a Trossen Robotics WidowX-200 5-DoF robot arm to the project.

This is a proper piece of kit - Dynamixel servos, aluminium construction, and enough reach to knock things off my desk.
This means I'll be able to test Beam Bots against real hardware that isn't just a servo taped to a breadboard. Expect tutorials and examples using this arm as the development progresses.
Thanks Frank.
BB Kino: Livebook Widgets for Robot Control
The biggest code drop this week is bb_kino - a suite of interactive Livebook widgets for controlling and monitoring BB robots.

The package includes:
- Safety Widget - arm/disarm controls with real-time state indicators
- Joint Control Widget - sliders for setting joint positions, respecting limits
- Event Stream Widget - live message monitoring with path filtering
- Command Widget - dynamic forms for executing robot commands
- 3D Visualisation Widget - interactive Three.js rendering with real-time joint updates
- Manage Robot Smart Cell - a unified dashboard combining everything
This isn't the "LiveView-based introspection" from the roadmap - that's still planned as an embeddable dashboard for Phoenix apps. But for prototyping and development, being able to control your robot interactively in Livebook while watching state update in real-time is pretty useful.
Safety System
BB v0.4.0 adds BB.Safety, a centralised arm/disarm controller that ensures your robot can always be stopped safely. Key features:
BB.Safetybehaviour - actuators controlling hardware implement adisarm/1callback- Global safety state - one place to arm or disarm all safety-registered components
- Error state handling - if disarm callbacks fail, the robot enters an
:errorstate and won't re-arm until you explicitly acknowledge withforce_disarm/1 - Documentation covering BEAM's soft real-time limitations and why you still need a hardware kill switch
The safety system is critical infrastructure. When things go wrong, you need the disarm to work even if the process that controlled the actuator has crashed. The disarm/1 callback is designed to work without GenServer state for exactly this reason.
Servo Driver Packages
Two new packages for driving RC servos:
bb_servo_pigpio - drives servos via GPIO PWM on Raspberry Pi using pigpio. Good for simple setups with a few servos directly connected to GPIO pins.
bb_servo_pca9685 - drives servos via the PCA9685 16-channel PWM controller over I2C. Better for projects needing more channels or cleaner wiring.
Both packages implement BB.Safety for safe disarm, use the standard actuator command interface, and work with BB.Sensor.OpenLoopPositionEstimator for position feedback on servos without encoders.
Other Changes
- Standard actuator command interface -
BB.Actuator.set_position/4and friends provide a consistent API across all actuator types - OpenLoopPositionEstimator - estimates joint position over time based on commanded velocity, for servos that don't report their actual position
- BeginMotion/EndMotion messages - actuators now publish motion lifecycle events for coordination and logging
What's Next
The WidowX-200 uses Dynamixel servos with their own protocol, so I'll be writing a Dynamixel driver package. After that, I want to get inverse kinematics working so I can command the arm to move to a point in space rather than specifying individual joint angles.
The rover project is on hold until the arm is working. One robot at a time.
Links
- bb on Hex (v0.4.0)
- bb_kino on Hex (v0.2.0)
- bb_servo_pigpio on Hex (v0.3.0)
- bb_servo_pca9685 on Hex (v0.3.0)
- Discord
- GitHub: beam-bots