Cody Home - makerforgetech/modular-biped GitHub Wiki
Modular Biped Robot Project Wiki
Welcome to the Modular Biped Robot Project Wiki!
Note: This is a preview release of the Modular Biped Robot Project. For the latest stable release, please refer to the Buddy version.
This wiki serves as a comprehensive resource for the development and utilization of the Modular Biped Robot platform. Here, you will find detailed documentation, installation guides, usage instructions, and various other resources to help you explore this project.
NOTE: This wiki is currently under development. Errors and omissions expected
Overview
The Modular Biped Robot Project is designed to provide a flexible and modular framework for robotics development using Python and C++ on the Raspberry Pi and Arduino platforms. It aims to enable developers, robotics enthusiasts, and curious individuals to experiment, create, and customize their own biped robots. With a range of features and functionalities and the option to add your own easily, the Modular Biped Robot Project offers an exciting opportunity to explore the world of robotics.
Versioning
There are currently several versions of this project,
-
The current release is Buddy, which is a larger and more stable build.
-
Future development is ongoing on Cody (this wiki), which utilises more advanced components and is designed to be more robust and capable than Buddy.
-
Archie is the original version, smaller and less stable. This version is no longer supported, but the detail of this version is still available for reference.
I want to build the preview release!
That's great, and I applaud your enthusiasm. However, please be aware that this is a preview release and is still in active development*. There will be bugs, issues, and incomplete features. If you are happy to proceed, please join the community and contribute to the project.
Details of the build will be available in this section of the wiki as they are made available.
Contributions and Discussions
We encourage active participation, contributions, and discussions from the Modular Biped Robot community. If you have any questions, ideas, suggestions, or would like to share your experiences, you can join our GitHub Discussions section dedicated to the project. It's a great place to engage with other community members, exchange knowledge, and collaborate on the development of biped robotics.
Read more here: Community
You can also join our active Discord Community to post your questions, share your progress, and connect with other makers.
We look forward to your participation and the exciting advancements we can achieve together in the field of modular biped robots.
Compute Module 5
The Raspberry Pi Compute Module 5 offers a smaller form-factor than that standard Raspberry Pi at the expense of the typical connectors and ports.
For the modular biped project, we don’t typically utilise the USB, ethernet, HDMI or even USB-C power connectors, and the CSI/DSI connectors for the camera are not ideally placed for the layout of the head. We also have a custom PCB that complements the Raspberry Pi, connecting to the GPIO pins and allowing support for i2s audio, neopixel support, serial connectivity and more.
For the next release of the project, the proposal is to create a 'carrier board' for the CM5, that offers a small package containing the custom connectivity and modules, while also allowing for additional functionality that is not currently possible with the current release.
Proposal
Create a carrier board to connect to the CM5, allow for passive and active cooling of the CM5. Add the following modules to the carrier board as discrete components, removing the need to purchase separate modules and assemble manually, and allowing for a PCBA (assembled PCB) to be produced by a PCB manufacturer.
- I2S Audio Amp
- I2S Microphone (possible two, for directional and dual channel input)
- Neopixel via SPI. GPIO support is limited on the Raspberry Pi 5 and I2C support requires an additional module. SPI may be a solution to this.
- TFT screen support via SPI. Unclear whether this can be supported alongside neopixels as they will be sharing the interface.
- GPIO breakout, for modules such as the RCWL-0516 microwave motion sensor
- I2C breakout, for I2C communication such as connection to the servo controller module
- UART breakout, for UART communication such as serial connection to the current Arduino controller board.
- Dual camera support, via CSI cable, layout so that they can be oriented easily within the head.
- Optional single USB output to support addition of modules such as the SDR dongle.
Additionally the board should allow 5v input from USB-C and optionally between 5 & 25v DC (this may be managed externally via the XL4015 module, or similar).
The proposal is to shrink the form factor as much as possible, including the use of smaller headers and JST connectors to minimise the footprint. Consideration should be given around wire gauge and max current required for each component.
First steps & Challenges
Many of these modules have already been tested with the existing release using the Raspberry Pi 5, there are however a few challenges to move forward.
The migration away from modules towards discrete components introduces complexity and challenges around EM interference and testing. There will need to be research in this area as the project progresses.
SPI neopixels and TFT support has not been attempted on previous versions.
The I2S amp has not been particularly successful, with the current iteration of the project resulting in a very low volume and distorted audio quality. A higher quality speaker may solve this but investigation will be required.
Discussions
Details of each module’s integration will be included in the GitHub discussion for the project.
Various discussions are ongoing in the community relating to new functionality. See the full list here:
Installation Guide
Note: This is a work in progress and here fore future reference only.
- Flash the CM5 with the Raspberry Pi OS (see this guide and post for details).
- Boot into the OS. Enable Wifi, SSH, VNC (optional), SPI, I2C and Serial via
raspi-config
-> Interface Options (see guide). - Run
apt update
andapt upgrade
to update the OS. - Clone the repository from GitHub:
git clone https://github.com/makerforgetech/modular-biped.git
- Checkout the cm5 branch:
git checkout feature/cm5
- Set permissions on the install script:
chmod +x install.sh
- Configure the modules you'd like to install by enabling each in the config directory.
- Run the installer script:
./install.sh
- Check for any error messages and additional steps required.
Raspberry Pi AI Camera
- Add
dtoverlay=imx500-pi5,cam0
to/boot/firmware/config.txt
and restart.
INMP441 Microphones and MAX98357A Amp
Note: the microphones and amp require additional installation steps, these are located in the installers
directory:
- Run the microphone installer:
./installers/install-mics.sh
- Run the speech recognition installer:
./installers/install-speech-recognition.sh
- Run the amp installer:
./installers/install-amp.sh
Some of these will create .flag files to prevent multiple installations. If you need to reinstall, you can delete these files.
Feature Documentation and Unit Tests
With the help of GitHub Copilot (therefore E&OE), I have been adding documentation to the repository to help with the development of the project. Take a look at the docs folder for more information.
https://github.com/makerforgetech/modular-biped/tree/develop/docs
I am also slowly adding unit tests to the project to ensure that the code is robust and reliable. These are located in the tests folder.
https://github.com/makerforgetech/modular-biped/tree/develop/tests