Mechanical Design

Deep dive into our mechanical design journey—from initial propeller experiments to CFD-optimized centrifugal impellers, custom chassis design, and the docking station that brings it all together.

System Overview

The Core Concept

🤖

Loading 3D Model...

Full Robot Assembly

We're building a wall-climbing robot that uses suction to create a vacuum (pressure differential) between the window and the robot itself. The robot adheres to the window using an impeller and uses an external marker mechanism to draw on vertical surfaces.

🏗️

Chassis

Lightweight 3D-printed frame with integrated shrouding

🌪️

Impeller

CFD-optimized centrifugal design for maximum suction

⚙️

Kiwi Drive

Three omni-wheels for omnidirectional movement

🔌

Tether System

360° slip ring with motorized spool management

Chassis Design

Design Constraints & Evolution

The chassis integrates with the shrouding and has several critical constraints:

  • 🔧 Must mount three motors for Kiwi drive configuration
  • ⚖️ Keep weight as low as possible—more weight = harder to climb
  • 📐 Low center of mass to reduce peel-off torque
  • 🔄 Integrate shrouding for impeller suction
🏗️

Loading Chassis...

Design Evolution

V1
Initial Design

Mixed-flow impeller integration, cantilevered motor mounts with adjustability

Higher CoM, mount play issues
V2
Centrifugal Redesign

New chassis around centrifugal impeller, fully 3D-printed, lower profile

110g lighter than V1
V3
Final Optimization

Fully constrained wheel mounts (front & back), 1mm shroud tolerance

Minimal slippage, reliable climbing
V1 Chassis V1 Chassis
V3 Chassis V3 Chassis

Motor Mount Evolution

💡

Key Learning

Our first motor mounts were cantilevered for adjustability, but they had play. This play caused force to "leak" into the skirt instead of being driven into the wheels, reducing traction. The fix: fully constrain each wheel on front AND back, locking them in place.

Cantilevered Mount ❌ Cantilevered Mount

Play in mounts → force leaks to skirt

Fully Constrained Mount ✅ Fully Constrained

Locked in place → force to wheels

Impeller Suction System

The Journey: From Propeller to Centrifugal Impeller

❌ Attempt 1

FPV Drone Propeller

Propeller Test Setup Propeller Setup

Instead of pulling vacuum, we tried pushing into the wall using thrust to increase normal force.

Result: Could hold robot up, but didn't solve the vacuum problem. Propellers are optimized for moving air and creating thrust, not building static pressure.
⚠️

A propeller chokes when it doesn't have enough air to move—it slows down and can't maintain performance.

⚡ Attempt 2

Mixed-Flow Impeller

Mixed-Flow Impeller Design Mixed-Flow Design

Found a credible design online. Used shrouding integrated into chassis with a 4S 2200KV motor.

Result: Worked reasonably well, but physically large (turbo-style) and didn't create enough pressure differential. Also raised center of mass.
CFD Result: ~3,000 Pa
✅ Final Design

Centrifugal Backward-Facing Impeller

Centrifugal Impeller Design Centrifugal Design

CFD-optimized design by Liam Carlin & David Rasun. More compact, sits lower, significantly better performance.

Result: Massive improvement in suction while reducing height and weight.
CFD Result: ~14,000 Pa +366% vs mixed-flow!

Why Centrifugal?

Aspect Mixed-Flow Centrifugal
Optimization Compromise (flow + pressure) Pressure-focused
Physical Size Large, turbo-style Compact
Center of Mass Higher Lower
Pressure Output ~3,000 Pa ~14,000 Pa
Our Need Suction (stick to window) > Air movement
🔬

Key Insight: With an impeller, if there's less air (less load), it actually spins faster because there's less resistance. This is the opposite of a propeller!

🎮 Interactive: Centrifugal Flow Visualization

Control the impeller speed and watch how centrifugal force accelerates air particles outward, creating pressure!

⬇️ Air Inlet
Low pressure draws air in
➡️ High Pressure Outlet
Compressed air exits tangentially
Vacuum Pressure
0 7k 14k Pa
0 Pa
LOW P HIGH P
0 RPM
OFF 50% 100%

The Physics

  1. Blades spin → air molecules get "caught"
  2. Centrifugal force → flings air outward
  3. Volute casing → converts velocity to pressure
  4. Low pressure at center creates suction!
Low Pressure (Inlet)
Accelerating Air
High Pressure (Outlet)

Design Variables & Optimization

Centrifugal impellers have many design variables that affect performance:

📏 Blade Length
Blade Diameter
📐 Blade Pitch
〰️ Blade Curvature
🔵 Outer Diameter
↕️ Overall Height
🎯

Critical Discovery from SharkNinja Engineer

In shrouding, the difference between a 1mm and 2mm gap can result in ~50% loss of total suction power!

We improved our shrouding tolerance from 2mm → 1mm for significantly increased suction.

Kiwi Drive System

Why Kiwi Drive?

We chose Kiwi drive because it allows the robot to translate and rotate simultaneously— changing heading while moving. This is essential for drawing complex shapes.

Drive Specifications

  • Configuration: 3 omni-wheels, 3 motors
  • Motors: Geared DC motors @ 150 RPM
  • Design Priority: Small & light as possible

🎮 Interactive: Kiwi Drive Simulator

Use the joystick or arrow keys to drive the robot! Watch how the three omni-wheels work together for omnidirectional movement.

SCRIBBLZ Robot Overhead View
Drag to Move
Rotate
Wheel 1
Wheel 2
Wheel 3
💡

Tip: Try moving diagonally while rotating! This is what makes Kiwi drive special—simultaneous translation and rotation.

The Friction Challenge

Kiwi drive requires omni-wheels, which have inherently low coefficient of friction (μ). This creates a "stacked" friction problem:

1 Low μ from omni-wheels
+
2 Low friction against glass
+
3 Small contact patch (rollers don't deform)
=
Need HIGH vacuum for enough traction!

Our Solution

This friction challenge is exactly why we needed to maximize our impeller's pressure output. The centrifugal impeller's ~14,000 Pa gives us the normal force required to generate sufficient wheel traction.

🎮 Interactive: Force Distribution (Why Wheels Matter!)

Adjust the sliders to see how force distribution affects the robot's ability to drive. The goal: maximize force to wheels, minimize force lost to skirt!

Glass Surface Robot Chassis F_vacuum 10 N W = mg N_wheel F_drive F_skirt (LOSS!)
70%
Low (Straws)
Drive Force Available 8.5 N
Force Lost to Skirt 1.5 N
Net Driving Force 7.0 N

💡 Key Insight

F_drive = μ_wheel × N_wheel — We want ALL the normal force going through the wheels!

Any force the skirt absorbs is wasted because it creates friction that opposes motion instead of enabling it.

Skirt Compliance System

The Sealing Challenge

🎈

Think of the skirt like a balloon: when it's sealed, pressure holds; when it leaks, pressure drops.

The skirt's job is to maintain the vacuum seal and reduce airflow leakage. It needs to do two things at once:

1

Be Compliant

Conform to seal against imperfect surfaces (glass isn't perfectly flat, neither are 3D prints)

2

Low Friction

Don't waste drive force dragging the skirt—transfer force to the wheels instead

🎮 Interactive: Vacuum Seal Visualization

Click and drag on the glass surface to create imperfections. Watch how different skirt types handle the seal!

Robot Cross-Section Glass Surface (click to add bumps)
Vacuum
0 Pa
Seal: Good

Notice how the straw skirt conforms to surface imperfections while maintaining seal. Hard skirts create gaps, and foam drags too much!

Materials Tested

🧽 Foam
📋 Sticky Foam
🔲 Hard Skirt
No Skirt
🥤 Straws (cut in half)

🏆 Winner: Straws!

Straw Skirt Implementation Straw Skirt Implementation
  • Compliant enough to conform and seal
  • Very low coefficient of friction
  • Transfers maximum force to wheels

Voltage Optimization

14.8V (Battery)

Smaller skirt contact area worked fine

12V (Tethered)

Needed to maximize skirt surface area to compensate for lower voltage

Solution: Increased skirt coverage on the bottom of the robot to improve seal and maintain suction performance at 12V.

Power System Evolution

The Weight vs. Capacity Tradeoff

Our goal was a fully battery-powered robot, but batteries add weight, and weight kills climbing performance.

1

LiPo Batteries

Started here, but needed ~4,000 mAh capacity for drawing operations.

⚡ Capacity limited
2

Li-Ion Pack

Built a pack: 4× 3.7V cells (4,000 mAh each) fused together.

⚠️ Too heavy—robot could adhere but couldn't drive upward reliably
3

Tethered System

Pivoted to external power via docking station. Used a slip ring in the center so the tether can rotate 360° without losing electrical connection.

✅ Removed onboard battery weight entirely!

🎮 Interactive: How a Slip Ring Works

Drag the rotor to rotate it and see how electrical connections are maintained through continuous contact between rings and brushes!

12V DC + Brush 1 Brush 2 To Motor + To Motor − M ↻ Drag anywhere to rotate the rotor
Total Rotation
Circuit Complete
Current Flow: 0.0 A

How a Slip Ring Works

1
Conductive Rings

Metal rings mounted on the rotating shaft, each electrically isolated

2
Stationary Brushes

Spring-loaded contacts that press against the rings, staying in place

3
Continuous Contact

Brushes slide along rings as rotor spins—electrical path never breaks!

Why we need this: The robot spins 360°+ while drawing. Without a slip ring, the power cable would twist and break!

Slip Ring Integration

The slip ring is mounted at the center of the robot, allowing the tether to rotate freely without twisting or losing electrical connection.

Around the slip ring, we placed a cylindrical target that the LiDAR can reliably detect for localization.

Slip Ring Assembly Slip Ring Assembly

Localization System

Knowing Where We Are

For accurate drawing, we need to know exactly where the robot is on the window. We use two localization signals together:

📡

LiDAR

Position in window reference frame

+
🧭

6-Axis IMU

Heading/orientation

=
🎯

Waypoint Navigation

Drive to targets & maintain heading for drawing

LiDAR Target Design

LiDAR Target Cylinder LiDAR Target Cylinder

To make LiDAR tracking work, we added a recognizable target shape: a round cylinder near the top of the robot, next to the swivel mount for the tether.

The cylinder sits about 100mm (10cm) above the glass surface, giving the LiDAR a clear, consistent feature to track.

Docking Station

Multi-Function Hub

🏠

Loading 3D Model...

Docking Station

The docking station isn't just a parking spot—it's a critical part of the system:

🤖

Robot Holder

Holds robot when not in use

📡

LiDAR Mount

Positions sensor for tracking

🖥️

Pi Housing

Raspberry Pi for computation

🧵

Spool Winder

Motorized tether management

🎮 Interactive: Tether Spool System

Drag the robot across the window and watch how the spool automatically manages tether tension to keep the LiDAR path clear!

Window Frame (Top Edge) Dock LiDAR Robot Glass Surface
Tether Length 200mm
Spool Action
LiDAR Path Clear

The tether always exits above the LiDAR beam so it never blocks the sensor's view of the robot!

The Spool System

The Problem

The LiDAR needs unobstructed line of sight to the robot's target. If the tether crosses through the LiDAR's scan line, we get false readings.

The Solution

Motorized Spool System Motorized Spool
  • Stepper motor (controlled by Raspberry Pi) spools tether in/out
  • Robot moves away: spool lets wire out
  • Robot returns: spool reels wire in to keep tether taut
  • Tether exits above LiDAR so it doesn't interfere with beams

LiDAR Placement Constraints

LiDAR Position Diagram LiDAR Position Diagram
⬇️

Must be below the wire path

⬆️

Must be above the rest of the docking station (no blocking)

📏

Mounted ~10cm above surface

Docking & Calibration

For repeatable docking and calibration, we use the robot's circular LiDAR target as a locating feature.

A laser-cut U-shaped acrylic guide lets the robot slide into the exact same position every time, giving us a known pose to reset the IMU and position consistently at startup.

U-Shaped Docking Guide U-Shaped Docking Guide

Electronics Bay

Electronics Bay Layout Electronics Bay Layout
  • 🖥️ Raspberry Pi bay with antenna
  • Stepper motor drivers
  • 🔌 Buck converters
  • 📡 LiDAR mounts
  • 🌀 Ventilation for airflow (prevents overheating)
  • 🔗 Single main wire entry—spliced internally
📋

Wiring for LiDAR and stepper motor routed through a shared under-channel for clean cable management. The docking station mounts to the window using double-sided tape.

Key Refinements Summary

🌪️

Impeller

Mixed-flow → Centrifugal backward-facing

+366% pressure
📐

Center of Mass

Lowered significantly with new design

Reduced peel torque
🔧

Motor Mounts

Cantilevered → Fully constrained

Eliminated play
📏

Shroud Tolerance

2mm → 1mm gap

~50% more suction
⚖️

Chassis Weight

Complete redesign

-110 grams
🔋

Power System

Onboard battery → Tethered

Major weight reduction
Explore Electrical Design → ← Back to Home