Auto-Rotate Dokumentation in README, F710-Blockierung bestätigt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-30 07:18:12 +02:00
co-authored by Claude Sonnet 4.6
parent 13af8052da
commit 0c4cafd12b
+54
View File
@@ -286,6 +286,60 @@ math.atan((self.wheel_rx + self.wheel_fx) / self.wheel_ry))
--- ---
## Auto-Rotate (automatisches Drehen zu einem Ziel-Heading)
Die Admin-Seite (`http://<IP>:8000/admin.html`) enthält im IMU-Bereich eine Funktion, mit der der Rover automatisch zu einem eingegebenen Ziel-Heading dreht.
### Bedienung
1. Zielwinkel eingeben (0–359°, wobei 0 = Nord, 90 = Ost, 180 = Süd, 270 = West — **nach Nord-Kalibrierung**)
2. „Zu Heading drehen" drücken
3. Der Rover dreht auf der Stelle und stoppt automatisch bei ±1° Genauigkeit
4. „Drehung abbrechen" bricht den Vorgang vorzeitig ab
### Technischer Ablauf
```
Admin-API
→ startet auto_rotate_ros.py via docker exec im Container
→ setzt rosparam /auto_rotate_active = True
→ joystick_parser_node ignoriert ALLE Eingaben (Web-GUI, D-Pad, F710)
→ auto_rotate_ros.py dreht mit Point-Turn-Modus bei fester Geschwindigkeit (~20 %)
→ bei Ziel erreicht (oder Abbruch):
→ rosparam /auto_rotate_active = False ← erst jetzt wird Steuerung freigegeben
→ letzter Fahrmodus (vor der Drehung) wird wiederhergestellt
```
### Wichtige Hinweise
- **Geschwindigkeit:** Fest auf ~20 % (entspricht `vel=4` durch die Expo-Kurve), unabhängig vom eingestellten Speed-Limit in der Admin-Seite.
- **Nord-Kalibrierung muss gesetzt sein:** Der Zielwinkel bezieht sich auf den kalibrierten Norden. Ohne Kalibrierung dreht der Rover zum magnetischen Roh-Heading.
- **Kein manuelles Eingreifen während der Drehung:** Joystick, D-Pad und F710 sind über `rosparam /auto_rotate_active` vollständig blockiert. Erst nach Abschluss oder Abbruch wird die Steuerung freigegeben.
- **Fahrmodus:** Der Rover wechselt intern in den Point-Turn-Modus und kehrt danach automatisch in den zuvor aktiven Modus zurück (Ackermann, Point Turn oder Crabbing).
- **Neigungskalibrierung:** Wenn die IMU-Neigung genullt wurde, gilt das nur für die Anzeige — die Rotation selbst nutzt nur den Yaw-Winkel.
### Dateien
| Datei | Beschreibung |
|---|---|
| `scripts/auto_rotate_ros.py` | Läuft im Docker-Container, nativer rospy-Node |
| `scripts/imu_rotate.py` | Steuerung des docker-exec-Prozesses, Status-Tracking |
### Deploy nach Änderungen
```bash
# auto_rotate_ros.py oder joystick_parser_node.py geändert:
scp scripts/auto_rotate_ros.py pi@192.168.1.9:/home/pi/ExoMy_Software/scripts/
scp src/joystick_parser_node.py pi@192.168.1.9:/home/pi/ExoMy_Software/src/
ssh pi@192.168.1.9 "sudo docker restart exomy_autostart"
# imu_rotate.py oder exomy_admin_api.py geändert:
scp scripts/imu_rotate.py scripts/exomy_admin_api.py pi@192.168.1.9:/home/pi/ExoMy_Software/scripts/
ssh pi@192.168.1.9 "sudo systemctl restart exomy-admin-api.service"
```
---
## Fahrmodi ## Fahrmodi
| Modus | Taste (Controller) | Taste (Web-GUI) | | Modus | Taste (Controller) | Taste (Web-GUI) |