Saturn Arm

Created by [Kunshpreet]

Development log for a VR-controlled robotic arm project

Total time spent thus far: 73h

May 25-26: Initial Concept and Design

  • Created idea
  • Pitched concept
  • Developed rough Bill of Materials (BOM)
  • Total time spent: 4h

May 26-28: Arm Assembly and Design Refinements

  • Finished first part of the arm
  • Nearly completed second part
  • Redesigned bearing holders (original design required impractical assembly)
  • Identified needed PCB components:
    • 4 Γ— 3-pin connectors for Servos
    • 1 Γ— 4-pin connector for stepper
    • 1 Γ— 2-pin connector for PSU
    • 3 Γ— MG996R servos
    • M3.5 screws
    • Nema23 23HS5628 stepper + TB6600 Controller
    • SG90 servo
    • LM2596 voltage regulator (for ESP32 compatibility)
    • PSU: AliExpress link
    • Rotary encoder
  • TODO:
    • Finish second arm
    • Complete claw mechanism
    • Finalize bottom part
    • Design camera mount


image


Total time spent: 16h

May 29: Structural Completion and PCB Design

  • Finished all arms + claw assembly
  • Improved aesthetic design
  • Designed PCB (significant time spent on hole placement)
  • Created stepper motor base connection with tight-tolerance square insert
  • Current progress: ~60%
  • TODO:
    • Complete base assembly
    • Fix 3D printed inserts
    • Finalize BOM
    • Begin coding

image - Total time spent: 6h

May 30 - June 1: Component Updates and PCB Revision

  • Arm improvements:
    • Added screw mounts to arm holders
    • Designed printable nuts for assembly
    • Created side components
  • Major PCB changes:
    • Switched ESP32 β†’ Raspberry Pi Zero W (better camera streaming)
    • Significant time spent updating PCB layout/screw holes
  • TODO:
    • Design camera mount
    • Convert to wall-plug PSU
    • Add/remove rotary encoder based on space
    • Update connectors: 2-pin β†’ PSU pins, 4-pin β†’ 6-pin
    • Find placement for TB6600 Controller

image image - Total time spent: 10h

June 2: Power System and Controller Updates

  • Implemented changes:
    • Converted to wall-plug PSU
    • Added second rotary encoder
    • Updated connectors: 2-pin β†’ PSU, 4-pin β†’ 6-pin
    • Replaced TB6600 with space-saving TMC2208 controller
  • TODO:
    • Finalize camera mounting solution
    • Complete official BOM
    • Start coding base functionality

image

  • Total time spent: 4h

June 2: Github Stuff

  • Created Journal.md
  • Finished BOM
  • TODO:
    • Add Camera to BOM
    • Finalize camera mounting solution
    • Start coding base functionality
    • Start coding VR β†’ Arm Pose in Unity
  • Total time spent: 3h

June 2-4: Coding

  • Added rotary encoder support
    • Encoder 1 β†’ controls Joint 1
    • Encoder 2 β†’ controls Joint 2
    • Encoder 3 β†’ controls the claw
    • Encoder 4 β†’ controls base (stepper/rotation)
  • Implemented inverse kinematics with safety checks
    • Enforces Β±90Β° range from vertical (coded as 90Β°)
    • Restricts x ∈ [-5.5, 5.5] if y β‰₯ -2 cm
  • Added movement validation system
    • Only moves to reachable coordinates within the arm’s physical limits
    • Displays an error if the point is unreachable
  • New command features
    • Supports input like x:5,y:8,z:-2
    • stop command halts all motors immediately
  • Maintains stable claw orientation (always facing downward)
  • TODO:
    • Finalize camera mounting solution
    • Start coding VR β†’ Arm Pose in Unity Total time spent: 10h

June 4-10: Coding for Pi Zero 2 W to Unity VR

  • Ported legacy code to Pico SDK environment
  • Implemented hardware abstraction layer for:
    • Servo/stepper motor control
    • Rotary encoder feedback
  • Verified all hardware functionality
  • Built a lightweight TCP server using lwIP
  • Added WebSocket support for real-time control
  • Key endpoints:
    | Endpoint | Function |
    |----------|----------|
    | /move | Coordinate-based arm movement |
    | /direct| Raw servo control |
    | /encoders | Live position feedback |
    | /camera | MJPEG video stream (10 FPS) |
  • Unity Features:
    • Controller-triggered calibration
    • 1:1 movement mapping (VR β†’ Physical Arm)
    • Real-time camera display
    • Connection status UI
    • TODO:
    • Find out where to put the camera :sob:

Total time spent: 20h