Major additions from Silvester 2025 and New Year 2026 sessions: Concept Token Pairs (architecture/future/concept-token-pairs.md): - Theoretical paper on navigable reasoning spaces - Opposites create axes, not just mode switches - "Punkt vor Strich" for AI reasoning - Escape velocity from degeneration loops - NEW: Spatial Grounding section linking to physical nimmerhovel Architecture updates: - Endgame-Vision.md: v6.2 alignment - Big-Picture.md: v5.2 alignment - Modular-Organism-Design.md: conical interlocking mechanism New files: - SEEDS.md: Research seeds for future exploration - Temporal-Firework-Visualization.md: Temporal data viz concept Key insight from 2026-01-01 session: "Don't train the answer. Train the space where answers live." → "Don't imagine the space. MEASURE it." Spatial embeddings from nimmerhovel hardware (8× ESP32-S3 AI CAM, Pi HQ Camera, Discovery Scan Station) can ground concept pairs in physical reality, not just symbolic patterns. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
25 KiB
Modular Organism Design
One function, one module. Magnetic pogo connectors. CAN bus backbone.
Overview
Organisms are built from swappable modules, each responsible for a single function. Modules communicate via CAN bus and connect physically through magnetic pogo pin connectors. The same connector serves internal (module↔module) and external (organism↔organism) communication.
Design Philosophy:
- One function = one module
- Same connector for everything
- CAN bus inside, NATS outside
- Magnetic alignment, pogo pin contact
- Hot-swappable, idiot-proof
The Cellular-Physical Mapping
Software cells become hardware modules:
SOFTWARE (Cellular Architecture) HARDWARE (Modular Design)
──────────────────────────────── ────────────────────────────
Cell → Module
State machine → Microcontroller (ESP32)
Inputs/outputs → Connector pins
Lifeforce cost → Power budget (mA)
NATS messages → CAN frames
Organism → Assembled modules
CAN Bus Architecture
Why CAN?
| Feature | Benefit for Organisms |
|---|---|
| Multi-master | Any module can initiate communication |
| 2-wire | Simple wiring, small connectors |
| Error-robust | Built for automotive noise/vibration |
| 1 Mbps | Fast enough for real-time control |
| Native ESP32 | No extra hardware needed |
| Proven | Decades of automotive validation |
Internal Bus Topology
ORGANISM INTERNAL ARCHITECTURE
┌─────────────────────────────────────────────────────────────┐
│ ORGANISM │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ BRAIN │ │ MOTOR │ │ SENSOR │ │ LED │ │
│ │ MODULE │ │ MODULE │ │ MODULE │ │ MODULE │ │
│ │ │ │ │ │ │ │ │ │
│ │ ESP32 │ │ ESP32 │ │ ESP32 │ │ ESP32 │ │
│ │ + WiFi │ │ + Driver │ │ + ADC │ │ + PWM │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │ │
│ └─────────────┴──────┬──────┴─────────────┘ │
│ │ │
│ ════════╪════════ │
│ CAN BUS │
│ (CAN_H + CAN_L) │
│ │ │
│ │ │
└────────────────────────────┼────────────────────────────────┘
│
WiFi Bridge
│
▼
NATS (nimmerverse)
CAN Frame Format
STANDARD CAN FRAME (organism internal)
┌──────────┬──────────┬──────────────────────────────┐
│ ID (11b) │ DLC (4b) │ DATA (0-8 bytes) │
├──────────┼──────────┼──────────────────────────────┤
│ Module │ Length │ Payload │
│ address │ │ │
└──────────┴──────────┴──────────────────────────────┘
ID ALLOCATION:
0x000-0x0FF: System messages (heartbeat, errors)
0x100-0x1FF: Brain module
0x200-0x2FF: Motor modules
0x300-0x3FF: Sensor modules
0x400-0x4FF: LED modules
0x500-0x5FF: Power modules
0x600-0x6FF: Gripper/manipulator
0x700-0x7FF: Reserved/expansion
Message Examples
// Motor command
CAN_ID: 0x201
DATA: [speed_left, speed_right, duration_ms_hi, duration_ms_lo]
// Sensor reading
CAN_ID: 0x301
DATA: [sensor_type, value_hi, value_lo, confidence]
// LED state update
CAN_ID: 0x401
DATA: [led_0, led_1, led_2, led_3, led_4, led_5, led_6, led_7, led_8]
// Each byte: 0=off, 1=red, 2=green (ternary!)
// Heartbeat (every module, every 100ms)
CAN_ID: 0x0XX (where XX = module ID)
DATA: [status, voltage, temp, error_code]
Magnetic Pogo Connector
The Universal Connector
One connector design for ALL connections:
- Module ↔ Module (internal bus)
- Organism ↔ Organism (clasp)
- Organism ↔ Test jig (manufacturing)
- Organism ↔ Charger (power)
CONNECTOR FACE (6-pin minimal)
┌─────────────────────────┐
│ │
│ 🧲 🧲 │ ← Alignment magnets
│ │ (opposite polarity = snap)
│ ● ● ● │
│ CAN_H GND VCC │ ← Pogo pins (spring-loaded)
│ ● ● ● │
│ CAN_L ID AUX │
│ │
│ 🧲 🧲 │ ← Holding magnets
│ │
└─────────────────────────┘
PIN DEFINITIONS:
CAN_H - CAN bus high
CAN_L - CAN bus low
VCC - Power (5V nominal)
GND - Ground
ID - Module/organism identification
AUX - Auxiliary (future expansion)
Magnet Arrangement
POLARITY KEYING (prevents wrong orientation)
MODULE A (male) MODULE B (female)
[N] [S] [S] [N]
● ● ● ● ● ●
● ● ● ● ● ●
[S] [N] [N] [S]
═══════▶ SNAP! ◀═══════
Magnets guide alignment automatically
Wrong orientation = repels (won't connect)
Conical Interlocking Ring (Verjüngung)
Origin: Silvester 2025 insight Concept: Self-aligning tapered rings with active/passive interlocking
The Problem with Magnets Alone
Magnetic pogo connectors work, but:
- Limited holding force under stress
- No positive engagement feedback
- Can slip under vibration/impact
The Solution: Tapered Interlocking Rings
Each connector face has a conical ring at the maximum radius of the cube:
CONNECTOR CROSS-SECTION
MODULE A MODULE B
┌───────────────────┐ ┌───────────────────┐
│ ╱═════╲ │ │ ╱═════╲ │
│ ╱ 🧲 ╲ │ │ ╱ 🧲 ╲ │
│ ║ ●●●●● ║ │ │ ║ ●●●●● ║ │
│ ╲ 🧲 ╱ │ │ ╲ 🧲 ╱ │
│ ╲═════╱ │ │ ╲═════╱ │
└───────────────────┘ └───────────────────┘
↓ ↓
TAPERED INVERSE
(male) (female)
ENGAGEMENT SEQUENCE:
1. APPROACH 2. CONE GUIDES 3. INTERLOCK
╱═╲ ╱═╲ ══╦══
╱ ╲ ║ ║ ║ ║
╲ ╱ ║ ║
╲ ╱ ╲═╱ ══╩══
╲═╱
magnets taper centers rings lock
attract automatically mechanically
Active vs Passive Rings
Key insight: Not all modules need motorized rings.
BRAIN MODULE (Active) OTHER MODULES (Passive)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┌─────────────┐ ┌─────────────┐
│ ╱═╲ 🔄 │ motor-driven │ ╱═╲ ⌇ │ spring-loaded
│ │ │ │
┌────┼─────────────┼────┐ ┌────┼─────────────┼────┐
│╱═╲🔄│ [MOTOR] │╱═╲🔄│ │╱═╲⌇ │ │╱═╲⌇ │
│ │ ⚙️ │ │ │ │ SENSOR │ │
└────┼─────────────┼────┘ └────┼─────────────┼────┘
│ ╱═╲ 🔄 │ │ ╱═╲ ⌇ │
└─────────────┘ └─────────────┘
🔄 = motorized ring (active lock/unlock control)
⌇ = spring-loaded ring (passive, accepts interlock)
Brain module: Central motor drives all 6 face rings via mechanism Other modules: Spring detents only, cheap and simple
Self-Reconfiguration Capability
Active-passive pairing enables deliberate self-reconfiguration:
RECONFIGURATION SEQUENCE:
1. Brain detects damaged sensor
[BRAIN]══[MOTOR]══[SENSOR❌]══[LED]
2. Brain unlocks (motor rotates ring)
[BRAIN]══[MOTOR]══ [SENSOR❌] [LED]
(released)
3. Organism navigates to replacement
[BRAIN]══[MOTOR]══════════════[LED]
↓
[SENSOR✓]
4. Brain aligns and locks new sensor
[BRAIN]══[MOTOR]══[SENSOR✓]══[LED]
Benefits
| Feature | Benefit |
|---|---|
| Tapered cone | Self-centering alignment |
| Mechanical interlock | Stronger than magnets alone |
| Active rings (Brain) | Deliberate lock/unlock control |
| Passive rings (others) | Low cost, simple |
| 6-face connectivity | Full cube flexibility |
| Self-reconfiguration | Organism can change its shape |
Mechanism Considerations
Active ring mechanism (Brain module):
- Central motor with gear train to all 6 faces
- Or: 6 small servo motors (simpler but heavier)
- Ring rotation: ~30-45° to lock/unlock
Passive ring mechanism (Other modules):
- Spring-loaded detent (ball and groove)
- Accepts interlock when pushed
- Resists release until active ring rotates
Design trade-off: Complexity in Brain module, simplicity everywhere else
Physical Specifications
| Parameter | Value | Notes |
|---|---|---|
| Magnet type | Neodymium N52 | Strong, small |
| Magnet size | 6mm × 3mm disc | Standard size |
| Pogo pin pitch | 2.54mm | Standard, easy PCB |
| Pogo pin travel | 1-2mm | Spring compression |
| Holding force | ~2N per magnet | 4 magnets ≈ 8N total |
| Current rating | 2A per pin | Sufficient for motors |
| Contact resistance | <50mΩ | Gold-plated tips |
Connector PCB
PCB LAYOUT (both sides identical = reversible)
TOP VIEW SIDE VIEW
○ ○ ┌─────────────┐
◉ ◉ ◉ │ ○ ○ │ magnets (recessed)
◉ ◉ ◉ │ ◉◉◉◉◉◉ │ pogo pins
○ ○ │ ○ ○ │
└─────────────┘
○ = magnet pocket (3mm deep)
◉ = pogo pin through-hole
Module Types
Core Modules
| Module | Function | CAN IDs | Power | Components |
|---|---|---|---|---|
| Brain | Coordination, WiFi→NATS | 0x100-0x1FF | 200mA | ESP32, antenna |
| Motor | Drive wheels/legs | 0x200-0x2FF | 500mA+ | ESP32, H-bridge, encoders |
| Sensor | Environmental sensing | 0x300-0x3FF | 100mA | ESP32, IR, ultrasonic, IMU |
| LED | State display + IR beacon | 0x400-0x4FF | 150mA | ESP32, RGB LEDs, IR LED |
| Power | Battery, distribution | 0x500-0x5FF | N/A | BMS, regulators, monitoring |
| Gripper | Manipulation, clasp | 0x600-0x6FF | 300mA | ESP32, servo, force sensor |
Module Responsibilities
BRAIN MODULE (required, singleton)
├── WiFi connection to NATS
├── CAN bus arbitration
├── High-level behavior coordination
├── State machine execution
└── Firmware update distribution
MOTOR MODULE (1-4 per organism)
├── Wheel/leg control
├── Encoder feedback
├── Speed/position control loops
├── Collision detection (current sensing)
└── Emergency stop
SENSOR MODULE (0-N per organism)
├── Distance sensing (IR, ultrasonic)
├── Touch/bump detection
├── IMU (orientation, acceleration)
├── Environmental (temp, light)
└── Sensor fusion (local)
LED MODULE (required for swarm)
├── 3x3 RGB matrix (state broadcast)
├── IR beacon (positioning)
├── Pattern generation
├── Brightness control (power saving)
└── Attention signals (pulsing)
POWER MODULE (required)
├── Battery management (charge, discharge)
├── Voltage regulation (3.3V, 5V)
├── Current monitoring
├── Low-battery warning
└── Safe shutdown coordination
GRIPPER MODULE (optional)
├── Servo control
├── Force feedback
├── Clasp detection
├── Object manipulation
└── Docking assistance
Clasp: Organism-to-Organism Connection
The Dual-Purpose Connector
The magnetic pogo connector enables organism-to-organism "clasp":
CLASP SEQUENCE
1. APPROACH
🤖─────────────────────────────────🤖
Organism A sees B's "ready to teach" LED pattern
2. ALIGN
🤖─────────────────────📍🤖
IR positioning guides approach
3. DOCK
🤖══════════════🧲🧲══════════════🤖
Magnets snap together
4. CONNECT
🤖══════════════●●●●══════════════🤖
CAN buses bridge
A.CAN ←→ B.CAN
5. TRANSFER
🤖══════════════⟷⟷⟷══════════════🤖
Data flows (weights, state, updates)
6. VERIFY
🤖══════════════✓✓✓══════════════🤖
Both confirm successful transfer
7. RELEASE
🤖 🤖
Separate, continue independently
Clasp CAN Protocol
When two organisms clasp, their CAN buses bridge. Special protocol prevents collisions:
CLASP PROTOCOL
1. PRE-CLASP (before physical connection)
- Both organisms quiet their CAN buses
- Only heartbeat messages allowed
2. CONNECTED (physical connection made)
- Brain modules detect new CAN traffic
- Exchange organism IDs via CAN
- Negotiate master/slave (lower ID = master)
3. TRANSFER PHASE
- Master sends data packets
- Slave ACKs each packet
- CRC verification
4. COMPLETION
- Both update internal state
- Resume normal CAN traffic
- Physical disconnect safe
CAN MESSAGE FORMAT (clasp transfer):
ID: 0x7F0-0x7FF (reserved for inter-organism)
DATA[0]: packet_type (0=start, 1=data, 2=end, 3=ack, 4=nak)
DATA[1]: sequence_number
DATA[2-7]: payload
Lifeforce Economics of Clasp
| Action | Cost | Reward |
|---|---|---|
| Seek mate with update | -1 LF | |
| Successful dock | -0.5 LF | |
| Transfer (teacher) | +5 LF | |
| Receive (student) | +5 LF | |
| Verified working (both) | +5 LF each | |
| Net per successful clasp | +13.5 LF total |
Physical Form Factors
Phase 0: Box Robot
Simplest form, for initial testing:
BOX ROBOT (top view)
┌─────────────────────┐
│ │
│ ┌─────────────┐ │
│ │ LED MODULE │ │ ← 3x3 matrix on top
│ │ 🔴⚫🟢 │ │
│ │ 🟢🟢⚫ │ │
│ │ ⚫🟢🟢 │ │
│ └─────────────┘ │
│ │
│ ┌───┐ ┌───┐ │
│ │ M │ │ M │ │ ← Motor modules (wheels)
│ └───┘ └───┘ │
│ │
│ ┌───────┐ │
│ │ BRAIN │ │ ← Brain module (center)
│ └───────┘ │
│ │
└─────────────────────┘
Size: ~12cm × 12cm × 8cm
Modules: 4 (brain, LED, 2x motor)
Phase 1: Expandable Platform
EXPANDABLE ROBOT (side view)
LED MODULE
┌─────────┐
│ 🔴⚫🟢 │
│ matrix │
└────┬────┘
│ (connector)
┌────────┴────────┐
│ BRAIN MODULE │
│ + POWER │
│ │
├─────┬─────┬─────┤
│ CON │ CON │ CON │ ← Expansion connectors
└──┬──┴──┬──┴──┬──┘
│ │ │
┌──┴──┐ │ ┌──┴──┐
│MOTOR│ │ │MOTOR│
│ L │ │ │ R │
└─────┘ │ └─────┘
┌──┴──┐
│SENSOR│ ← Optional front sensor
└─────┘
Future: Modular Limbs
ARTICULATED ORGANISM
LED
┌───┐
│ │
┌──────┴───┴──────┐
│ BRAIN │
│ │
└──┬──┬──┬──┬──┬──┘
│ │ │ │ │
┌─┴┐┌┴─┐│┌─┴┐┌┴─┐
│L1││L2│││L3││L4│ ← Leg modules
└┬─┘└┬─┘│└┬─┘└┬─┘ (each with own ESP32)
│ │ │ │ │
┌┴┐ ┌┴┐┌┴┐┌┴┐ ┌┴┐
│F│ │F││S││F│ │F│ ← Foot/sensor modules
└─┘ └─┘└─┘└─┘ └─┘
Manufacturing Considerations
Module Production Pipeline
MANUFACTURING FLOW
1. PCB FABRICATION
└── Standard 2-layer PCB
└── Connector pads + pogo holes
└── Same design, different components
2. COMPONENT ASSEMBLY
└── ESP32 module (same for all)
└── Function-specific components
└── Pogo pins (press-fit)
└── Magnets (glued/press-fit)
3. FIRMWARE FLASH
└── Connect via test jig (same connector!)
└── Flash base firmware
└── Set module type ID
4. TEST
└── Snap into test harness
└── Automated CAN test
└── Function verification
5. INVENTORY
└── Modules stored by type
└── Ready for organism assembly
Test Jig Design
The universal connector means one test jig fits all:
TEST JIG
┌─────────────────────────┐
│ MODULE UNDER │
│ TEST │
│ │
│ 🧲 ●●●●●● 🧲 │ ← Same connector!
└───────────┬─────────────┘
│
│ (magnetic snap)
│
┌───────────┴─────────────┐
│ 🧲 ●●●●●● 🧲 │
│ │
│ TEST JIG BASE │
│ - CAN analyzer │
│ - Power supply │
│ - USB programmer │
│ - Status LEDs │
└─────────────────────────┘
Connection to Existing Architecture
Module → Cell Mapping
| Module | Software Cell Equivalent |
|---|---|
| Brain | Organism coordinator, state machine runner |
| Motor | Movement cells (forward, turn, stop) |
| Sensor | Perception cells (distance, collision) |
| LED | Output cells (state display, beacon) |
| Power | Lifeforce analog (energy management) |
| Gripper | Interaction cells (clasp, manipulate) |
CAN → NATS Bridge
MESSAGE FLOW
MODULE (CAN) NIMMERVERSE (NATS)
│ │
│ CAN frame │
│ ID: 0x301 │
│ DATA: [sensor, value] │
│ │ │
└─────────┼────────────────────────┘
│
▼
┌───────────┐
│ BRAIN │
│ MODULE │
│ │
│ CAN→NATS │
│ bridge │
└─────┬─────┘
│
│ NATS message
│ topic: organism.001.sensor.distance
│ data: {"type": "ir", "value": 42, "confidence": 0.9}
│
▼
NATS SERVER
│
▼
PHOEBE / NYX
Bill of Materials (Per Module)
Common Components (All Modules)
| Component | Qty | Est. Cost | Notes |
|---|---|---|---|
| ESP32-WROOM-32 | 1 | ~4 CHF | Main MCU |
| CAN transceiver (SN65HVD230) | 1 | ~1 CHF | CAN interface |
| Voltage regulator (AMS1117-3.3) | 1 | ~0.5 CHF | Power |
| Pogo pins (6-pack) | 1 | ~2 CHF | Connector |
| Neodymium magnets (4x) | 1 | ~2 CHF | Alignment |
| PCB | 1 | ~2 CHF | Custom, batch order |
| Capacitors, resistors | misc | ~0.5 CHF | Passives |
| Module base cost | ~12 CHF |
Function-Specific Additions
| Module Type | Additional Components | Est. Cost |
|---|---|---|
| Brain | PCB antenna trace | +0 CHF |
| Motor | DRV8833 + motors + wheels | +15 CHF |
| Sensor | IR + ultrasonic | +5 CHF |
| LED | WS2812B (9x) + IR LED | +3 CHF |
| Power | BMS + LiPo cell | +20 CHF |
| Gripper | SG90 servo + mech | +10 CHF |
Complete Phase 0 Organism
| Module | Qty | Cost |
|---|---|---|
| Brain | 1 | 12 CHF |
| Motor | 2 | 54 CHF (12+15 × 2) |
| LED | 1 | 15 CHF |
| Power | 1 | 32 CHF |
| Total | 5 | ~113 CHF |
Related Documents
- Nimmerswarm-Interface — LED state broadcasting + IR positioning
- Cellular-Architecture — Software cell design (maps to modules)
- infrastructure/Kallax-Grid-World — Physical environment
- cells/Cells-Technical-Reference — Cell state machine patterns
File: Modular-Organism-Design.md Version: 1.1 Created: 2025-12-29 Updated: 2025-12-31 (Silvester - added conical interlocking ring with active/passive mechanism) Session: Morning coffee + vermicelles session (dafit + Nyx) Status: Core hardware concept Philosophy: "One function, one module. Same connector everywhere. Brain decides the shape."
🔧🧲⚡ Snap together. Communicate. Evolve.