Zum Inhalt springen

Verifikation ​

Status: Nachweisregister. Jeder Abschnitt hält fest, was gelaufen ist, auf welcher Stufe, das beobachtete Ergebnis und seine Grenze. Stufen: Q0 statisch/Unit (Sekunden), Q1 CAD-Verifikation (Minuten), Q2 Simulation und Integrations-Smoke-Tests, Q3 Hardware. Nichts hiervon wurde an einem physischen Roboter durchgeführt (noch kein Q3).

2026-11-01 — Druckpaket nach der zweiten Durchsicht eines Bauenden ​

PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Erkennung von Lochstufenstrido_publish.print_bridges.hole_steps auf jedem Teil des Druckpakets, so wie es liegtQ04 Stufen gefunden und ausgeschnitten: je ein Lagersitz in inner_tibia und outer_tibia, zwei 625ZZ-Sitze (16,3 → 12,3 mm) in outer_shoulder_frame (die Teile, die der Bauende genannt hat); Stufen unter einer Extrusionslinie (0,4 mm) und Ränder des Teils werden übersprungen; nach dem Ausschnitt findet die Erkennung keine mehr. Schnittbilder an der Stufe zeigen weites Loch, Schlitz, Quadrat, enges Loch. Das Review hat die ausgeschnittenen Teile gesliced: outer_shoulder_frame druckt Schlitz, Quadrat und Loch bei 4,2/4,4/4,6 mm ohne Stützen; in beiden Tibias liegt der Sitz unter einem Auge 7,4 mm über dem Bett, und PrusaSlicer füllt die Bohrung trotzdem mit Stützen (die Notizen sagen jetzt, sie zu blockieren); die Schnitthöhen sind auf die Slicing-Schichten eingerastetgeometrische Erkennung; ein nicht runder Sitz wird nicht behandelt; Stützenplatzierung des Slicers an diesen drei Teilen von Hand geprüft
Druckbarkeit mit neuer Ausrichtung und Ausschnittenmake printability (PrusaSlicer 2.9.6)Q134 Teile und 13 Platten: 0 fail, 4 warn (dünne Deckschichten in den Upstream-Servohaltern, 0,38–0,53 mm); Druckpaket 958 g, 100 h; Servohalter 19 mm hoch wie ein U, 2 % Überhang; inner_tibia auf der flachen Seite (1638 mm² Bettkontakt, vorher 71 mm²)Slicer-Schätzung; noch kein Teil gedruckt
Tests für Festigkeit und Druckpaketpython -m strido_verify.strength, pytest tests/verify/test_print_kit.py tests/verify/test_strength.pyQ119 Prüfungen ok (Querschnitte aus den ausgeschnittenen STLs); 6 Tests bestanden—
PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Festigkeit mit der steifen langen Koppelpython -m strido_verify.strengthQ119 Prüfungen, 19 ok, 0 warn, 0 fail; Knicken der langen Koppel S = 2,53 (Upstream-Koppel 0,34, ADR-010), Zug/Druck S = 4,34 einschließlich der Biegung aus dem 2-mm-Versatz des Schafts (Secans-Formel; Befund der Durchsicht, der erste Lauf prüfte nur F/A und ergab 10,3), Lochleibung am Auge S = 7,1; kleinster Faktor jetzt die Tibia-Hälften (2,22); keine akzeptierte Abweichung mehr (accepted: {}); Masse 3,07 kg (+24 g für die vier Koppeln), Fußkraft bei der Landung 45,2 NQuerschnitte nur aus Wänden, Werte aus dem PETG-Datenblatt
Prüfung rot gesehen beim Entwurf der Koppelpython -m strido_verify.rom, Sweep der Nachbarabstände (Wegwerfskript, 4 Oberschenkel × 43 Unterschenkel-Posen je Bein)Q1eine mittig auf der Bolzenlinie liegende Koppel kam dem Femur bei gestrecktem Knie bis auf 0,25 mm nahe und berührte bei voller Beugung die Unterlegscheibe der kurzen Koppel; der ROM-Sweep verschob die Unterschenkelgrenze von −45° auf −50° (sichtbar als Diff in hardware/joint_limits.yaml). Schaft 2 mm neben der Bolzenlinie mit den Upstream-Augen: jeder Nachbar ≥ 1,0 mm (Femur 1,1, kurze Koppel 1,4), Gelenkgrenzen unverändertpunktweise abgetastete Abstände; der Nachweis sind die Prüfungen unten
Vollständige CAD-Verifikationmake verifyQ1Durchdringung 0 ungeklärte Überlappungen (4 Posen, 483 Körper); Freigang 0 fail, 4 knapp (unverändert); ROM-Grenzen unverändert (nur die Kollisionsnachweise außerhalb der Grenzen nennen die neue Koppel); Passungen 0 fail (Gleitlagersitze 4,85–4,95 mm in den 5,0-mm-Bohrungen); Verkabelung 174 Prüfungen, 0 fail, 1 warn; Geometrie-Bindungen synchronnominelle Geometrie
Ausrichtung des Druckpaketsmake print, make printability (PrusaSlicer 2.9.6)Q1Femur, obere Halterung, Femur-Servoverbinder, Seitenträger und rechte Schulter neu ausgerichtet; Kamerasockel auf seiner Grundfläche; steife lange Koppel flach, ohne Stützen; die Servohalter bleiben aufrecht (Durchsicht: auf der Seite lägen die Vorbohrungen für das Hüfthorn waagrecht, außer Reichweite der Lochkompensation nach ADR-009). 34 Teile und 13 Platten: 0 fail, 4 warn (dünne Stellen in den Upstream-Servohaltern); Druckpaket 1002 g, 103 h (vorher 1021 g, 104 h). Anlass war die Durchsicht eines Bauenden: die Platten behielten die Lage der veröffentlichten STLs (obere Halterung 56 mm hoch auf 19 × 6 mm Grundfläche, Femur mit 2 mm² Bettkontakt)Slicer-Schätzung; noch kein Teil gedruckt
Tests für Festigkeit und Übersetzungpytest tests/verify/test_strength.py, make driftQ0Festigkeitstests 4 bestanden (Ausnahmemechanismus mit einem eingefügten ADR-Eintrag geprüft; das Flächenträgheitsmoment der steifen Koppel aus den Wänden stimmt auf 2 % mit der Formel des Hohlquadrats überein)—

2026-10-31 — Deutsche Seite, KI-Assistent, MCP-Server und Agent Skill ​

PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Neu: Übersetzungskataloge vollständig und strukturell intaktnode docs-site/scripts/i18n-catalogues.mjs check (in make drift)Q05746 von 5746 deutschen Segmenten; 0 defekt (Code-Spans, Mathematik, Linkziele, HTML-Tags, Fettmarkierungen, Tabellenzellen, Zeilenzahl)nur Struktur: Wortlaut per Stichprobe und Terminologie-Durchgang geprüft, nicht von einem muttersprachlichen Lektorat
Prüfung rot gesehendieselbeQ0schlug mit 5431/5433 fehl, solange zwei neue Absätze unübersetzt waren, und während der Übersetzung bei abweichenden Fettmarkierungen; eine vom Übersetzer umgruppierte Zahl (1126 → 1.126) macht das Segment jetzt unübersetzt, statt eine veraltete Zahl zu behalten (der Test schlägt mit der früheren Regel fehl)—
Tests der Übersetzungs-Enginenode --test 'docs-site/scripts/*.test.mjs' (in make test-web)Q07 bestanden: jede unübersetzte Seite rendert zurück zu ihrer englischen Quelle, deutsche Überschriften behalten die englischen IDs (Wiederholungen nummeriert wie bei VitePress), Zahlen werden in deutscher Schreibweise übernommen, das Zusammenführen behält/öffnet/verwirft Segmente, Strukturprüfungsynthetische Segmente plus jede veröffentlichte Seite
Build der deutschen Seitemake docs-build, gebautes HTML verglichenQ0baut mit der Prüfung toter Links; 60 Seiten × Überschriften-IDs identisch in /docs/** und /de/docs/** (0 Abweichungen); jede deutsche Seite zu 100 % übersetzt—
Deutsche Seite im Browserverwaltetes Chrome, /de/, /de/docs/shopQ2deutsche Navigation, Startseite, Shop (Plan A € 978,76), Seitenleiste, Sprachumschaltervisuelle Stichprobe
Neu: Tests des Assistenzdienstescd assistant && npm test (in make test-web)Q034 bestanden: Eigentümerbindung, Prüfung von Header-Secret und cxu_-Token (Ablehnungen gecacht), Reihenfolge der SSE-Events, Stopp speichert stopped, Neu-Generieren ohne doppelte Frage, letzte Tool-Runde mit tool_choice: none, Magic Bytes und Grenzen von Anhängen, Kontingent pro Nutzer, Body-Grenzen, MCP initialize/list/callgefälschter Modell-Transport, Fixture-Wissensbasis
Assistent gegen das echte Modellmake assistant + make docs, verwaltetes ChromeQ2Keyring claude-sonnet-5: „Schlaufe des vorderen Knies“ beantwortet mit 32 mm = 1,2 × 25,6 mm, mit KaTeX und vier Quellenlinks; angeheftete Seitenleiste bleibt über Seitenwechsel erhalten; ein eingefügtes 2400 × 1600-Bild von Schritt 1 auf /de/docs/assembly/ auf Deutsch erkannt, mit Link zu Schritt 1; Stopp und dann Wiederholen speicherte eine Frage und eine Antwort; Unterhaltungen über die API aufgelistet, umbenannt, gelöschtlokale Entwicklungsidentität; Zustand der Keyring-Zugangsdaten auf dem Stack nicht geprüft
MCP mit einem echten Client@modelcontextprotocol/sdk Streamable-HTTP-Client gegen /mcpQ2Werkzeuge search_docs, read_page, list_pages, search_parts; deutsche Suche nach „loop key arming“ liefert den Glossareintrag mit seinem /de/-Link; read_page liefert den Abschnitt der Verkabelungslistelokal, ohne App-Token (Entwicklungsidentität)
Produktions-Images und Identitätdocker compose -f docker-compose.docs.yml -f docker-compose.cortex.yml (beide Targets)Q2schreibgeschützte Container starten; Assistent ohne Header-Secret 401, mit ihm liefert er /me (ohne Keyring deaktiviert) und schreibt in sein Volume; ein gefälschtes cxu_-Token 401; Doku 200 auf /de/docs/aiCortex-Gateway-Route, Keyring und App-Key erst nach dem Deploy geprüft
0.3.1 deployt (zwei Dienste, eigene Gateway-Route)cortex deploy (Job mvwtwfpf-530e539a), cortex apps show strido, curlQ2gesund auf c80f807 („SSO route HTTP 302, upstream HTTP 200; 2 live containers“); /api/health offen (61 en / 61 de Seiten, Modell konfiguriert); /, /de/, /llms.txt, /api/assistant/me, /mcp leiten ohne Sitzung zum SSO-Login um; ein gefälschter cxu_-Bearer erreicht den Assistenten und bekommt 401 aus der Token-Prüfung von Cortexangemeldete Browser-Seiten nicht erneut geprüft (die Sitzung des Relay-Tabs war abgelaufen)
MCP auf der deployten Seite mit einem echten App-TokenToken erzeugt mit cortex api post /api/v1/apps/strido/tokens (1 Tag), SDK-Client, danach widerrufenQ2tools/list 4 Werkzeuge; deutsches search_docs „Hauptsicherung Bemessung“ antwortet aus dem deutschen Glossar; search_parts „servo“ liefert die Stücklistenzeile; /api/agent/llms.txt 200, Skill-ZIP 615 655 Bytes; das Token bekommt 403 auf /api/assistant/*. cortex apps connect strido antwortet 404: Control erfasst .cortex/package.json nur für von Cortex erstellte Apps (TODO)ein Token, ein Client

2026-10-31 — Kabelbaum im CAD verlegt und geprüft ​

PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Neu: Verkabelungsprüfungpython -m strido_verify.wiring (in make verify)Q137 Kabel in 71 Abschnitten, 174 Prüfungen: 0 fail, 1 warn (W23, das eigene Kabel des LiDAR: Länge nicht veröffentlicht). Reichweite (zugeschnittene Abzweige mit Reserve und Crimp gezählt): am knappsten die vorderen Knie-Servokabel (243/241 von 250 mm nutzbar aus 260 mm), W19 STEMMA QT (125 von 140 mm). Vorrat: 18 AWG reicht nur, wenn die Stückliste auf 2 m pro Farbe erhöht wird. Hüftschlaufen: vorne 30/32 mm gegenüber 28,9/30,7 mm benötigt (1,2 × Kabelbinder-zu-Kabelbinder 24,1/25,6 mm), hinten 22 mm gegenüber 19,4 mm. Abstand in 13 Posen: kein Leiter durch ein Teil; nächstes bewegtes Teil ≥ 1 mmNenngeometrie; Biegeradien und Schlaufenform nicht modelliert; Kabelausgänge und gelieferte Kabellängen teils angenommen (TODO)
Prüfung während der Konstruktion rot gesehendasselbeQ1erste Läufe schlugen fehl: W00/W15/W17/W19/W20 und drei vordere Servokabel zu kurz, Vorrat an 18 AWG und STEMMA QT zu knapp, die vordere Bus-Brücke 0,3 mm im FL-Unterschenkelservo an der inneren Hüftgrenze, der gesteckte Stecker der Akkuleitung im vorderen UBEC, ein Leiter außerhalb seiner verlegten Hülle gezeichnet (die Prüfung kontrolliert jetzt jeden gezeichneten Leiter). Nach der Reichweitenkorrektur aus dem Review schlugen die vorderen Knie-Servokabel (258/259 mm) und W22 (196 mm) fehl: Kreuzung der Knieleitungen zum Bushalter verlegt und der vordere Öffnungs-Kabelbinder auf den natürlichen Kabelweg, W22 jetzt aus zugeschnittenem 22-AWG-Draht. Jeweils in den Daten oder im CAD behoben, nicht durch eine lockerere Grenze—
Review-Befunde behobenReviewer-Subagent auf die Änderung, dann make verifyQ1Reichweite ignorierte die Reserve der Abzweige und zählte das PCA-Ende als Stecker (beides behoben; Regressionstest schlägt mit der alten Regel fehl); Kabelbinder-Sockel waren nicht im Hindernisraster (jetzt Katalogteile); W10/W11 waren als Paare auf einen INA260 mit zwei Anschlüssen gezeichnet (jetzt Einzeldrähte + W24 Masse); W01 ohne Umwicklung, obwohl ungesichert (Spiralschlauch pro Kabel); W04-Hauptstrang fehlte in der Liste der Hauptsicherung; Montageanleitung verlegte den Kabelbaum, bevor die Verkabelung der Rückwand existierte, und steckte den Pi vor einer Versorgungsprüfung an (Schritt 20 erledigt jetzt beides, in dieser Reihenfolge)—
Unit-Tests der Verkabelungsprüfungpytest tests/verify/test_wiring.py tests/verify/test_electronics.pyQ017 bestanden: Reichweitenreserve, ein zugeschnittener Abzweig, der seine Reserve braucht, längster Servokabel-Abzweig, ein doppelt belegter Anschluss und ein Paar, das beide Schienen belegt, eine Schlaufe 1 mm kürzer als nötig, ein 22-AWG-Servoabzweig hinter der 25-A-Sicherung, ein Abzweig, der an seiner eigenen Sicherung gemessen wirdsynthetische Zeilen plus die versionierte YAML
Vollständige CAD-Verifikation mit den Kabeln und den neu platzierten Leistungsteilenmake verifyQ1bestanden: Durchdringung 0 ungeklärte Überlappungen (erster Lauf fand den gedrehten LiDAR-Adapter in einer Schraubensäule des Sockels, behoben), Abstand unverändert (0 fail, 4 knapp), Sensoren: Kabel blockieren keinen LiDAR-Strahl und bleiben außerhalb des Kamerabilds, Verkabelung 173 ok / 1 warnKabel von den Teil-zu-Teil-Prüfungen ausgenommen (sie haben ihre eigene); Kabelbinder-Sockel werden geprüft
Elektronikprüfung der verlegten Kabelpython -m strido_verify.electronicsQ081 Prüfungen bestanden (3 ohne Reserve); der alte 18-AWG-Abgriff hinter der 25-A-Sicherung wäre durchgefallen und ist entfernt (eigene 14-AWG-Leitung des Logikhalters)Strombelastbarkeitstabelle, kein thermisches Modell
Veröffentlichte Artefaktemake bom models manual renders viewer catalogQ1Pläne A 978,76 € / B 1.126,97 € / C 1.145,24 € / D 987,73 € (Servoverlängerungen raus, Spiralschlauch, Kabelbinder-Sockel, Crimpkontakte, Lötzinn, 2. STEMMA QT und 2. 18-AWG-Satz rein); CAD-Masse 3,008 → 3,050 kg (Kabel pro Instanz gewogen, Pauschalposten entfernt); Montageanleitung 22 Schritte (Verkabelung Schritte 14–16 und 20), neues Rendering wiring.png, GLB mit dem KabelbaumPreise beobachtet am 2026-10-31

2026-10-31 — Dokumentationsseite: Shop, Druckpaket, Produktseiten, Lernen-Wiki ​

PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Shop-Preise reproduzieren den Stücklisten-Optimiererverwaltetes Chrome auf der gebauten Seite: kompletter Roboter im Warenkorb, Pläne A–DQ2Warenkorbsummen 963,67 € / 1.107,16 € / 1.128,66 € / 972,64 € mit 8 / 4 / 9 / 8 Shops, gleich wie make bom; Paketkarte zeigt 963,67 € inkl. Versand (924,14 € Teile + 39,53 €); Reviewer hat dieselben Summen aus shop.json nachgerechnetAngebote beobachtet am 2026-10-30; nichts bestellt
Download des DruckpaketsDruckpaket-Seite, kompletter Roboter, ZIP von der Seite abgefangenQ2strido-print-package-1-robot.zip, 49 Dateien (README, Profil, 34 STLs mit Stückzahl im Namen, 13 Druckplatten), unzip -t fehlerfrei; Teileblatt 67 Stück, 719 g Graphit, 301 g Lime, 104 h 16 minZIP im Browser erzeugt, gespeichert (unkomprimiert)
Produktinformationen vollständigmake bom, pytest tests/workspace/test_products.pyQ059 Stücklistenzeilen und 34 Druckteile abgedeckt, jeder Lernen-Link löst auf; der Test zeigt auch, dass ein entferntes Teil und ein toter Wiki-Link gemeldet werdenFormulierungen geprüft, Datenblattwerte teils aus dem Gedächtnis (im Review markiert)
Seitenbuild und Linksmake docs-buildQ0baut; Prüfung toter Links schlägt weiterhin bei einer fehlenden öffentlichen Datei (/viewer/missing.glb) und einem Verzeichnislink (/viewer/) fehl und akzeptiert vorhandene STL/GLB/INI/Log-Dateiennur interne Links werden geprüft
Seitenauditverwaltetes Chrome, alle Seiten der Seitenleiste bei 1440×900 und 390×844, hell und dunkelQ20 defekte Bilder, 0 fehlerhafte interne Links, 0 Konsolenfehler, kein horizontaler Überlauf auf Smartphones; 35 Befunde (3 defekt, 18 verwirrend) behoben, auf der neu gebauten Seite erneut geprüftvisuelle Prüfung, keine automatisierte Barrierefreiheitssuite
Ausweichlösung Schraubensicherung korrigiertpython -m strido_verify.fitsQ1223 Schrauben ok 86 / warn 137 / fail 0, Sitze 32 / fail 0 (unverändert); Maßnahmen für schwache Vorbohrungen und ADR-009 nennen jetzt eine mit Sekundenkleber gehärtete Vorbohrungnur Textänderung
Neu: Festigkeit von Beinen und Gelenkenpython -m strido_verify.strengthQ119 Prüfungen: 18 ok, 1 warn, 0 fail. Knicken der langen Koppel in der Beinebene S = 0,34 in der ungünstigsten Pose mit Knieservo im Blockierzustand (bekannte Schwachstelle, ADR-010, begrenzt durch min_safety 0.3); Biegung Femur S = 3,2, Tibia S = 2,2, Lochleibung am Hüft-Servohorn S = 2,6; Drehmomentgrenzen für Vorbohrungen 0,05–0,35 N·m; Reviewer hat Femur-Biegung, Knicken und ein Vorbohrungs-Drehmoment von Hand nachgerechnet und in der ersten Version vertauschte Koppelachsen gefunden (behoben: Bolzenachse aus den Bohrungen); Querschnittsberechnung per Unit-Test gegen b·h³/12 geprüft (Mutation, die die Lochausrichtung beibehält, schlägt fehl: Fläche 104 statt 56 mm²)statisch, nur Wandquerschnitte, Blockiermoment des Servos als Auslegungslast (Rücktreiben braucht mehr), angenommene Landung mit 3 × Gewicht, K = 0,7 quer zur Ebene; keine Ermüdung/Kriechen; kein physischer Test
Datenblattprüfung von Abweichungen und ProduktspezifikationenRecherche-Agent gegen Herstellerquellen (Hobbywing, Gens ace, Raspberry Pi, Seeed, NXP, ST, TI, Slamtec, SKF, Koyo, Prusament, Bossard)statischUBEC 15 A Spitze bestätigt (20 A war das Flugzeugmodell); LiPo 60C; alle gelisteten Produktspezifikationen ok; Filamentangebote waren PLA (jetzt PETG); Kühler „JST“ unbestätigt (entfernt)Lagerkennwerte von Markenteilen als Obergrenze für No-Name-Teile verwendet
Amazon-Warenkorb mit einem Klickangemeldetes Chrome, gp/aws/cart/add.html mit einer ASIN (kein Klick auf der Seite)Q2leitet über associates/addtocart auf einen leeren Warenkorb um: Das Formular benötigt ein Associates-Tag; ersetzt durch die geführte Kasse (window.open in einem Tab pro Shop, Checkliste gespeichert)Amazon-Richtlinien können sich ändern
Pläne nach den PETG-Angebotenmake bomQ0A 965,27 € (8 Shops), B 1.107,41 € (4), C 1.130,26 € (9), D 974,24 € (8)Preise beobachtet am 2026-10-30/31
LaTeX-Rendering des Wikis und des Festigkeitsberichtsmake docs-build, gebautes HTML durchsucht, verwaltetes Chrome bei 1440 px und 390 pxQ0/Q20 MathJax-Fehlerknoten, 0 nicht gerenderte $…$-Paare in den gebauten Seiten (15 einzeilige <details>-Antworten mussten zum Rendern aufgeteilt werden); Theorieseiten mit je 73–121 Gleichungen; kein horizontaler Seitenüberlauf bei 390 px (abgesetzte Gleichungen scrollen innerhalb der Spalte)visuelle Stichproben auf 4 Seiten, nicht jede Gleichung

2026-10-31 — Überarbeitung v0.2.0 (Harness, Pakete, neue Prüfungen, Korrekturen) ​

PrüfungBefehlStufeBeobachtetes ErgebnisGrenze
Lint, strikte Typen (Core, NT-X, Workspace), Import-Schichtenmake lint typecheck layersQ0ruff sauber; mypy: keine Probleme in 21 Dateien; 3 import-linter-Verträge eingehaltenCAD/Verify/Publish-Pakete werden gelintet, aber nicht strikt typisiert
Generierte Quellen synchronmake driftQ0Geometrie-Bindings, Elektronikbericht und NT-X-Assets aktuell; rot gesehen, als geometry.py umformatiert wurde und als sich Grenzen ändertenText-Assets byteweise verglichen; NT-X-Meshes nur auf Vorhandensein
Python-Tests mit Coverage-Schwelle (80 %)make testQ073 bestanden, Coverage 83,7 %Module, die in NT-X / über stdio laufen, sind von der Coverage ausgenommen und durch die Smoke-Tests abgedeckt
Elektronik: Firmware-Header vs. hardware/electronics.yaml in beide Richtungen, eindeutige GPIO/I²C, Servokanäle, Lasten ≤ Sicherungen ≤ Strombelastbarkeit der Leitungenpython -m strido_verify.electronicsQ044/44 Prüfungen bestanden; Tests zeigen, dass ein vertauschter Pin, ein in der YAML fehlender Header-Pin, ein doppelter Kanal, eine Adresskollision, eine unterdimensionierte Leitung und eine UBEC-Überlast alle fehlschlagenStröme sind Datenblatt-/[ESTIMATE]-Werte, nicht gemessen
Firmware-Kern (Kinematik mit neuen Grenzen, Protokoll, Sicherheit)make test-firmwareQ015/15 bestandennativer Host-Build, nicht der ESP32
Durchdringung, 479 Körper, 4 Posenmake verifyQ10 ungeklärte Überlappungen (292 klassifizierte Überlappungen im Stand)Mesh-Geometrie, Nennmaße
Neu: Passungen und Toleranzen jeder Schraube (223) und jedes Lager-/Buchsensitzes (32)python -m strido_verify.fitsQ10 fail, 137 mit einer Maßnahme für den Erbauer (enges Loch an einer Mutterverbindung aufbohren, mit Sekundenkleber gehärtete Vorbohrung / Lochkompensation bei schwacher Vorbohrung), 86 ok; 29 der Warnungen sind die akzeptierten Vorbohrungen der Upstream-Servohalterungen (ADR-009: ohne die Akzeptanz fail). Rot gesehen mit 168 → 0 Fehlern beim Korrigieren des Modells und dreier echter Defekte (unten); Einschraubtiefe zählt nur Material, das die Schraube schneidet; ein Lager ohne Sitz schlägt fehlCAD-Maße mit einem FDM-Schwindungsmodell von 0,15 mm; reale Drucke variieren je nach Drucker
Neu: Freigang bewegter Teile, 13 Betriebsposenpython -m strido_verify.clearanceQ10 fail (< 0,3 mm), 4 knapp (0,73–0,79 mm an der äußeren Hüftgrenze), 80 rotatorische Schnittstellen, 72 Gelenkschnittstellen (nur über echte Gelenke/Koppelbolzen); rot gesehen: beide Vorderfüße kollidierten in hips_in (50 fails) vor der Korrektur der Grenze; die Einschränkung der Ausnahme deckte das Paar RR-Schulter / Rückschale auf (0,73 mm, zuvor ausgenommen, weil es sich in der CAD-Pose berührte)Nenngeometrie; Servospiel nicht modelliert
Bewegungsbereich mit gespiegeltem Partnerbein und 0,3 mm Abstandpython -m strido_verify.romQ1Hüftgrenzen jetzt FL/RL −17,5…50/45°, FR/RR −50/−45…17,5° (Einwärtsweg von 25–30° reduziert, damit sich die Füße nicht treffen können)Raster 5°/2,5°
Sensor-Sichtfeldpython -m strido_verify.sensor_fovQ10 von 720 LiDAR-Strahlen blockiert, Kamera sieht 0 % Roboter, 5 Posen—
Neu: Druckpaket vollständig und druckbarpytest tests/verify/test_print_kit.pyQ134 Teiletypen / 67 Stück, jede STL eine geschlossene Mannigfaltigkeit innerhalb 220 × 220 × 250 mm, jedes Stück auf genau einer 3MF-Druckplatte; rot gesehen: Kamerabasis und Neigeplatte fehlten auf den Druckplatten (trimesh verwirft 3MF-Knoten namens camera*)Slicer-Einstellungen nicht simuliert
Stückliste deckt jedes CAD-Teil und Befestigungselement abmake bomQ1alle Strategien abgedeckt; niedrigste Summe 963,67 € (8 Shops)Preise beobachtet am 2026-10-30
MuJoCo-Gangmake sim-walkQ20,15 m/s für 10 s → 1,104 m, Höhe 0,174 m, Gieren −1,7°Kurshaltung über den Simulator
Gazebo Harmonic Gang ohne GUI, Gait-Node (ROS 2 Jazzy, Docker, arm64)make sim-gazeboQ28 s bei 0,15 m/s → 0,98 m vorwärts, seitlich −0,003 m, Höhe 0,178 m, Rollen/Nicken < 0,01 rad; joint_states, IMU, Scan (min. 0,49 m), Kamera und Odom veröffentlichen allenur Simulator; derselbe Container wie das Roboter-Image ohne den Pi-Kamera-Stack
Veröffentlichte PPO-Policy mit den neuen Grenzenmake rl-evalQ2Befehl 0,2 m/s → 0,215 m/s Mittel, 2,15 m in 10 s, aufrechtnur MuJoCo
PPO-Pipelinemake rl-smokeQ220 k Schritte in 6 s, Policy exportiert und evaluiert (nicht auf Gehen trainiert)nur Pipeline-Prüfung
Neu: Hardware-MCP-Server über stdiomake mcp-smokeQ210 Tools gelistet, 9/9 Aufrufe okmeasure_gap durch die CAD-Tests abgedeckt, nicht durch den Smoke-Test
Neu: NT-X-Integration in der NT-X-Harness-Umgebungmake ntx-smokeQ2Katalogroboter (12 Gelenke, 3,008 kg) und Skill laden; steht 2 s in NT-X MuJoCo (Basis 0,178 m, Neigung 0,0°); Adapter strido-serial registriert; RobotPort ↔ Fake-MCU auf Protokollebene: die echte Laufzeitausgabe von pd-pose (Verstärkungen + Schwerkraft-Vorsteuerung bis 0,06 N·m) → Positionsziel → Zustand mit zurückgemeldeter Befehlssequenz, IMU-Ausfall löst den Schutzstopp aus und hält ihn, Schutzstopp rastet ein, Schließen gibt das Gerät frei; rot gesehen, als der Modellpfad falsch warFake-MCU spricht das echte Protokoll, ist aber nicht die Firmware; Hardware-Sitzungen brauchen außerdem eine Basisschätzung (NT-X-Odometrieprüfung)
Neu: CAD-Regressionstests für die behobenen Passungsdefektemake test-cadQ13 bestanden (keine Schraubenpassung schlägt fehl; alle 4 Hüftdrehpunkt-Schrauben greifen in eine Servohalterung inkl. der Varianten _fl/_fr; Schrauben des LiDAR-Sockels greifen in den Sockel); rot gesehen mit der alten Vorbohrtiefe von 6 mm am Sockel (2 fehlgeschlagen: solid/fail)dasselbe CAD-Maßmodell wie die Passungsprüfung
Neu: Dokumentationsseite und 3D-Ansichtmake docs-build, Vorschau in ChromeQ2Seite baut; 3D-Ansicht lädt das GLB, Explosion / Schritt / Schalen / Befestigungselemente / Auswahl funktionieren (ausgewähltes Teil zeigt Name, ID, Anzahl, Schritt); Teilekatalog zeigt 76 Teiletypen; defekt gesehen: jedes einzigartige Mesh wurde zusätzlich am GLB-Ursprung in Millimetern exportiert (ein 100 m großer „Keil“ um den Roboter), bis die Geometrie ohne eigenen Knoten gespeichert wurdenur Desktop-Chrome; keine Mobil-/Safari-Prüfung
Harness-Prüfungen (Drift der Agent-Konfiguration, Env-Doku, Arch-Scan, Secrets, npm audit)make harness-checkQ0bestanden; gitleaks keine Lecks; npm audit 0 Schwachstellen; drei CAD-Definitionsmodule aus v0.1 im nur schrumpfenden Arch-Scan-Register als Baseline erfasstSemgrep/Trivy übersprungen (aufwendige Sicherheitsprüfung aus)
Neu: Druckbarkeit: jedes Teil von einem echten Slicer geslictmake printability (PrusaSlicer 2.9.6, hardware/print/prusaslicer.ini)Q134 Teiletypen und 13 Druckplatten: 0 fail. Jedes Teil wie vorgeschrieben geslict (Stützstrukturen/Brim) ohne Fehlermeldung und mit vollständigem G-Code; gestützte Teile zusätzlich ohne Stützstrukturen geslict und zeigen nur Probleme, die Stützstrukturen beheben; jede Druckplatte druckt alle ihre Teile ohne Werkzeugpfadkonflikte. Druckpaket 1021 g PETG (719 g Graphit, 301 g Lime: je eine 1-kg-Spule), 104 h. Wandstärkenscan 0 fail, 5 warn (Upstream-Femur und Servohalterungen: Wände 0,65–0,8 mm, druckbar, aber dünn). Rot gesehen: Elektronikdeck ohne Stützstrukturen (schwebende Brückenanker unter der IMU-Tasche); Tibias/kurze Koppeln/Hüftbolzen in veröffentlichter Ausrichtung (geringe Betthaftung, gefunden, sobald gestützte Teile den zusätzlichen ungestützten Slice erhielten); Druckplatten mit 4 mm Teileabstand (Werkzeugpfadkonflikte); Deck mit aus der Druckliste entfernten Stützstrukturen (Unit-Test des Parsers und ein Prüflauf)Slicer-Simulation, kein Testdruck; dünne Bereiche kürzer als 5 mm und schmaler als 1 mm zählen als Spitzen
Neu: Spannungsdomänen der Elektronikpython -m strido_verify.electronicsQ016 Versorgungs-/Signalprüfungen bestanden: keine Schiene kann ein zulässiges Maximum überschreiten, jeder Nennpegel liegt im Bereich; 3 bestehen ohne Reserve, weil das Schienenminimum unter die Nennwerte reicht (Servo-PWM und LCD bei 3,3 V, dem niedrigsten Pegel, den sie akzeptieren); rot gesehen: Servoschiene bei der 7,4-V-Einstellung des UBEC und ein 6,3-V-UBEC (Tests)Nennwerte aus Herstellerseiten/Datenblättern; Schienentoleranzen teils [ESTIMATE]; es gibt keine eigene Leiterplatte, daher gilt kein ERC/DRC/SPICE
Neu: Dokumentationsseite auf Cortexdocker compose -f docker-compose.docs.yml up --build docs; cortex deploy --ref b0fe000 (Job mvvsdmmc-108830e0)Q2lokaler Container: /healthz ok, /docs/downloads 200, Baupaket 17,5 MB application/zip (57 Dateien, unzip -t fehlerfrei), PDF 13,9 MB; deployt 0.2.1: cortex apps show strido gesund („SSO route HTTP 302, upstream HTTP 200“); nicht authentifizierte Anfragen an /, /docs/downloads, das ZIP, das PDF und /healthz leiten alle (302) zum Cortex-SSO-Login um; angemeldet (Chrome): Startseite wird gerendert, ZIP/PDF/GLB-Downloads antworten 200 mit dem richtigen Typeine Browsersitzung; kein Lasttest

Gefundene und behobene Defekte (Prüfungen und Review) ​

DefektGefunden durchBehebung
Vorbohrungen des LiDAR-Sockels 9 mm tief für Schrauben, die 10 mm herausragen: Die Schrauben laufen auf Grund, bevor sie die Schale klemmenPassungen (solid an der Spitze)Vorbohrtiefe 11 mm (PEDESTAL_PILOT_DEPTH)
Vordere Servohalterungen (dieselbe STL wie hinten) haben keine Hüftdrehpunkt-Vorbohrung auf der Seite, die die Vorderbeine nutzen: 5,5 mm massiver KunststoffPassungen (solid)Strido-Varianten left_servo_mount_fl, right_servo_mount_fr mit einer Ø2,5-mm-Vorbohrung (ADR-004)
Servohorn-Schrauben des rechten Femurs 3,7 mm neben den Löchern des gedruckten Femurs (STEP spiegelt die rechten Femurs; eine STL druckt alle vier)Passungen (solid)hardware/assembly/corrections.yaml: Scheibenhorn −30°, Femur-Verbinder +22° an FR/RR
Mittelschrauben des Oberschenkel-Servohorns am linken Bein zeigten vom Servo weg (Kopf im Verzahnungshohlraum platziert)Passungen (nothing holds the screw)Kopfsenkung = längste stirnseitig offene Bohrung in strido_cad.fasteners
Beide Vorderfüße (und beide Hinterfüße) konnten sich an den inneren Hüftgrenzen unter dem Körper treffenFreigang (hips_in)Bewegungsbereich-Durchlauf mit gespiegeltem Partnerbein und 0,3 mm Abstand (ADR-005)
Kamerabasis und Neigeplatte fehlten auf den 3MF-Druckplatten von v0.1.0Druckpaket-TestKnotennamen der Druckplatten mit Präfix part_
Hüft-Scheibenhörner des rechten Beins durch die Femur-Korrektur verschoben (falscher Körper)Bewegungsbereich (äußere RR-Grenze auf 20° eingebrochen)Korrekturen gelten pro Starrkörper
Der serielle NT-X-Port lehnte jeden Befehl des mitgelieferten pd-pose-Skills ab (Schwerkraft-Vorsteuerung ist nie null) und meldete bei IMU-Ausfall einen ebenen, ruhenden RoboterReview; make ntx-smoke verwendet jetzt die echte LaufzeitausgabeVorsteuerung entfernt, kp <= 0 abgelehnt, IMU-Ausfall führt in den sicheren Zustand, veraltete Frames verworfen
CAD-Cache lieferte nach einem Revert Meshes einer älteren Quelle aus (Manifest pro Digest, Meshes an festen Pfaden)make check schlug fehl, nachdem ein absichtlicher Prüfungsbruch zurückgenommen wurdeein Manifest, nur gültig für den Digest des letzten Builds; rot/grün gesehen durch Brechen und Wiederherstellen von PEDESTAL_PILOT_DEPTH
Freigang-Ausnahme deckte jedes in der CAD-Pose berührende Paar ab, nicht nur GelenkeReviewAusnahme auf Körper beschränkt, die durch ein Gelenk oder einen Koppelbolzen verbunden sind; deckte ein knappes Paar auf (0,73 mm)
Elektronikdeck ohne Stützstrukturen gedruckt: Der Boden der IMU-Tasche ist eine 18-mm-Brücke mit schwebenden AnkernDruckbarkeit (Slicer)Deck als supports=True deklariert
Tibias (135 mm aufrecht), kurze Koppeln und Hüftlagerbolzen haben in der veröffentlichten Ausrichtung zu wenig BettkontaktDruckbarkeit (ungestützter Analyse-Slice)im Druckpaket flach umorientiert; Tibias 1,5 h statt 2,5 h
3MF-Druckplatten mit 4 mm Abstand gepackt: Benachbarte gestützte Teile erzeugten widersprüchliche WerkzeugpfadeDruckbarkeit (Slicer)10 mm Abstand, eng anliegende Stützstrukturen, First-Fit-Packung (13 Druckplatten)
Ecken des XT60-Fensters ließen 0,26 mm dünne Stege im Blendendom; im FDM-Druck verrundete Innenecken würden die eckige XT60-Haube klemmenDickenscan, ReviewDom auf einen oberen und einen unteren Bogen reduziert; 0,5 mm Dog-Bone-Eckfreistiche in Blende und Klemmring
Eine 6,2-mm-Schraubendreherbohrung im 6 mm dicken Bushalter-Trennsteg ließ 0,1 mm dünne StegeDickenscanZugangsschlitz statt der Bohrung
Abnahmefenster des UBEC (6,0 ± 0,1 V) ließ 6,1 V an einem für 6,0 V spezifizierten Servo zuSpannungsdomänen-Prüfung5,8–6,0 V im Leerlauf akzeptieren

2026-10-30 — v0.1.0 ​

Auszüge der Befehlsausgabe sind pro Zeile verlinkt (docs/verification/logs/); absichtliche Prüfungsbrüche stehen in gates.txt. Befehle beziehen sich auf das Layout von v0.1.0 (tools/…).

PrüfungBefehlStufeErgebnisLog
Befestigungselemente aus den gemessenen Lochstapeln abgeleitet; platzierte Befestigungselemente müssen den Regelsummen entsprechenmake verify (hole_stacks.py, fasteners.py)statischalle Stapel zugeordnet; Platzierungen = Regelanzahlen (Prüfung nachweislich rot durch Auftrennen der geteilten Tibia-Bolzenstapel)verify.txt
Durchdringung von 479 Körpern (gedruckt, gekauft, Befestigungselemente) im Stand 170 mm, Hocke 120 mm, hoch 210 mm und in der CAD-Poseinterference_check.pystatisch0 ungeklärte Überlappungen in allen 4 Posen; jede verbleibende Überlappung ist klassifiziert (Gewindeeingriff, Sitzkontakt, Gelenk, Upstream-Passung, Upstream-Befestigungselement auf seiner gemessenen Lochachse) – interference.mdverify.txt
LiDAR-Verdeckung (720 Strahlen) und Kamera-Eigensicht, 5 Posen inkl. Trot und voller Hüftabduktionsensor_fov.pystatisch0 Strahlen blockiert; Roboter in 0,0 % des Kamerabilds – sensors.mdverify.txt
Bewegungsbereich: Raster Oberschenkel × Unterschenkel (5°) bei null Abduktion, Übertragungswinkel ≥ 25°; Hüftbereich im Stand und in mittlerer Poserom_sweep.pystatischGrenzen wie in hardware/joint_limits.yaml eingecheckt (kein Diff nach dem Lauf)verify.txt
Generierte Geometrie in Firmware/Python entspricht der YAMLcodegen.py --checkstatischkeine Abweichungverify.txt, test.txt
Druckbarkeit: geschlossene Mannigfaltigkeit, passt in 220 × 220 × 250 mm, liegt auf dem Bettmake printstatisch32 Teiletypen / 67 Stück bestandendocs.txt
Stückliste liefert jedes gekaufte Teil und Befestigungselement des CAD für die Angebote, die jede Strategie kauft (Packungen aufgerundet, Befestigungselemente + max(2, 10 %) Reserve)make bomstatischalles abgedeckt in allen 4 Strategien; Prüfung nachweislich rot durch Entfernen des M3 × 10-Vorratsdocs.txt
Python-Kern: Protokoll (CRC-Vektor gemeinsam mit der Firmware, COBS, Beschädigung, Resynchronisation), IK/FK, Inverse des Kniekoppelgetriebes, Gait-Grenzen inkl. der Kniekurbel-Begrenzung, CLI-Kalibrierung und die Weigerung der CLI, wenn der Controller die Servos entspannt hält (Fake-Controller an einem Pseudoterminal)pytestUnit27 bestanden; der Kurbelgrenzen-Test schlägt fehl, wenn die Begrenzung entfernt wirdtest.txt, gates.txt
Firmware-Kern: Kinematik, Protokoll, Watchdog, Not-Aus, entprellte Akku-Abschaltung, kein Ansteuern ohne Power-Monitor (Kalibrierung am Prüfstand erlaubt), NaN-Ablehnungpio test -e nativeUnit15/15 bestanden; der NaN-Test schlägt mit der alten Begrenzung fehltest.txt, gates.txt
Firmware-Build für den XIAO ESP32-S3pio run -e xiao_esp32s3Builderfolgreich, RAM 8,0 %, Flash 16,0 %firmware.txt
mcu_bridge (ROS-2-Jazzy-Container) gegen einen Fake-Controller an einem rohen PseudoterminalWegwerfskriptIntegrationSTATE → /joint_states (Go2-Namen) und /battery_state (7,7 V, −1,2 A); Befehl → JOINT_COMMAND; NaN-Befehl verworfen; relax → JOINT_COMMAND(relax); Not-Aus → ESTOP; kein Frame verlorenmcu_bridge_fake.txt
MuJoCo, Produktions-Gait (Kurshaltung nutzt den Gierwinkel des Simulators)make sim-walkSimulation0,15 m/s: 1,10 m in 10 s, Höhe 0,174 m, Gieren −1,7°; Drehung 0,6 rad/s: 197,9° in 6 s (−162,1° umgebrochen)mujoco_walk.txt
Gazebo Harmonic Gang ohne GUI, Gait-Node (ROS 2 Jazzy, Docker, arm64)make sim-gazeboSimulation1,00 m in 8 s bei 0,15 m/s, seitlich 0,12 m, Rollen/Nicken < 0,1 rad, alle Sensor-Topics veröffentlichengazebo.txt
PPO-Policy, 20 M Schritte (1734 s, CPU), Anstiegsbegrenzung der Firmware modelliertmake rl-train, evaluate.pySimulationMuJoCo, 10 s pro Befehl: vx 0,2 → 0,210 m/s (Gieren 2°), 0,15 → 0,152 m/s, 0 → steht, −0,1 → −0,068 m/s, vy 0,1 → 0,023 m/s (schwach), wz 0,5 → 232° in 10 s (−128,4° umgebrochen)rl_eval.txt
Dieselbe Policy in Gazebo über policy_node (Sim-to-Sim)make sim-gazebo POLICY=build/rl/ppo-v1/policy.npzSimulation0,82 m in 8 s bei 0,15 m/s, seitlich 0,10 m, aufrechtgazebo.txt
Abruf der Hersteller-CADmake vendor-cad—8 von 9 Downloads per SHA-256 verifiziert; die Littelfuse-Datei liegt hinter einem Formular (manueller Download, Hüllkörper als Ersatz)gates.txt

Nicht verifiziert ​

  • Nichts wurde gedruckt, montiert, verkabelt oder eingeschaltet. Passungen sind gegen CAD und Datenblätter geprüft, nicht gegen gedruckte Teile (rechnen Sie damit, Loch- und Lagerpassungen an Ihren Drucker anpassen zu müssen).
  • Servostrom, Laufzeit und thermisches Verhalten sind Schätzungen (Elektronik). Der Wert des OE-Pull-ups setzt voraus, dass der Pull-down der PCA9685-Platine ≥ 10 kΩ ist (messen Sie OE während des Resets wie beschrieben).
  • Datenblatt-Hüllkörper (keine Hersteller-CAD): Servos (Upstream-STEP-Modell), WAGO 221-415, LiPo, UBEC, Taster, LiDAR-USB-Adapter (Größe unbestätigt).
  • Upstream-Gelenkbefestigungselemente werden aus Lochstapeln mit ungefährer Kopfseite und Mutterausrichtung platziert; sie sind Teil der statischen Durchdringungsprüfung, aber nicht des Bewegungsbereich-Durchlaufs.
  • Das Knie ist in Gazebo/MuJoCo ein Drehgelenk; Nachgiebigkeit und Spiel des Koppelgetriebes werden nicht simuliert. Die gelernte Policy hat keine echte Servodynamik gesehen.
  • Der Kamera-Node auf dem Pi 5 benötigt den libcamera-Fork von Raspberry Pi (nicht im Docker-Image); robot.launch.py wurde nicht auf einem Pi ausgeführt.

MIT-Lizenz. Mechanik abgeleitet von Yertle (Jerome Graves). CAD, Simulation und native Tests sind kein Hardware-Nachweis – siehe Verifikation.