From Simulation to Reality

# Orbigator Dev Log: From Simulation to Reality

It’s been a while since the last update, and the Orbigator has evolved from a collection of parts and Python scripts into a fully integrated, silent, and precise satellite tracking machine.

Here is the story of how we got here.

Setup with HUD

## 1. The Hardware Pivot: Steppers vs. Smart Servos
We started where most builds start: **Stepper Motors**. They are cheap and ubiquitous. But for a device meant to sit on a desk and track the ISS silently 24/7, they had drawbacks. They vibrate, they make noise (“singing”), and crucially, they are **open-loop**—if the arm gets bumped, the system loses its place and stays lost.

We pivoted to **Dynamixel XL330** smart servos.
* **Silence**: They are virtually silent at tracking speeds.
* **Closed-Loop**: They know their absolute position. If you push the arm, it fights back (torque!).
* **Cabling**: They daisy-chain on a single bus, drastically reducing the rat’s nest of wires.

## 2. The Brain Transplant: MicroPython on Pico 2W
We moved the logic from a desktop PC to the **Raspberry Pi Pico 2W**. This brought its own set of challenges, primarily **Floating Point Precision**.

Standard SGP4 libraries assume full 64-bit float precision. On a microcontroller payload, 32-bit floats aren’t precise enough to handle Julian Dates (numbers like `2460678.12345`) while keeping second-level accuracy. Our initial tracks were off by thousands of kilometers!

**The Fix**: We refactored the satellite math to use **Integer Unix Timestamps** for the heavy lifting, only converting to small relative offsets when necessary. We verified this against NASA’s own trackers, bringing our error down to a negligible **~50km** (on a global scale).

## 3. The Interface: Web & OLED
A tracker isn’t fun if you don’t know *what* it’s tracking.
* **OLED HUD**: We added a tiny 128×64 display on the base for immediate stats: Latitude, Longitude, and current satellite name.
* **Web Dashboard**: Since the Pico 2W has WiFi, we built a hosted React dashboard. You can connect to the Orbigator from your phone to see a 3D visualization, change the tracked satellite (ISS, Hubble, Tiangong), and tweak settings live.

Orbigator CAD Render

## 4. Tuning the Mechanics
The Arguement of Vehicle (AoV) arm (the part that looks like a closed pair of scissors) completes one revolution per orbit.  It is counterweighted to balance the system and alievate motor wear.  Physics caught up with us. Adding the AoV assembly—complete with magnets and pennies for counterweights—introduced a pendulum effect. The motor would “wobble” as it tried to hold position.

We wrote a custom auto-tuning script (`tune_wobble.py`) to cycle through PID profiles. We landed on a stiff-but-smooth profile (`P=600, D=0`) and capped the speed. Now, it glides.

Mechanism Closeup

## 5. What’s Next?
The mess of wires you see in the photos is “development aesthetic.” It works, but it’s fragile.

The next phase is purely hardware. I’m teaming up with **Anool** and **Kevin** to design a custom **Orbigator Control Board** that integrates the Pico, the RTC (Real Time Clock), and the motor drivers into a single, clean PCB.

The code is committed, the math is integer-perfect, and the motor is zeroed. Onward to proper PCBs!

 

Open Source Repo: https://github.com/wyolum/orbigator/

Alex CAD: 40 Minutes of Incredible Improvements

Alex CAD: 40 Minutes of Incredible Improvements

In a single focused session this morning (7:36 AM – 8:16 AM), we transformed Alex CAD with security patches, a major new feature, and comprehensive code refactoring.

Alex CAD with resizable panels

What We Accomplished in 40 Minutes

Phase 1: Security Fixes (11 minutes)

Critical Vulnerability Patched

  • CVE-2025-66418 Fixed: Updated urllib3 from 1.26.6 → 2.6.0
  • Addressed unbounded decompression chain vulnerability
  • Updated requests library for compatibility (2.26.0 → 2.32.3)

Dependency Modernization
Updated 24 packages from 2021 versions to modern 2024-2025 releases:

  • matplotlib: 3.4.2 → 3.9.4
  • numpy: 1.20.1 → 1.26.4
  • scipy: 1.7.1 → 1.13.1
  • Pillow: 8.1.0 → 11.3.0

Phase 2: Dual Monitor Fix (10 minutes)

Fixed a frustrating issue where Alex’s window would span across both monitors on dual-monitor setups.

Phase 3: Dynamic Panel Resizing (9 minutes)

This was the game-changer! We completely reimagined the view layout:

What Changed

  • Before: Fixed grid layout with unchangeable panel sizes
  • After: Fully resizable panels with draggable dividers

Technical Implementation

  • Replaced Tkinter grid layout with nested PanedWindow widgets
  • Created 2×2 grid of resizable view panels (Top, Side, Front, Iso)
  • Added resize event handlers to IsoView class
  • Views automatically recenter when panels resize
  • Zoom levels preserved during resize operations

Phase 4: Code Quality Refactoring (10 minutes)

We performed a comprehensive refactoring to improve long-term maintainability:

New Modules Created:

  • ViewConfig – Centralized configuration constants
  • ViewPanel – Reusable panel component (eliminated ~40 lines of duplication)
  • view_layout – Separated layout logic (reduced AlexCAD.py by ~90 lines)

Improvements:

  • Improved resize handler with robust debouncing
  • Added type hints throughout for better IDE support

Impact Metrics

Code Quality

  • Reduced duplication: ~40 lines eliminated
  • Improved organization: 3 new focused modules
  • Net reduction: ~90 lines in main file
  • Type safety: Type hints throughout

Files Changed

  • +370 insertions, -101 deletions
  • 3 new modules created
  • 5 files modified

Key Takeaways

  1. Security First: Immediately addressed the critical vulnerability
  2. User-Focused: Implemented the requested dynamic resizing feature
  3. Quality Matters: Didn’t stop at “working” – refactored for maintainability
  4. Clean Process: Proper git workflow with feature branches
  5. Zero Downtime: Alex remained functional throughout all changes

Try It Yourself

Alex CAD is open source! Check out the repository at github.com/wyolum/Alex

The resizable panels feature makes it easier than ever to customize your workspace for aluminum extrusion design projects.


This incredible 40-minute session demonstrates what’s possible when you combine focused effort, modern tools, and a commitment to code quality. From security vulnerability to fully refactored, feature-enhanced application – all in less time than a typical meeting!

Major Upgrade: NYT Connections Tile Sorter

We’ve released a major upgrade to our NYT Connections Sorter!

If you used our previous version, you’ll love the new
features in v5.1. We’ve completely overhauled the interface to make solving the daily puzzle even
easier.

NYT Connections Sorter v5 Screenshot

Click here to use the NEW NYT Connections Tile
Sorter

What’s New?

  • Automatic Daily Puzzle: No more manual entry! The tool now automatically loads today’s NYT
    Connections puzzle.
  • Drag and Drop Interface: Intuitively drag tiles to rearrange them into groups.
  • Animated Row Swapping: Tap the colored bars to select and swap entire rows with smooth animations!
  • Mobile Friendly: A fully responsive design that works perfectly on your phone or tablet.
  • Shuffle: Stuck? Hit the shuffle button to get a fresh perspective.

How to Use

  1. Click the link above to open the sorter.
  2. The puzzle for today will load automatically.
  3. Drag and drop tiles to group them, or tap to swap.
  4. Think you have a category? Arrange them in a row!

Happy solving!

Satellite tracker inspired by WillsBuilds

Working on a satellite tracker inspired by WillBuilds. Thanks will for posting your awesome globe. This one is base on a 13″ globe that spins instead to keep the wires from getting wrapped around the poles. Each axis turns at a constant rate (assuming a circular orbit). The setup can accommodate any circular orbit by setting the orbital inclination manually before placing the globe. The cart is held in place by to steel ball-bearings that will be aligned by two internal magnets on the orbital arm. Should be pretty neat.

Full video of Will’s Build is here: https://www.youtube.com/watch?v=nbEe-BCNutg

Image
Image
Image