MOSS, the Litter Picking Rover

by metr0x in Circuits > Robots

802 Views, 4 Favorites, 0 Comments

MOSS, the Litter Picking Rover

MOSS_MakerWorld_Clean_Demo_9s.gif
MOSS_1448.jpg
MOSS_1447.jpg

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

  1. A 3D printer, or access to a printing service
  2. PETG for chassis and mechanical parts; PLA for cover, bin and arm; TPU 95A for tracks
  3. Soldering iron for wiring and heat-set inserts
  4. Hex keys and screwdrivers to match the listed screw heads
  5. Wire cutters, wire stripper and crimping tool for the selected terminals
  6. Multimeter for continuity and polarity checks
  7. A controlled heat source for closing the wrist-camera cable clips at 70 °C
  8. 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. 1 × Adafruit QT Py ESP32-S3, 8 MB flash/no PSRAM, ref.5426
  2. 1 × Adafruit Terminal Block BFF, ref.6495
  3. 1 × Adafruit INA219 STEMMA QT, ref.904
  4. 1 × STEMMA QT cable, 300 mm, Adafruit 5384
  5. 1 × Cytron MDD10A Rev2 dual motor driver
  6. 1 × Waveshare Bus Servo Adapter A
  7. 1 × MAX98357A amplifier module
  8. 1 × Speaker, 3 W, 4 ohm
  9. 1 × Acoustic splash membrane and compatible adhesive — EPTFE or non woven fabric membrane.
  10. 2 × JGB37-520, 12 V, 90:1, 110 rpm, Hall encoder, 6 mm D-shaft
  11. 12 × 625 bearing
  12. 4 × 608 bearing
  13. 4 × 626 bearing
  14. 12 × LK05 — shaft collar, 5 mm bore, Ø10 × 5 mm
  15. 2 × LK06 — shaft collar, 6 mm bore, Ø11 × 5 mm
  16. 4 × LK08 — shaft collar, 8 mm bore, Ø16 × 8 mm
  17. 6 × Smooth steel axle, 5 ×70 mm finished length — Check the physical stack before cutting stock.
  18. 2 × Smooth steel axle, 6 ×77 mm finished length
  19. 2 × Smooth steel axle, 8 ×87 mm finished length
  20. 2 × Rigid motor-to-shaft coupling, 6 mm bores
  21. 2 × HEX12 metal wheel hub, 6 mm bore, 18 mm length
  22. 5 × ST3215 12 V serial bus servo — Keep the original servo screw packs.
  23. 1 × CF35-12 constant-force gripper servo
  24. 2 × 3010 fan, 12 V
  25. 4 × Magnet, 20 ×10 ×2 mm — Glue into the pockets with epoxy; check polarity before gluing.
  26. 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.
  27. 11 × M3 brass heat-set insert, OD4 mm, length 6 mm — 10 in the hull and 1 in the LiDAR base.
  28. 1 × 12-cell battery pack, 3S4P, with BMS — 110 × 67 × 35 mm.
  29. 1 × 12.6 V CC/CV charger for the selected 3S pack
  30. 1 × Emergency stop LA16-11ZS/A, 16 mm
  31. 1 × KCD11 two-pin rocker switch and splash cover
  32. 1 × Inline blade-fuse holder, 14 AWG
  33. 1 × ATC blade fuse, 15 A
  34. 6 × Amass XT30 male/female connector pair
  35. 2 × DC panel socket, 5.5 ×2.1 mm — Female panel-mount sockets.
  36. 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.
  37. 2 × DC male barrel plug, 5.5 × 2.1 mm — One for Waveshare Bus Servo Adapter A; one for the battery extension.
  38. 1 × Wire, ferrules and heat-shrink — One set for the power and signal wiring.
  39. 1 × Plugable USB hub, model USB2-2port
  40. 3 × USB-C to USB-A cable, 30 cm
  41. 1 × RealSense camera cable — Lazada product link: https://www.lazada.co.th/products/i16248699269-s127506585857.html · RealSense option only.
  42. 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.
  43. 1 × Intel RealSense D455 OR Orbbec Gemini 2 — Use the matching printed insert(s); these are alternatives.
  44. 1 × SLAMTEC RPLIDAR C1
  45. 1 × Wrist USB camera for the R30 mount — PCB mounting-hole pattern: 21 × 13.5 mm.
  46. 12 × M2 × 6 screw, non-countersunk — Controller/INA219: 6; amplifier: 2; wrist-camera PCB: 4.
  47. 6 × M2 washer, 0.3 mm thick — Controller/BFF and INA219.
  48. 2 × M2 washer, 0.5 mm thick — Amplifier.
  49. 4 × M2.5 × 6 socket-head screw — LiDAR.
  50. 4 × M2.5 × 8 screw, non-countersunk — Servo adapter.
  51. 4 × M2.5 × 10 low-head screw — Power distribution. Head diameter 5 mm maximum.
  52. 4 × M2.5 washer, 0.5 mm thick — Servo adapter.
  53. 8 × M3 × 6 socket-head screw — Motor driver: 4; speaker: 2; computer carrier: 2.
  54. 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.
  55. 8 × M3 × 10 socket-head screw — LiDAR base: 2; arm plate: 4; wrist-camera bracket: 2.
  56. 22 × M3 × 15 socket-head screw — Drive axle/outer bearing covers: 6; idler slides/tensioners: 16.
  57. 7 × M3 × 20 socket-head screw — Drive wheels: 6; LiDAR carriage lock: 1.
  58. 6 × M3 × 25 socket-head screw — Idler wheels.
  59. 18 × M3 × 35 socket-head screw — Six road wheels, 3 screws each.
  60. 10 × M3 × 10 countersunk 90° screw, head Ø6.4 mm maximum — Cover and bin assembly.
  61. 4 × M3 × 10 countersunk 90° screw, head Ø5.6 mm maximum — Cover and bin assembly; smaller head clearance than the other M3 countersunk screws.
  62. 54 × M3 hex nut — Road wheels: 18; drive wheels: 6; idlers: 6; bearing covers: 6; tensioners: 16; wrist-camera bracket: 2.
  63. 4 × M3 washer, 0.5 mm thick — Computer carrier and servo-adapter assembly.
  64. 2 × M4 × 10 socket-head screw — RealSense option only. Not needed with Gemini.
  65. 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.
  66. 8 × M4 × 20 socket-head screw — Motor mounts and inner bearing retainers.
  67. 4 × M4 × 25 countersunk 90° screw — Arm base.
  68. 4 × M4 × 35 socket-head screw — Track tensioners.
  69. 4 × M4 × 60 socket-head screw — Outer track frames.
  70. 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.
  71. 14 × M4 washer, Ø9 × 0.8 mm — 8 for tensioners and outer frames. Add 6 for the split hull (14 total).
  72. 20 × M2 × 6 original servo screw — Supplied with the servo hardware. Keep the original head type; do not buy twice.
  73. 37 × M3 × 6 original servo screw — Supplied with the servo hardware. Keep the original head type; do not substitute generic socket heads.
  74. 11 × M3 × 6 cross-head screw, ISO 7045 — Original gripper hardware; retain the supplied screw pack.
  75. 6 × #1-42 × 3/16 inch Type AB screw — Original gripper hardware; retain the supplied screw pack.

Bill of materials and assembly-specific fasteners

Choose Your Configuration and Print the Parts

print-catalogue.png
outer-frame-diagonal.jpg

Download one prepared project and open it in Bambu Studio. All copies, orientations, materials and automatic tree supports are already placed.

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

split-hull-r92.jpg

Printed parts

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

  1. 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.
  2. 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.
  3. 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

06-road-wheel-screws.gif

Printed parts

Components

  • 12 × 625 bearing

Fasteners

  • 18 × M3 × 35 socket-head screw
  • 18 × M3 hex nut

Assembly

  1. For each wheel, prepare two printed halves, one SP09 centre spacer, two 625 bearings, three M3 × 35 screws and three M3 nuts.
  2. Insert each bearing through the open mating face of its wheel half. Do not push it through the smaller outside opening.
  3. 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.

Watch this assembly clip

Build the Two Drive Wheels

Left_HEX12_drive_wheel_inner_half_R13.jpg
Left_HEX12_drive_wheel_outer_half_R13.jpg

Printed parts

Components

  • 2 × HEX12 metal hub, 6 mm bore, 18 mm length

Fasteners

  • 6 × M3 × 20 socket-head screw
  • 6 × M3 hex nut

Assembly

  1. Match the locating feature on each pair of halves.
  2. Close each wheel with three M3 × 20 screws and three M3 nuts. Keep the HEX12 seat clear.

Build the Two Idler Wheels

Left_22T_idler_wheel_inner_half_R13.jpg
Left_22T_idler_wheel_outer_half_R13.jpg

Printed parts

Components

  • 4 × 608 bearing

Fasteners

  • 6 × M3 × 25 socket-head screw
  • 6 × M3 hex nut

Assembly

  1. For each idler, seat two 608 bearings with SP10 (centre spacer) between them.
  2. 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

Motor_Mount_Left_R90.jpg
Motor_Mount_Right_R90.jpg

Printed parts

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

  1. Use three M3 × 8 screws per motor, without washers. The other six M3 × 8 screws secure the two bearing retainers.
  2. Put four M4 nuts into each motor-support nut pocket and secure each support to the hull with four M4 × 20 screws.
  3. Fit the inner bearing retainers with three M3 × 8 screws per side.

Fit the Inner Track Frames

Left_inner_track_frame_R12_C2.jpg
Right_inner_track_frame_R12_C2.jpg

Printed parts

Fasteners

  • 6 × M4 × 15 socket-head screw
  • 6 × M4 hex nut

Assembly

  1. Fit each inner frame directly against the hull.
  2. Use three M4 × 15 screws and three M4 nuts per side.

Fit Road-wheel Axles and Spacer Pairs

02-road-wheel-spacers.gif

Printed parts

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

  1. 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.
  2. Retain each axle with two LK05 collars (5 mm bore). Repeat for all six wheels and check free rotation.

Watch this assembly clip

Fit the Drive Axles and Outer Bearing Covers

03-drive-wheel-spacers.gif

Printed parts

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

  1. 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.
  2. 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.

Watch this assembly clip

Fit the Idler Slides and Tensioners

04-idler-tensioner-spacers.gif

Printed parts

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

  1. 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.
  2. 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.

Watch this assembly clip

Close the Track Frames

05-track-side-reassembly.gif

Printed parts

Fasteners

  • 4 × M4 × 60 socket-head screw
  • 4 × M4 hex nut
  • 4 × M4 washer

Assembly

  1. Put the two SP12 cross-member spacers (41 mm, no dots) in each side assembly.
  2. Fit the outer frame using two M4 × 60 screws, washers and nuts per side.

Watch this assembly clip

Fit the Tracks

Left_Track_R78_70_Teeth.jpg

Printed parts

Assembly

  1. Use the 70-tooth track print masters supplied in this package.
  2. Seat the central guides in the wheel grooves. Adjust both ends evenly and turn each track by hand.

Fit the Driver and Controller

MOSS_1433.jpg

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

  1. Secure the MDD10A with four M3 × 6 screws.
  2. 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

FW0LIO3MVA0ZNIX.jpg

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

  1. Fix the speaker with two M3 × 6 screws above its grille.
  2. 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

Pi_Adapter_R87.jpg
Jetson_Adapter_R87.jpg

Printed parts

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

  1. Choose one carrier: Jetson or Pi.
  2. 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.
  3. For Jetson, secure the two retaining tabs with two M3 × 8 screws, without washers.
  4. 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

Gemini_Window_Adapter_R89.jpg
RealSense_Insert_R72.jpg

Printed parts

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

  1. For RealSense, slide the support insert down from the top, then use its two M4 × 10 screws.
  2. 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

Lidar_dovetail_carriage_R21.jpg

Printed parts

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

  1. With the carriage removed, secure the LiDAR base to the hull with two M3 × 10 screws.
  2. 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

07-xt30-power-distribution.gif

Printed parts

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

  1. Clip the two fans into their mounts.
  2. Fit the emergency stop and rocker switch in their hull openings.
  3. Assemble the XT30 base, insulating separator and lid with four low-head M2.5 × 10 screws.

Watch this assembly clip

Fit the Arm Plate and Build the Arm

Arm_Mounting_Platform_R22.jpg
SO101_Base.jpg

Printed parts

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

  1. Fit the arm plate with four M3 × 10 socket-head screws. Do not add washers in the counterbores.
  2. Use the original servo screw packs for the SO101 joints. Keep the camera and servo cables in the printed guides.
  3. 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

NC90_Base_extended_rails.jpg
NC90_Left_jaw_extended_rack.jpg

Printed parts

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

  1. 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.
  2. 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.
  3. Fit the current camera mount. Retain the original gripper screw types.
  4. 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

split-cover-r10.jpg

Printed parts

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

  1. 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.
  2. Close the motor hatch with ten M3 × 10 countersunk screws.
  3. Fit the upper cover with four M3 × 10 countersunk screws.
  4. 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

FQC2MFHMVA0ZN05.jpg

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.

  1. Put the rover on blocks so both tracks can turn freely for the first motor test.
  2. 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.
  3. Install the current MOSS/dimOS environment on the chosen robot computer by following the software instructions below.
  4. Run tools/moss-fly.sh check and resolve any reported issues before launching teleoperation.
  5. 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.
  6. 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

FMWMXU2MVA0ZMXV.jpg

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

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.