Files
nimmerverse-sensory-network/architecture/organisms/Modular-Organism-Design.md
dafit 709a48632a feat: Concept Token Pairs + Spatial Grounding (Silvester/New Year sessions)
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>
2026-01-01 21:25:13 +01:00

728 lines
25 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```c
// 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.*