A collection of small, opinionated example mix packages for Beam Bots projects. Each subdirectory is an independent mix project, distributed as a git dependency rather than via Hex, on the basis that example/demo code doesn't need versioned releases.
| Package | Description |
|---|---|
arm_commands |
Reusable demo commands for serial-chain robot arms (home, move-to-pose, demo circle) |
Pick the sub-directory you want, add it to your mix.exs as a git dependency
with a sparse: checkout so only that sub-project is pulled in:
defp deps do
[
{:arm_commands,
git: "https://github.com/beam-bots/bb_examples.git",
sparse: "arm_commands"}
]
endThen mix deps.get and use the modules in your robot definition:
commands do
command :home do
handler BB.Examples.ArmCommands.Home
allowed_states [:idle]
end
endSee each package's README for the modules it exposes and what each one does.
Example code is, by nature, opinionated and likely to drift as the framework evolves. Distributing via git means:
- No hex versioning treadmill — pin a commit when you want stability
- Easy to fork and customise — these are starting points, not load-bearing libs
- One repo, many packages — adding
motion_recordings/orsafety_patterns/later is just another subdirectory
bb_examples/
├── arm_commands/ # Independent mix project
│ ├── mix.exs
│ ├── lib/
│ ├── test/
│ └── README.md
├── (more packages …)
└── README.md # You're here
Each sub-package follows the standard mix project layout. The top-level repo
holds only this README, the licence files, and .gitignore.
Submit example packages as PRs against main. Aim for:
- A clearly-stated purpose (one paragraph in the package README)
- Useful in more than one project — if it's specific to one robot, it probably belongs in that robot's own repo
- No mandatory hardware deps — packages should work in simulation mode at minimum
Apache-2.0
