EIntragungen

This commit is contained in:
2026-05-19 07:14:03 +02:00
parent 27fc2d2757
commit bc542bcad6
2 changed files with 88 additions and 0 deletions
+20
View File
@@ -84,3 +84,23 @@ Stand: 2026-05-18
- Die originale alte Kameraanbindung aus ExoMy war mit dem aktuellen Raspberry-Pi-Kamerastack nicht mehr funktionsfaehig. - Die originale alte Kameraanbindung aus ExoMy war mit dem aktuellen Raspberry-Pi-Kamerastack nicht mehr funktionsfaehig.
- Deshalb wurde die Kameraanbindung auf einen direkten MJPEG-Stream vom Host umgestellt. - Deshalb wurde die Kameraanbindung auf einen direkten MJPEG-Stream vom Host umgestellt.
- Wenn die Weboberflaeche offen war, kann nach Aenderungen ein hartes Neuladen im Browser noetig sein. - Wenn die Weboberflaeche offen war, kann nach Aenderungen ein hartes Neuladen im Browser noetig sein.
## Crabbing-Teststand
- Crabbing wird aktuell separat untersucht, weil dieser Modus auf dem neu aufgebauten Rover nicht sauber funktioniert, waehrend die anderen Fahrmodi brauchbar laufen.
- Das ESA-Original setzt im Crabbing-Modus grundsaetzlich denselben Lenkwinkel auf alle sechs Raeder.
- Daraus folgt: Das Problem liegt wahrscheinlich eher in der aktuellen mechanischen oder elektrischen Zuordnung des neu aufgebauten Rovers als in einer spaeteren Abweichung vom Originalcode.
Bisher beobachtete Reaktionen im Crabbing-Modus:
- `FL`: links richtig, rechts falsch
- `FR`: links kein Einschlag, rechts kein Einschlag
- `CL`: links kein Einschlag, rechts kein Einschlag
- `CR`: links falsch, rechts richtig
- `RL`: links richtig, rechts falsch
- `RR`: links richtig, rechts falsch
Wichtige Betriebsregel:
- `docker/run_exomy.sh --autostart` niemals per `sudo` starten
- nur als Benutzer `pi`, sonst wird wegen `~` das falsche Verzeichnis gemountet und ExoMy startet kaputt
+68
View File
@@ -0,0 +1,68 @@
#!/usr/bin/env python3
import sys
try:
import Adafruit_PCA9685
except ImportError:
print("Adafruit_PCA9685 ist nicht installiert. Dieses Skript ist fuer den Raspberry/Container gedacht.")
sys.exit(1)
WHEEL_TO_PIN = {
"fl": "pin_steer_fl",
"fr": "pin_steer_fr",
"cl": "pin_steer_cl",
"cr": "pin_steer_cr",
"rl": "pin_steer_rl",
"rr": "pin_steer_rr",
}
WHEEL_TO_NEUTRAL = {
"fl": "steer_pwm_neutral_fl",
"fr": "steer_pwm_neutral_fr",
"cl": "steer_pwm_neutral_cl",
"cr": "steer_pwm_neutral_cr",
"rl": "steer_pwm_neutral_rl",
"rr": "steer_pwm_neutral_rr",
}
def main() -> int:
if len(sys.argv) != 4:
print("Aufruf: python3 test_single_steer_wheel.py <config.yaml> <fl|fr|cl|cr|rl|rr> <winkel>")
return 1
config_path = sys.argv[1]
wheel = sys.argv[2].lower()
angle = float(sys.argv[3])
if wheel not in WHEEL_TO_PIN:
print("Unbekanntes Rad:", wheel)
return 1
config = {}
with open(config_path, "r", encoding="utf-8") as handle:
for raw_line in handle:
line = raw_line.strip()
if not line or line.startswith("#") or ":" not in line:
continue
key, value = line.split(":", 1)
config[key.strip()] = value.strip()
pin = int(config[WHEEL_TO_PIN[wheel]])
neutral = int(config[WHEEL_TO_NEUTRAL[wheel]])
pwm_range = int(config["steer_pwm_range"])
pwm_value = int(neutral + angle / 90.0 * pwm_range)
print("wheel:", wheel)
print("pin:", pin)
print("neutral:", neutral)
print("angle:", angle)
print("pwm:", pwm_value)
pwm = Adafruit_PCA9685.PCA9685(busnum=1)
pwm.set_pwm_freq(50)
pwm.set_pwm(pin, 0, pwm_value)
return 0
if __name__ == "__main__":
raise SystemExit(main())