projekte:sekwai:start
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
projekte:sekwai:start [2025/06/27 03:49] – removed - external edit (Unknown date) 127.0.0.1 | projekte:sekwai:start [2025/06/27 03:49] (current) – ↷ Page moved and renamed from projekte:projekte:sekwai to projekte:sekwai:start dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== seKwaI ====== | ||
+ | Absolut! Hier ist eine umfassende Projektdokumentation, | ||
+ | --- | ||
+ | |||
+ | ===== Probleme ===== | ||
+ | |||
+ | * BNO085 nicht auf 100Hz gestellt -> Test mit SerialPlot -> Pitch immer 4-5 Werte gleich in der Kurve | ||
+ | * Garbage Collector Probleme bei zu komplexen print Anweisungen -> Loop hat immer Spikes -> SerialPlot | ||
+ | * Motoren verdreht | ||
+ | * 1 Motor invertiert | ||
+ | * Looptime falsch berechnet (es war nicht der ganze Code der Loop in der Zeitberechnung) | ||
+ | * sleep_ms anstelle von sleep_us -> ungenaue Verzögerung der Looptime ! | ||
+ | |||
+ | **Tuning** | ||
+ | The final Step is to Tune the PID loop Kp, Ki & Kd parameters. | ||
+ | |||
+ | A good starting point is to slowly increase Kp until the robot oscillates around the balance point and can catch a fall. | ||
+ | Next, start Kd at around 1% the value of Kp and increase slowly until the oscillations disappear and the robot glides smoothly when pushed. | ||
+ | Finally, start with Ki around 20% of Kp and vary until the robot " | ||
+ | |||
+ | ===== Links ===== | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | **Projektdokumentation: | ||
+ | |||
+ | **Version: | ||
+ | **Datum:** 26. Mai 2025 | ||
+ | |||
+ | **1. Projektübersicht und Ziele** | ||
+ | |||
+ | **1.1. Projektidee** | ||
+ | Entwicklung eines selbstbalancierenden, | ||
+ | |||
+ | **1.2. Kernziele** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **1.3. Angestrebte Funktionen** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **2. Systemarchitektur** | ||
+ | |||
+ | **2.1. Komponentenübersicht** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **2.2. Aufgabenverteilung** | ||
+ | |||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * Neues MessKi-Gerät " | ||
+ | * Nutzt `SerialInput` oder `SCPIUsbInput` für die Kommunikation mit dem RP2350. | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **3. Hardwarekomponenten** | ||
+ | |||
+ | **3.1. Mikrocontroller: | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **3.2. Inertial Measurement Unit (IMU): Bosch BNO085** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **3.3. Motorisierung: | ||
+ | * | ||
+ | * | ||
+ | * Ihr `HopfNRoll`-Projekt ist hier eine wertvolle Referenz für das Protokoll. | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **3.4. Fahrererkennung: | ||
+ | * | ||
+ | * 2x robuste Mikroschalter oder Endschalter. | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * 2x oder 4x Force Sensitive Resistors (FSRs). | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **3.5. Lenkmechanismus (Optionen)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * Ein Dreh-Potentiometer (z.B. 10kΩ linear) erfasst den Neigungswinkel der Stange. | ||
+ | * | ||
+ | * | ||
+ | * Ein kleiner analoger Thumbstick, montiert an einer Festhalte-Struktur. | ||
+ | * | ||
+ | |||
+ | **3.6. Stromversorgung** | ||
+ | * | ||
+ | * | ||
+ | * Der Konverter muss den Strombedarf des RP2350, der IMU und ggf. anderer 3.3V-Komponenten decken können. | ||
+ | * | ||
+ | |||
+ | **3.7. Optionale Komponenten** | ||
+ | * | ||
+ | * Ein kleiner Summer für akustische Signale. | ||
+ | * | ||
+ | |||
+ | **3.8. Materialliste (geschätzt, | ||
+ | * | ||
+ | * | ||
+ | * 2-4x Fußschalter oder FSRs | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4. Software-Implementierung: | ||
+ | |||
+ | **4.1. Entwicklungsumgebung** | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.2. Softwarestruktur (RP2350)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.3. IMU-Integration (BNO085)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.4. Balance-Algorithmus (PID-Regler)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.5. Motoransteuerung (Hoverboard-Controller)** | ||
+ | * | ||
+ | * | ||
+ | * Nimmt Soll-Geschwindigkeitswerte für linken und rechten Motor (z.B. -1000 bis +1000). | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.6. Fahrererkennung** | ||
+ | * | ||
+ | * Liest die Zustände der Fußschalter-GPIOs oder die Werte der FSR-ADCs. | ||
+ | * Gibt `True` zurück, wenn ein Fahrer erkannt wird (z.B. beide Schalter gedrückt / ausreichender Druck auf FSRs). | ||
+ | * | ||
+ | |||
+ | **4.7. Lenkungslogik** | ||
+ | * | ||
+ | * Liest die Werte der Lenksensoren (Drucksensoren oder Potentiometer). | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.8. Kommunikation mit MessKi (Protokoll)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.9. Sicherheitsfunktionen und Fehlerbehandlung** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **4.10. Kalibrierungsroutinen** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * Laden des Offsets beim RP2350-Start. | ||
+ | * | ||
+ | * Für Potentiometer: | ||
+ | * Für Drucksensoren: | ||
+ | |||
+ | **5. Software-Implementierung: | ||
+ | |||
+ | **5.1. Neues MessKi-Gerät: | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * Liest kontinuierlich Daten vom seriellen Input (`await self._read_from_active_input()`). | ||
+ | * Parst die empfangenen Telemetrie-Strings/ | ||
+ | * | ||
+ | * Holt Gamepad-Daten vom `GamepadHandler`. | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **5.2. Input-Handler Konfiguration (Serial/ | ||
+ | * In der `SegwayConfig` wird eine `SerialInputConfig` definiert. | ||
+ | * Der `port` muss vom Benutzer in MessKi auf den korrekten virtuellen COM-Port / `/ | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **5.3. Channel- und Measure-Definitionen in MessKi (für `SegwayConfig`)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **5.4. Steuerung über MessKi (Gamepad, API)** | ||
+ | * Das Gamepad in MessKi wird *nicht* für die direkte Links/ | ||
+ | * Es kann verwendet werden, um eine **Soll-Geschwindigkeit** (vorwärts/ | ||
+ | * Die API-Endpunkte (`@device_action`) ermöglichen das Setzen von Parametern (PID, Limits) und das Auslösen von Aktionen (Kalibrierung, | ||
+ | |||
+ | **5.5. Datenvisualisierung und -logging** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **6. Mechanische Konstruktion** | ||
+ | |||
+ | **6.1. Rahmen und Plattform** | ||
+ | * | ||
+ | * Eine Plattform für den Fahrer, die ausreichend Platz bietet und die Montage der Fußschalter/ | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **6.2. Montage der Komponenten** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **6.3. Lenkmechanismus (falls zutreffend)** | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **6.4. Verkabelung und Stromverteilung** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * Gute Abschirmung für Signalleitungen (IMU, UART), um Störungen zu vermeiden. | ||
+ | |||
+ | **7. Testplan und Inbetriebnahme** | ||
+ | |||
+ | **SEHR WICHTIG: Bei allen Tests mit Motorkraft äußerste Vorsicht walten lassen! Das Segway muss immer gesichert sein, um unkontrolliertes Wegfahren oder Umkippen zu verhindern! Beginnen Sie mit aufgebockten Rädern.** | ||
+ | |||
+ | **7.1. Modultests (RP2350)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **7.2. Statische Balance-Tests (gesichert)** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | 1. Nur P-Anteil (I und D auf 0): P erhöhen, bis leichte Oszillationen auftreten. Dann P etwas reduzieren. | ||
+ | 2. D-Anteil hinzufügen: | ||
+ | 3. I-Anteil hinzufügen (vorsichtig): | ||
+ | * | ||
+ | |||
+ | **7.3. Dynamische Balance-Tests (mit Fahrer, SEHR GUT GESICHERT!)** | ||
+ | * | ||
+ | * In einem Bereich mit viel Platz und ohne Hindernisse. | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **7.4. Lenkungstests** | ||
+ | * Wenn Balance grundlegend funktioniert, | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **7.5. MessKi-Integrationstests** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **7.6. Sicherheitsüberprüfungen** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **8. Mögliche Erweiterungen und Zukünftige Arbeiten** | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | **9. Sicherheitshinweise (SEHR WICHTIG!)** | ||
+ | |||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | --- | ||
+ | |||
+ | Diese Dokumentation ist ein umfangreicher Leitfaden. Beginnen Sie mit kleinen, überschaubaren Schritten und testen Sie jede Komponente gründlich, bevor Sie sie integrieren. Das Debugging und Tuning des Balance-Reglers wird die meiste Zeit in Anspruch nehmen. | ||
+ | |||
+ | Viel Erfolg bei diesem spannenden Vorhaben! |