Auto-Rotate Dokumentation in README, F710-Blockierung bestätigt
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
| Modus | Taste (Controller) | Taste (Web-GUI) |
|
||||
|
||||
Reference in New Issue
Block a user