-
Miana M Smith authoredMiana M Smith authored
MILAbot-v0
We present the Modular Inchworm Lattice Assembler: a Low-Cost Robotic Platform for Discrete Assembly (aka MILAbot). This system is the newest in the generation of voxel-assembly relative robots, such as BILL-E, exponential BILL-Es, and recursive BILL-E. The goal of this work is to better enable large-scale, self-reconfigurable, distributed robotic construction of discrete structural feed- stocks by increasing robot flexibility while simplifying system architecture and lowering cost.
This repo contains all design files and code for the MILAbot, which is potentially usable for tasks beyond voxel assembly (the base 5-dof robot has sub 3 mm repeatability). The hardware is 3D printed, and the PCBs are ordered from a board house (I use JLCPCB specifically), and assembled by hand. The overall cost for the entire 5-DoF robot, including grippers, is under 550USD.
Project organization
Hardware files are in the Hardware directory, PCB files are in Electronics, and firmware and software is in Code. The hardware files are provided as .step and .stl files, and the PCB designs are provided as .brd and .sch files. These are both originally designed in Fusion 360. The firmware is written using either the Arduino IDE or PlatformIO, so there are some little differences in the code. The motor driver code primarily leverages SimpleFOC. The path planning for the robot is done with pyDrake.
Hardware
Files are provided as both .stl print files and .step assemblies. Print files are the print folder in the hardware directory. The .step assemblies are broken into 3 files: active.step, passive.step, and full_motor_module_assembly.step. The active.step file contains everything for the active module, while the passive.step file includes the passive spacer design. The full_motor_module_assembly.step file is redundant with active.step, but includes e.g. the screws installed, so it may be more useful as an assembly reference.
Parts are primarily printed using a polycarbonate filament (I used polymaker polycarbonate specifically, and also tested using a PC+CF blend, and a PC+ABS blend, but the plain PC was fine). For parts that are unlikely to be exposed to high temperatures, I printed with a matte PLA. Up to you, shouldn't make a huge difference. Everything is printed with 100% infill.
Electronics
The gerber files I used for ordering are in this folder as well, for convenience. Otherwise, everything is provided as .sch and .brd files. The "driver_board" files are for the driver board, which is the main microcontroller board for the modules, and includes the motor driver stuff. The "motor_mounting_plate" files are for the actively heated PCB (this board includes a jumper which must be soldered for use). The "passive_side" files are for the connector PCB that isn't actively heated. All three of these PCBs, within a module, are connected via 2x4 IDC connector + ribbon cable (0.05" pitch). The "spacer_controller" files are for the ATtiny412 board in the passive spacers, which can toggle a heating switch, and exposes I2C and serial peripherals, and not much else! A good BOM for everything TBD.
Software
The dependencies for the python path planning stuff are pydrake, numpy, and optionally matplotlib. The visualization loads urdf files, some of which will load mesh assets, which are included, except for a voxel-texture floor (which is purely a visual element), due to the large size of the asset.
For the firmware, the Adafruit Feather M4 Expresses are flashed with main.cpp via Platformio, and use SimpleFoc (as well as its additional driver library). The ATtinys are programmed via UPDI via Arduino using the MegaTinyCore. The Esp32 Xiaos are programmed using the ESP32 stack (instructions available via SEEED for adding the boards).