MOSS, the Litter Picking Rover
MOSS, the litter picking rover, is a 3D-printed tracked robot with a five-servo arm, a parallel gripper and a removable bin.
I pick up litter by hand on my walks in Thailand. When it rains, rubbish from the streets can end up in the sea. After building an e-NABLE prosthetic hand, I wanted to put those making skills into a small robot that could help with the next piece of litter.
This is a project to build yourself, with friends or as a family: print the parts, assemble the rover and learn some electronics and programming along the way. The physical prototype drives and demonstrates picking objects up and dropping them into its bin. Autonomous litter picking is being developed as an open-source community effort.
Prepare. Watch. Assemble. Each step below lists the printed parts, components and fasteners to prepare. Quantities are for one rover. Choose one computer and one navigation camera; the alternatives are not all required.
MakerWorld — ready-to-print plates · GitHub — CAD, BOM and software · SHOW ROBOTICS build guide and assembly clips
Supplies
Base assembly: about $460 in parts. This includes the chassis, tracks, arm, gripper, motors, servos, control electronics, power, wrist camera, 2D LiDAR, wiring and filament. The computer and navigation camera are additional. Choose one of each.
Tools and materials
- A 3D printer, or access to a printing service
- PETG for chassis and mechanical parts; PLA for cover, bin and arm; TPU 95A for tracks
- Soldering iron for wiring and heat-set inserts
- Hex keys and screwdrivers to match the listed screw heads
- Wire cutters, wire stripper and crimping tool for the selected terminals
- Multimeter for continuity and polarity checks
- A controlled heat source for closing the wrist-camera cable clips at 70 °C
- Two-part epoxy, included in the component list below
Components and fasteners for one rover
Keep the screw packs supplied with the servos, gripper and HAT. Option-specific and supplied fasteners are labelled below.
- 1 × Adafruit QT Py ESP32-S3, 8 MB flash/no PSRAM, ref.5426
- 1 × Adafruit Terminal Block BFF, ref.6495
- 1 × Adafruit INA219 STEMMA QT, ref.904
- 1 × STEMMA QT cable, 300 mm, Adafruit 5384
- 1 × Cytron MDD10A Rev2 dual motor driver
- 1 × Waveshare Bus Servo Adapter A
- 1 × MAX98357A amplifier module
- 1 × Speaker, 3 W, 4 ohm
- 1 × Acoustic splash membrane and compatible adhesive — EPTFE or non woven fabric membrane.
- 2 × JGB37-520, 12 V, 90:1, 110 rpm, Hall encoder, 6 mm D-shaft
- 12 × 625 bearing
- 4 × 608 bearing
- 4 × 626 bearing
- 12 × LK05 — shaft collar, 5 mm bore, Ø10 × 5 mm
- 2 × LK06 — shaft collar, 6 mm bore, Ø11 × 5 mm
- 4 × LK08 — shaft collar, 8 mm bore, Ø16 × 8 mm
- 6 × Smooth steel axle, 5 ×70 mm finished length — Check the physical stack before cutting stock.
- 2 × Smooth steel axle, 6 ×77 mm finished length
- 2 × Smooth steel axle, 8 ×87 mm finished length
- 2 × Rigid motor-to-shaft coupling, 6 mm bores
- 2 × HEX12 metal wheel hub, 6 mm bore, 18 mm length
- 5 × ST3215 12 V serial bus servo — Keep the original servo screw packs.
- 1 × CF35-12 constant-force gripper servo
- 2 × 3010 fan, 12 V
- 4 × Magnet, 20 ×10 ×2 mm — Glue into the pockets with epoxy; check polarity before gluing.
- 1 × Two-part epoxy adhesive kit (resin + hardener) — For gluing the four bin magnets and joining the two-piece hull and cover when printing on a smaller printer.
- 11 × M3 brass heat-set insert, OD4 mm, length 6 mm — 10 in the hull and 1 in the LiDAR base.
- 1 × 12-cell battery pack, 3S4P, with BMS — 110 × 67 × 35 mm.
- 1 × 12.6 V CC/CV charger for the selected 3S pack
- 1 × Emergency stop LA16-11ZS/A, 16 mm
- 1 × KCD11 two-pin rocker switch and splash cover
- 1 × Inline blade-fuse holder, 14 AWG
- 1 × ATC blade fuse, 15 A
- 6 × Amass XT30 male/female connector pair
- 2 × DC panel socket, 5.5 ×2.1 mm — Female panel-mount sockets.
- 1 × DC male barrel plug — computer power — Jetson option: 5.5 × 2.5 mm, 9.5 mm barrel, centre positive. Pi option: match the input of the selected 5 V power supply. Choose one.
- 2 × DC male barrel plug, 5.5 × 2.1 mm — One for Waveshare Bus Servo Adapter A; one for the battery extension.
- 1 × Wire, ferrules and heat-shrink — One set for the power and signal wiring.
- 1 × Plugable USB hub, model USB2-2port
- 3 × USB-C to USB-A cable, 30 cm
- 1 × RealSense camera cable — Lazada product link: https://www.lazada.co.th/products/i16248699269-s127506585857.html · RealSense option only.
- 1 × Computer — Jetson Orin Nano Super OR Raspberry Pi 5 — Choose ONE computer. Pi: add its cooler, storage and appropriate 5 V supply. Use the matching printed carrier; Pi/HAT mounting screws and spacers are supplied with the HAT.
- 1 × Intel RealSense D455 OR Orbbec Gemini 2 — Use the matching printed insert(s); these are alternatives.
- 1 × SLAMTEC RPLIDAR C1
- 1 × Wrist USB camera for the R30 mount — PCB mounting-hole pattern: 21 × 13.5 mm.
- 12 × M2 × 6 screw, non-countersunk — Controller/INA219: 6; amplifier: 2; wrist-camera PCB: 4.
- 6 × M2 washer, 0.3 mm thick — Controller/BFF and INA219.
- 2 × M2 washer, 0.5 mm thick — Amplifier.
- 4 × M2.5 × 6 socket-head screw — LiDAR.
- 4 × M2.5 × 8 screw, non-countersunk — Servo adapter.
- 4 × M2.5 × 10 low-head screw — Power distribution. Head diameter 5 mm maximum.
- 4 × M2.5 washer, 0.5 mm thick — Servo adapter.
- 8 × M3 × 6 socket-head screw — Motor driver: 4; speaker: 2; computer carrier: 2.
- 18 × M3 × 8 socket-head screw — 14 common screws. Add 2 for the Jetson retaining tabs and 2 for the Gemini option. Total required: 14–18 depending on options.
- 8 × M3 × 10 socket-head screw — LiDAR base: 2; arm plate: 4; wrist-camera bracket: 2.
- 22 × M3 × 15 socket-head screw — Drive axle/outer bearing covers: 6; idler slides/tensioners: 16.
- 7 × M3 × 20 socket-head screw — Drive wheels: 6; LiDAR carriage lock: 1.
- 6 × M3 × 25 socket-head screw — Idler wheels.
- 18 × M3 × 35 socket-head screw — Six road wheels, 3 screws each.
- 10 × M3 × 10 countersunk 90° screw, head Ø6.4 mm maximum — Cover and bin assembly.
- 4 × M3 × 10 countersunk 90° screw, head Ø5.6 mm maximum — Cover and bin assembly; smaller head clearance than the other M3 countersunk screws.
- 54 × M3 hex nut — Road wheels: 18; drive wheels: 6; idlers: 6; bearing covers: 6; tensioners: 16; wrist-camera bracket: 2.
- 4 × M3 washer, 0.5 mm thick — Computer carrier and servo-adapter assembly.
- 2 × M4 × 10 socket-head screw — RealSense option only. Not needed with Gemini.
- 12 × M4 × 15 socket-head screw — 6 for the inner track frames. Add 6 only for the split hull (12 total); monobloc hull uses 6.
- 8 × M4 × 20 socket-head screw — Motor mounts and inner bearing retainers.
- 4 × M4 × 25 countersunk 90° screw — Arm base.
- 4 × M4 × 35 socket-head screw — Track tensioners.
- 4 × M4 × 60 socket-head screw — Outer track frames.
- 36 × M4 hex nut — 30 for a monobloc rover. Add 6 for the split hull (36 total); split-hull pockets require 7 mm across flats.
- 14 × M4 washer, Ø9 × 0.8 mm — 8 for tensioners and outer frames. Add 6 for the split hull (14 total).
- 20 × M2 × 6 original servo screw — Supplied with the servo hardware. Keep the original head type; do not buy twice.
- 37 × M3 × 6 original servo screw — Supplied with the servo hardware. Keep the original head type; do not substitute generic socket heads.
- 11 × M3 × 6 cross-head screw, ISO 7045 — Original gripper hardware; retain the supplied screw pack.
- 6 × #1-42 × 3/16 inch Type AB screw — Original gripper hardware; retain the supplied screw pack.
Downloads
Choose Your Configuration and Print the Parts
Download one prepared project and open it in Bambu Studio. All copies, orientations, materials and automatic tree supports are already placed.
- H2S: one-piece hull and cover, 21 plates. Print 1–17, then 18 Jetson or 19 Pi, and 20 Gemini or 21 RealSense.
- P1 / P2: split hull and cover, 24 plates. For P1S, P1P and P2S. Print 1–20, then 21 Jetson or 22 Pi, and 23 Gemini or 24 RealSense.
Use standard 0.20 mm settings with a 0.4 mm nozzle, 15% gyroid and automatic tree supports. Tracks use TPU with 15% grid. Select the matching printer and your filament before slicing. Keep the supplied orientations.
Both projects include the two Jetson retaining tabs. Shared spacers and wheels are already copied to the required quantity: do not multiply them again. For individual STLs, print the quantity shown in the catalogue. Left/right parts with different geometry remain separate.
Complete CAD, STL and 3MF archive · Plate-by-plate contents · Individual STL catalogue
Choose the Hull and Fit the Inserts
Printed parts
- 1 × One-piece hull · PETG (One-piece hull only)
- 1 × Lidar Base R84 · PETG
- 1 × Rear hull — motors and computer · PETG (Split hull only)
- 1 × Front hull — battery and camera · PETG (Split hull only)
Components
- As needed × Epoxy from the two-part kit, for the hull joint (Split hull only)
Fasteners
- 11 × M3 heat-set insert, OD4 mm, length 6 mm
- 6 × Split hull only: M4 × 15 socket-head screw (Split hull only)
- 6 × Split hull only: M4 hex nut, 7 mm across flats (Split hull only)
- 6 × Split hull only: M4 washer, Ø9 × 0.8 mm (Split hull only)
Assembly
- Choose the one-piece hull or both split halves. For the split hull, dry-fit both halves first, then apply a thin layer of two-part epoxy to the mating faces. Engage the locating pins, seat six nuts from the battery side, and fit six M4 × 15 screws with washers from the motor/computer side. Tighten progressively and let the epoxy cure before installing electronics or the battery.
- Use a soldering iron to fit the inserts: place each insert over its hole, heat it with the iron tip, then gently press it straight into the plastic. Fit four inserts for the cover, four for the arm plate and two for the LiDAR base in the hull.
- Use the same soldering-iron method to fit the remaining insert in the LiDAR base for the carriage lock. Keep the threads clear and let all inserts cool before fitting screws.
Build the Six Road Wheels
Printed parts
- 6 × Road wheel inner half · PETG
- 6 × Road wheel outer half · PETG
- 6 × SP09 · Road wheel centre spacer · PETG
Components
- 12 × 625 bearing
Fasteners
- 18 × M3 × 35 socket-head screw
- 18 × M3 hex nut
Assembly
- For each wheel, prepare two printed halves, one SP09 centre spacer, two 625 bearings, three M3 × 35 screws and three M3 nuts.
- Insert each bearing through the open mating face of its wheel half. Do not push it through the smaller outside opening.
- Seat the three nuts in the inner half, position SP09 between the bearings, close the wheel halves, then insert the three screws from the outer face. Repeat six times.
Build the Two Drive Wheels
Printed parts
- 1 × Left HEX12 drive wheel inner half R13 · PETG
- 1 × Left HEX12 drive wheel outer half R13 · PETG
- 1 × Right HEX12 drive wheel inner half R13 · PETG
- 1 × Right HEX12 drive wheel outer half R13 · PETG
Components
- 2 × HEX12 metal hub, 6 mm bore, 18 mm length
Fasteners
- 6 × M3 × 20 socket-head screw
- 6 × M3 hex nut
Assembly
- Match the locating feature on each pair of halves.
- Close each wheel with three M3 × 20 screws and three M3 nuts. Keep the HEX12 seat clear.
Build the Two Idler Wheels
Printed parts
- 1 × Left 22T idler wheel inner half R13 · PETG
- 1 × Left 22T idler wheel outer half R13 · PETG
- 1 × Right 22T idler wheel inner half R13 · PETG
- 1 × Right 22T idler wheel outer half R13 · PETG
- 2 × SP10 · Idler centre spacer · PETG
Components
- 4 × 608 bearing
Fasteners
- 6 × M3 × 25 socket-head screw
- 6 × M3 hex nut
Assembly
- For each idler, seat two 608 bearings with SP10 (centre spacer) between them.
- Close the two halves with three M3 × 25 screws and three M3 nuts. Repeat for the other side.
Fit the Motors and Inner Bearing Retainers
Printed parts
- 1 × Motor Mount Left R90 · PETG
- 1 × Motor Mount Right R90 · PETG
- 2 × Motor bearing inner retainer · PETG
Components
- 2 × JGB37-520 motor, 12 V, 90:1, 110 rpm, Hall encoder
- 2 × 626 bearing, inner
- 2 × Rigid coupling, 6 mm to6 mm
Fasteners
- 8 × M4 × 20 socket-head screw
- 8 × M4 hex nut
- 12 × M3 × 8 socket-head screw
Assembly
- Use three M3 × 8 screws per motor, without washers. The other six M3 × 8 screws secure the two bearing retainers.
- Put four M4 nuts into each motor-support nut pocket and secure each support to the hull with four M4 × 20 screws.
- Fit the inner bearing retainers with three M3 × 8 screws per side.
Fit the Inner Track Frames
Printed parts
- 1 × Left inner track frame R12 C2 · PETG
- 1 × Right inner track frame R12 C2 · PETG
Fasteners
- 6 × M4 × 15 socket-head screw
- 6 × M4 hex nut
Assembly
- Fit each inner frame directly against the hull.
- Use three M4 × 15 screws and three M4 nuts per side.
Fit Road-wheel Axles and Spacer Pairs
Printed parts
- 6 × SP01 · Road wheel inner spacer · PETG
- 6 × SP02 · Road wheel outer spacer · PETG
Components
- 6 × Smooth steel axle, 5 x70 mm finished length
- 12 × LK05 — shaft collar: 5 mm bore, 10 mm outside diameter, 5 mm long
Assembly
- Use SP01 (1 dot, 7.5 mm) on the inside and SP02 (2 dots, 5.5 mm) on the outside of every road wheel. SP09 (18 mm, no dots) sits between its bearings.
- Retain each axle with two LK05 collars (5 mm bore). Repeat for all six wheels and check free rotation.
Fit the Drive Axles and Outer Bearing Covers
Printed parts
- 2 × SP03 · Drive motor side spacer · PETG
- 2 × SP04 · Drive outer spacer · PETG
- 2 × Motor bearing outer cover · PETG
- 2 × SP11 · Drive bearing to collar spacer · PETG
Components
- 2 × Smooth steel axle, 6 x77 mm finished length
- 2 × 626 bearing, outer
- 2 × LK06 — shaft collar: 6 mm bore, 11 mm outside diameter, 5 mm long
Fasteners
- 6 × M3 × 15 socket-head screw
- 6 × M3 hex nut
Assembly
- Use SP03 (3 dots, 7.6 mm) on the motor side and SP04 (4 dots, 12.6 mm) on the outer side of the drive wheel.
- Put SP11 (3.5 mm, no dots) between the outer 626 bearing and LK06 (6 mm bore). Secure each bearing cover with three M3 × 15 screws and nuts.
Fit the Idler Slides and Tensioners
Printed parts
- 1 × Left inner tensioner cover R12 C2 · PETG
- 1 × Right inner tensioner cover R12 C2 · PETG
- 2 × SP05 · Idler inner spacer · PETG
- 2 × SP06 · Idler outer spacer · PETG
- 1 × Left Cover tensioner outer · PETG
- 1 × Right Cover tensioner outer · PETG
- 2 × Tensioner slider A (left outer / right inner) · PETG
- 2 × Tensioner slider B (right outer / left inner) · PETG
- 2 × SP07 · Idler inner retainer spacer · PETG
- 2 × SP08 · Idler outer retainer spacer · PETG
Components
- 2 × Smooth steel axle, 8 x87 mm finished length
- 4 × LK08 — shaft collar: 8 mm bore, 16 mm outside diameter, 8 mm long
Fasteners
- 16 × M3 × 15 socket-head screw
- 16 × M3 hex nut
- 4 × M4 × 35 socket-head screw
- 8 × M4 hex nut
- 4 × M4 washer
Assembly
- Inside to outside: LK08, SP07, inner slider, SP05, idler wheel with SP10 between its bearings, SP06, outer slider, SP08, LK08. Use two LK08 collars (8 mm bore) per axle.
- Fit each tensioner cover with four M3 × 15 screws and nuts. Use an M4 × 35 adjuster with its washer and two nuts at each of the four tensioners.
Close the Track Frames
Printed parts
- 1 × Left Outer Track Frame R32 · PETG
- 1 × Right Outer Track Frame R32 · PETG
- 4 × SP12 · Track frame cross-member spacer · PETG
Fasteners
- 4 × M4 × 60 socket-head screw
- 4 × M4 hex nut
- 4 × M4 washer
Assembly
- Put the two SP12 cross-member spacers (41 mm, no dots) in each side assembly.
- Fit the outer frame using two M4 × 60 screws, washers and nuts per side.
Fit the Tracks
Printed parts
- 2 × Track · 70 teeth · TPU
Assembly
- Use the 70-tooth track print masters supplied in this package.
- Seat the central guides in the wheel grooves. Adjust both ends evenly and turn each track by hand.
Fit the Driver and Controller
Components
- 1 × Cytron MDD10A Rev2 dual motor driver
- 1 × Adafruit QT Py ESP32-S3, 5426
- 1 × Adafruit Terminal Block BFF, 6495
- 1 × Adafruit INA219 STEMMA QT, 904
Fasteners
- 4 × M3 × 6 socket-head screw
- 6 × M2 × 6 screw, non-countersunk
- 6 × M2 washer, 0.3 mm thick
Assembly
- Secure the MDD10A with four M3 × 6 screws.
- Use four M2 × 6 screws and 0.3 mm washers for the BFF, and two of each for the INA219.
Fit the Speaker and Amplifier
Components
- 1 × Speaker, 3 W, 4 ohm, 2-pin connector with 2 mm pitch
- 1 × MAX98357A amplifier module
- 1 × Splash-resistant acoustic membrane, fitted to the inner grille lip
Fasteners
- 2 × M3 × 6 socket-head screw
- 2 × M2 × 6 screw, non-countersunk
- 2 × M2 washer, 0.5 mm thick
Assembly
- Fix the speaker with two M3 × 6 screws above its grille.
- Seat the amplifier on its two mounting posts and two support pillars. Use two M2 × 6 screws with 0.5 mm washers.
Fit the Computer Carrier and Servo Adapter
Printed parts
- 1 × Pi Adapter R87 · PETG (Pi only)
- 1 × Jetson Adapter R87 · PETG (Jetson only)
- 1 × JT01 · Jetson retaining tab 1 · PETG (Jetson only)
- 1 × JT02 · Jetson retaining tab 2 · PETG (Jetson only)
Components
- 1 × Waveshare Bus Servo Adapter A
- 1 kit × Pi only: HAT mounting screws and spacers, supplied with the HAT (Pi only)
Fasteners
- 2 × M3 × 6 socket-head screw
- 2 × M3 × 8 socket-head screw
- 4 × M3 washer, 0.5 mm thick
- 4 × M2.5 × 8 screw, non-countersunk
- 4 × M2.5 washer, 0.5 mm thick
- 2 × Jetson only: M3 × 8 socket-head screw, no washer (Jetson only)
Assembly
- Choose one carrier: Jetson or Pi.
- Use the two M3 × 6 screws at the front and the two M3 × 8 screws at the rear, with one 0.5 mm washer each.
- For Jetson, secure the two retaining tabs with two M3 × 8 screws, without washers.
- For Pi/HAT, use the screws and spacers supplied with the HAT; prepare this assembly before fitting the carrier in the hull.
Fit the Camera Option
Printed parts
- 1 × Gemini Window Adapter R89 · PETG (Gemini only)
- 1 × RealSense Insert R72 · PETG (RealSense only)
- 1 × Gemini Flush Insert R72 · PETG (Gemini only)
Components
- 1 × RealSense D455 OR Orbbec Gemini 2
Fasteners
- 2 × RealSense only: M4 × 10 socket-head screw
- 2 × Gemini only: M3 × 8 socket-head screw
Assembly
- For RealSense, slide the support insert down from the top, then use its two M4 × 10 screws.
- For Gemini, use the flush insert and the window bezel instead. Secure the camera with two M3 × 8 screws; keep the USB opening clear.
Fit the LiDAR Carriage
Printed parts
- 1 × Lidar dovetail carriage R21 · PETG
Components
- 1 × SLAMTEC RPLIDAR C1
Fasteners
- 2 × M3 × 10 socket-head screw
- 4 × M2.5 × 6 socket-head screw
- 1 × M3 × 20 socket-head screw
Assembly
- With the carriage removed, secure the LiDAR base to the hull with two M3 × 10 screws.
- Secure the C1 to the carriage with four M2.5 × 6 screws, slide it onto the base and lock it with the M3 × 20 screw, without a washer, into the M3 insert.
Fit Power Distribution and Cooling
Printed parts
- 1 × XT30 distribution base · PETG
- 1 × XT30 distribution lid · PETG
- 1 × XT30 insulating separator · PETG
Components
- 2 × 3010 fan, 12 V
- 1 × Emergency stop LA16-11ZS/A, 16 mm
- 1 × KCD11 two-pin rocker switch and splash cover
- 1 × 12-cell battery pack, 3S4P, with BMS, 110 × 67 × 35 mm
- 1 × Power harness wire, fuse and USB cables
- 1 × DC male barrel plug, 5.5 × 2.5 mm, 9.5 mm barrel, centre positive — Jetson power (Jetson only)
- 1 × DC male barrel plug matching the input of the Pi 5 V power supply (Pi only)
- 1 × DC male barrel plug, 5.5 × 2.1 mm — Waveshare Bus Servo Adapter A power
- 1 × DC male barrel plug, 5.5 × 2.1 mm — battery extension to the panel socket
- 5 × XT30 enclosure connectors: 1 input + 4 outputs, from the BOM connector pairs
Fasteners
- 4 × M2.5 × 10 low-head screw, head diameter 5 mm maximum
Assembly
- Clip the two fans into their mounts.
- Fit the emergency stop and rocker switch in their hull openings.
- Assemble the XT30 base, insulating separator and lid with four low-head M2.5 × 10 screws.
Fit the Arm Plate and Build the Arm
Printed parts
- 1 × Arm Mounting Platform R22 · PLA
- 1 × SO101 Base · PLA
- 1 × SO101 Shoulder rotation · PLA
- 1 × SO101 Base motor holder · PLA
- 1 × SO101 Shoulder bracket cable clip · PLA
- 1 × SO101 Upper arm cable clip · PLA
- 1 × SO101 Forearm cable clip · PLA
- 1 × SO101 Wrist cable clip · PLA
- 1 × SO101 Wrist bracket · PLA
Components
- 5 × ST3215 12 V serial bus servo
Fasteners
- 4 × M3 × 10 socket-head screw
- 4 × M4 × 25 countersunk 90-degree screw
- 4 × M4 hex nut
- 20 × Kit screw: M2 × 6, original servo head
- 37 × Kit screw: M3 × 6, original servo head
Assembly
- Fit the arm plate with four M3 × 10 socket-head screws. Do not add washers in the counterbores.
- Use the original servo screw packs for the SO101 joints. Keep the camera and servo cables in the printed guides.
- For the wrist-camera cable, heat the printed clips to 70 °C, then close them around the cable.
For the joint-by-joint servo installation, follow the original SO-101 assembly instructions. Use the MOSS arm plate and the printed arm parts listed here. Keep the supplied servo screws with their original heads.
Build the Gripper and Wrist Camera
Printed parts
- 1 × NC90 Right side shield · PLA
- 1 × NC90 Pinion · PLA
- 1 × NC90 Cable guide · PLA
- 1 × NC90 Right jaw extended rack · PLA
- 1 × Gripper Camera Mount R30 · PLA
- 1 × NC90 Left side shield · PLA
- 1 × NC90 Base extended rails · PLA
- 1 × NC90 Left jaw extended rack · PLA
Components
- 1 × CF35-12 gripper servo
- 1 × Wrist USB camera for the R30 mount, 21 × 13.5 mm PCB hole pattern
Fasteners
- 11 × Kit screw: M3 × 6 cross-head ISO7045
- 6 × Kit screw: #1-42 x3/16 inch typeAB
- 4 × M2 × 6 screw, non-countersunk, for wrist camera PCB
- 2 × M3 × 10 socket-head screw, for wrist camera bracket
- 2 × M3 hex nut, for wrist camera bracket
Assembly
- Fix the NC90 base to the wrist-roll horn with four M3 × 6 screws from the gripper kit. Check that the screws engage securely and the horn turns freely.
- Fit the gripper servo, its horn and pinion. Slide the widened jaws into the rails with both racks aligned on the pinion, then fit the side shields and cable guide with the remaining kit hardware.
- Fit the current camera mount. Retain the original gripper screw types.
- Fix the R30 camera bracket to the gripper with two M3 × 10 screws and two M3 nuts, without washers. Fix the matching camera PCB with four M2 × 6 screws.
Close the Hull and Fit the Bin
Printed parts
- 1 × 02 Motor access hatch 10 screws · PETG
- 1 × One-piece upper cover · PLA (One-piece cover only)
- 1 × 14 Bin 20x10x2 magnet pockets · PLA
- 1 × Split cover · rear section · PLA (Split cover only)
- 1 × Split cover · LiDAR extension · PLA (Split cover only)
Components
- 4 × Magnet, 20 x10 x2 mm
- 1 kit × Small two-part epoxy adhesive kit, two tubes (resin + hardener), for the magnets and split cover
Fasteners
- 10 × M3 × 10 countersunk 90-degree screw, head diameter 6.4 mm maximum
- 4 × M3 × 10 countersunk 90-degree screw, head diameter 5.6 mm maximum
Assembly
- For the split cover: test-fit the two pieces off the rover. Lower the LiDAR extension from above into both dovetail sockets. Apply a thin layer of two-part epoxy on the mating faces, seat the joint, align the outer surfaces and hold until cured. The glued cover then mounts with the same four screws as the one-piece cover.
- Close the motor hatch with ten M3 × 10 countersunk screws.
- Fit the upper cover with four M3 × 10 countersunk screws.
- Check the polarity of all four magnets, then glue them into their pockets with epoxy. Let the epoxy cure before fitting the bin.
Connect the Software and Make the First Movement
Keep the battery disconnected while working on the power wiring. Before applying power, check the polarity, fuse and emergency-stop wiring with a multimeter. Secure loose cables clear of the tracks and joints.
- Put the rover on blocks so both tracks can turn freely for the first motor test.
- Use the QT Py ESP32-S3 firmware build for the Cytron MDD10A. The firmware folder retains its earlier MDD3A name; choose the correct driver build.
- Install the current MOSS/dimOS environment on the chosen robot computer by following the software instructions below.
- Run
tools/moss-fly.sh checkand resolve any reported issues before launching teleoperation. - Start
tools/moss-teleop.sh. On the documented dimOS gamepad setup, hold R1 to drive, use the left stick for forward/backward and the right stick to turn. Release R1 to stop. Verify each direction at low speed. - Check the gripper and arm through a small, clear movement before attempting a pickup. Place a light object within reach, grip it, lift it over the bin and release it.
Software installation and first-run instructions · Firmware and MDD10A build
The demonstrated build is a driving, pick-and-drop prototype. Autonomous litter picking is ongoing community development.
Share Your Build and Join the Project
MOSS, the litter picking rover, is built in public. Share your build, improve a part, help with the software or try a new way to pick up litter.
Join the Discord · Follow the build on X · Contribute on GitHub
Prefer a kit to printing and sourcing everything yourself? Kits are coming through TNKR. Join the kit waitlist.
Credits
- The arm is derived from Standard Open SO-100 & SO-101 Arms, Rob Knight et al. (2024), The Robot Studio in collaboration with Hugging Face. Original project · Full author list and citation.
- The gripper is adapted from the NormaCore Parallel Jaw Gripper, with a 90 mm opening for MOSS.
- The robot software uses dimOS by Dimensional.
MOSS hardware is released under CERN-OHL-S-2.0, code under Apache-2.0, and documentation/media under CC BY 4.0. Upstream parts retain their licence notices. See NOTICE.