← Back to Main

Rats Play Doom: Hardware Assembly Guide

A single-page, print-friendly, and accessible guide for assembling the open-source hardware used to let rats play DOOM. This guide covers the complete build from the frame to the final harness.

The complete Rat VR System, showing the frame, locomotion ball, harness, and display.
What you'll build: The complete Rat VR System.

Pre-flight Checklist

1. Frame Assembly

The frame provides a rigid, modular structure for all components. It is built from standard aluminum profiles, allowing for easy adjustment.

Required Parts

Tools

Instructions

  1. Cut Profiles: Cut aluminum profiles to the lengths specified in the cut list below. Ensure cuts are straight and deburred.
  2. Assemble Base: Construct the bottom level using four 70cm crossbeams and connect them to the four 100cm pillars at the base.
  3. Assemble Middle Level: Attach crossbeams to create the middle level, which will hold the sensors and reward system.
  4. Assemble Top Level: Add the final crossbeams for the top level, which supports the VR headset and harness.
  5. Check for Squareness: Ensure the frame is square and all connections are tight.

Frame Cut List

The assembled aluminum frame with the locomotion system mounted.
Overview of the assembled frame with the locomotion system installed.

Refer to the 3D Parts Library for all frame-related printable parts.

QA Checks

2. Locomotion System

The locomotion system allows the rat to move in the virtual world. It consists of a large styrofoam ball that rests on three omni-directional wheels, each driven by a motor.

Required Parts

Tools

Instructions

  1. Prepare Ball: This is an essential step to ensure the ball is durable and functions correctly. The raw styrofoam is easily damaged by the rat's claws and does not provide good traction. Coating it creates a tough, smooth surface that rolls much better on the bearings.
    Coating Process
    1. First Coat: Place the ball on a stand. Pour the Flex Seal Liquid on top and use a brush to smooth it out into a single, even layer covering most of the ball.
    2. Drying: Let the ball dry for at least 24 hours. The bottom part will not be covered at this stage.
    3. Second Coat: Once dry, mark the uncovered area with a marker. Carefully paint the remaining part with a brush, avoiding a thick overflow onto the already-covered areas.
    4. Final Curing: Allow the ball to cure for another 24 hours before assembly.
    Applying a liquid rubber coating to the styrofoam ball.
    Applying the Flex Seal Liquid coating to the ball. This step is essential.
  2. Mount Motors: Attach the three Pololu motors[pololu-motor] to the 3D-printed locomotion base.
  3. Attach Hubs and Wheels: Secure the mounting hubs[mounting-hub] to the motor shafts. Then, mount the omni-wheels[omniwheel] to the hubs.
  4. Assemble Base: Follow the `spawn_base_ver3_18a.blend` file to assemble the 3D-printed base parts.
  5. Install in Frame: Mount the entire locomotion assembly onto the bottom level of the main frame.
  6. Wire Electronics: Connect the motors and their encoders to the L298N drivers[l298n-driver]. Connect the drivers to the Raspberry Pi and the 12V power supply[psu-12v] according to the KiCad diagrams.
  7. Place Ball: Gently place the coated styrofoam ball on top of the three omni-wheels.
The assembled locomotion system with motors and omni-wheels.
Assembled locomotion system, top-down view.

Refer to the 3D Parts Library for all locomotion system printable parts.

Circuit diagram for the locomotion system's motor driver connections.
Locomotion circuit: Motor driver wiring.
Circuit diagram for the locomotion system's power input.
Locomotion circuit: Power input.
Circuit diagram for the locomotion system's encoder connections.
Locomotion circuit: Encoder wiring.

3D Model: Stand/Ball

QA Checks

3. Ball Sensors

Two optical flow sensors track the ball's movement, providing the data needed to control the game.

Required Parts

Tools

Instructions

  1. Print Mounts: 3D print the sensor mounts using `motion_sensor_mount.blend`.
  2. Install Sensors: Secure the PAA5100JE sensors[paa5100je-sensor] into the printed mounts.
  3. Mount on Frame: Attach the mounts to the middle frame level. Position them 90 degrees apart, facing the ball.
  4. Set Distance: Adjust the mounts so the sensors are at the optimal distance from the ball's surface for reliable tracking.
  5. Wire to Pi: Connect the sensors to the Raspberry Pi according to the `sensors` KiCad diagram.
Close-up of the PAA5100JE optical sensor mounted in its 3D-printed housing.
The PAA5100JE optical flow sensor in its mount.

Refer to the 3D Parts Library for the sensor mount.

Circuit diagram for the PAA5100JE optical sensor.
Ball sensor circuit diagram.

QA Checks

4. Reward Circuit Installation

The reward circuit delivers sugar water for correct actions and an air puff for negative feedback.

Required Parts

Tools

Instructions

  1. Assemble Reservoir: 3D print the reservoir holder and mixer cap. Attach the SG90 servo[sg90-servo] to the cap to act as a mixer.
  2. Set up Water Line: Connect the 10/6mm PVC tubing[pvc-tubing] from the water reservoir to one of the pumps. Use a 3D-printed adapter to connect the 4/2mm tubing to the pump's outlet.
  3. Install Sensor and Valve: Insert a T-junction[t-junction] in the 4/2mm line. Connect one branch to the pressure sensor[pressure-sensor]. Install the solenoid valve downstream from the T-junction.
  4. Set up Air Puff System: Connect the second pump (blower)[air-pump] to tubing. Position the outlet near the headset to deliver a gentle air puff.
  5. Mount Components: Mount the entire assembly to the middle level of the frame. Run the final water delivery tube and air puff tube to the headset area.
  6. Wire Electronics: Connect the pumps, sensor, valve, and servo to the control board as per the KiCad diagrams.
Diagram of the complete reward and feedback system, including water and air puff components.
Complete reward and feedback system schematic.

Refer to the 3D Parts Library for all reward circuit printable parts.

Water reservoir for the reward system.
The water reservoir for the reward system.
3D-printed tube adapter.
3D-printed tube adapter.
T-junction for splitting the water line.
T-junction for splitting the water line.
Circuit diagram for the water pump.
Reward circuit: Water pump wiring.
Circuit diagram for the water valve.
Reward circuit: Water valve wiring.
Circuit diagram for the water pressure sensor.
Reward circuit: Water pressure sensor wiring.
Circuit diagram for the air puff system.
Feedback circuit: Air puff wiring.

QA Checks

5. Trigger Mechanism

The trigger allows the rat to perform the 'shoot' action in the game by pulling a lever.

Required Parts

Tools

Instructions

  1. Print Parts: 3D print the lever, housing, and spring holder from `vr_headset6_rev15_lever3_a8.blend`.
  2. Install Components: Mount the rotary encoder and SG90 servo[sg90-servo] inside the housing.
  3. Assemble Lever: Place the lever into the housing, connecting it to the encoder and servo.
  4. Attach Springs: Attach the two springs[spring-e0063] to the lever and spring holder to provide return tension.
  5. Mount Assembly: Attach the trigger assembly to an adjustable arm on the frame. Position it within easy reach of the rat.
The assembled trigger mechanism, showing the lever and servo.
Assembled trigger mechanism.

Refer to the 3D Parts Library for all trigger mechanism printable parts.

Circuit diagram for the trigger mechanism.
Trigger circuit diagram.

3D Model: Trigger

QA Checks

6. Display System

A curved display provides the rat with an immersive visual feed from the game.

Required Parts

Tools

Instructions

  1. Print Holder: 3D print the screen holder using `full_headset_guide.blend`.
  2. Mount Display: Carefully secure the OLED display[oled-display] into the holder.
  3. Attach to Frame: Mount the holder onto an adjustable arm on the top level of the frame.
  4. Position Screen: Adjust the arm to place the screen at the rat's eye level, ensuring a clear and panoramic field of view.
The curved OLED display mounted in its 3D-printed holder.
The curved OLED display and its 3D-printed holder.

Refer to the 3D Parts Library for all display system printable parts.

3D Model: Headset

QA Checks

7. Rat Harness System

The harness safely suspends the rat above the ball, allowing its paws to rest on the surface while preventing it from leaving the apparatus.

Required Parts

Tools

Instructions

  1. Print Harness: 3D print the harness components from `harness.blend`.
  2. Assemble and Pad: Assemble the printed parts and line the interior with soft fabric for the rat's comfort.
  3. Mount to Frame: Attach the harness to the top level of the frame.
  4. Adjust Height: Adjust the height so the rat is comfortably supported with its paws resting naturally on the ball. The rat should be able to move slightly vertically but not be able to climb out.
The 3D-printed harness for the rat.
The 3D-printed rat harness.

Refer to the 3D Parts Library for all harness printable parts.

QA Checks

Final Verification

3D Parts Library

This section lists all the 3D-printable parts required for the project. All files are located in the 3d_parts.zip archive. The paths provided are relative to the root of the zip file.

Part Name File Path (.stl) Description
Ball Safety Holder frames/ball_safety_cardboard_holder.stl Holds a cardboard piece to prevent the ball from falling out.
Bottle Holder frames/frame_attachment_to_hold_bottle.stl Attaches the water reservoir bottle to the main frame.
Solenoid Valve Mount frames/frame_attachment_to_hold_solvalve_assembly.stl Mounts the solenoid valve assembly to the frame.
Air Puffer Mount frames/frame_mount_air_puffer.stl Mounts the air puffer pump to the frame for negative feedback.
Reward Board Mount frames/frame_mount_reward_orange_board.stl Mounts the custom PCB for the reward system to the frame.
Water Pump Mount frames/frame_mount_water_pump.stl Mounts the water pump for the reward system to the frame.
Tube Adapter frames/water_tube_adapter_6to2.stl Adapts the 6mm PVC tubing to the smaller 2mm tubing.
Harness Latch harness/hammock_latch_a_rev3_rev4_WIDE_back_fixed_a2_thick_bars.stl A key component of the rat harness that secures the hammock.
Mixer Cap mixer/mixer_cap.stl A cap for the water reservoir that holds the mixing servo.
Motion Sensor Mount motion_sensor_mount/motion_sensor_mount_static_shifted_down_a.stl Holds the PAA5100JE optical sensors for tracking ball movement.
Roller Arm Wedges stand/roller_arm_wedges.stl Wedges used to secure the roller arms in the locomotion base.
Locomotion Base Arm stand/spawn_base_ver3_13a_csapagy_arm_medium.stl A bearing arm component for the locomotion system's base.
Roller Arms stand/spawn_base_ver3_14a_roller_arms.stl The arms that hold the omni-directional wheels in the locomotion base.
Locomotion Bearing Base stand/spawn_base_ver3_15a_csapagy_base.stl The main bearing base for the locomotion system's roller arms.
Locomotion Roller Base stand/spawn_base_ver3_18a_roller_base.stl The primary base structure for the entire locomotion roller assembly.
Trigger Lever trigger/vr_headset6_rev15_lever3_a8.stl The lever the rat pulls to activate the 'shoot' action in the game.
VR Headset - Large Parts vr_headset/vr_headset_ver2_6_a5_big_parts.stl The main, larger structural components of the VR headset assembly.
VR Headset - Small Parts vr_headset/vr_headset_ver2_6_a5_small_parts.stl Smaller connecting and fitting parts for the VR headset assembly.

8. Bill of Materials (BOM) and Links

This section lists all required components for the project. Quantities are per the reference build. Most parts are sourced from the EU and Hungary, but you can often find equivalent parts in the US.

Part ID / SKU Qty Link(s)
Pololu 25D Motor 4867 3 Pololu
Omni-directional Wheel 100mm 3 RobotShop
Universal Mounting Hub 8mm Shaft 3 RobotShop
4mm to 8mm Set Screw Shaft Coupler 3 Custom part to connect the 4mm motor shaft to the 8mm mounting hub. Fabricated by Szurwin Kft. [CAD file coming soon]
L298N Motor Driver - 2 Hestore
T-junction 4mm 1 Terkowebaruhaz
Flex Seal Liquid Clear 1 Amazon
Grove Pressure Sensor MPX5700AP 1 SeeedStudio
Mini Air Pump 12V 2 Hestore
PVC Tubing - 1 Hestore
Loudspeaker - 2 Hestore
SG90 Micro Servo SG90 2 Hestore
Mini Solenoid Valve DC 12V 1 Amazon
OLED Display Module - 1 AliExpress
Fuse Holder - 1 RS
Fuses Multiple Set RS1, RS2, RS3
Spring E0063-007-0380S E0063-007-0380S 2 AS-RAY
Rotary Encoder Keyestudio 1 Keyestudio
Power Supply HDR-100-12N 1 Hestore
Screw M4x8 Many TME
Screw M4x14 Many TME
T-Slot Nut M4 Many TME
Styrofoam Ball 40cm 1 Sourcing this part can be challenging. It must be a perfectly shaped 40cm sphere. Due to its size, shipping is difficult, so it's best to source it locally (EU/Hungary). You may need to check multiple suppliers.
Optical Sensor PAA5100JE 2 Pimoroni