Mr. Tree
Well-known member
Prompt (Anfrage) : Hier stehen einige defines eines c++ codes, bitte übersetzte die englischen erklärungen dahinter ins deutsche und gib es als code wiedereinfügbar aus:
ChatGPT: Klar, ich helfe dir dabei, die englischen Erklärungen zu übersetzen! Bitte gib mir den C++-Code mit den #define-Anweisungen und den englischen Kommentaren, und ich werde sie ins Deutsche übersetzen.
EINFÜGEN DER MODESCTION ---> ANTWORT:
Hier noch der Teilrest:
ChatGPT: Klar, ich helfe dir dabei, die englischen Erklärungen zu übersetzen! Bitte gib mir den C++-Code mit den #define-Anweisungen und den englischen Kommentaren, und ich werde sie ins Deutsche übersetzen.
EINFÜGEN DER MODESCTION ---> ANTWORT:
Code:
////////////////////////////////////////////////////////////////////////////////////////////////////
//Modsection START
//Bitte beachte, dass es Fehler gibt. Wenn du jedoch Fehler findest, die den Betrieb des Mähers auf einem Gebiet vollständig stoppen, lass es mich bitte wissen...
#define ROBOT_CONTROL_CYCLE 20 // (ms) Zykluszeit beim Mähen
#define ROBOT_IDLE_CYCLE 20 // (ms) Zykluszeit beim Laden
//Experimentelle Modfunktionen/Optionen/Geschwindigkeiten/Zeit usw. für verschiedene Bewegungsoperationen. Bitte lies die Beschreibungen. Viel Spaß.
//Allgemeine Mähzeiten und Geschwindigkeiten mit ihren Parameterbedingungen. Dieser Abschnitt ist der einfachste, um ihn an die eigenen Bedürfnisse anzupassen... also fühl dich frei und passe ihn einfach an, wie du es auf dem Rasen haben möchtest
#define OVERRIDE_MOW_SPEED false // Dies ist eine Übergangslösung, damit die Geschwindigkeit bei .325 nicht sofort auf die gewünschte Geschwindigkeit gesetzt wird
#define MOWSPEED 0.50 // (m/s) Normale Mähgeschwindigkeit, wie du sie in der App einstellen würdest
#define MOWSPINUPTIME 10000 // (ms) Fügt Zeit hinzu, um den Mähmotor vor dem Starten der Bewegung zu drehen, verwende einen hohen Wert, wenn du ESCAPE_LAWN aktivierst, um eine gute Ablesung der Leerlaufdrehzahl des Mähmotors zu erhalten
#define OVERLOADSPEED 0.16 // (m/s) Wenn ein Überlaststrom eines Motortreibers erkannt wird, verwendet der Mäher OVERLOADSPEED
#define TRACKSLOWSPEED 0.25 // (m/s) z.B. die Dockinggeschwindigkeit oder Funktionen der Zukunft
#define NEARWAYPOINTSPEED 0.25 // (m/s) Die Geschwindigkeit des Mähers, wenn er einen Wegpunkt erreicht/verlässt
#define NEARWAYPOINTDISTANCE 0.50 // (m) Der Abstand des Mähers, wenn er sich einem Wegpunkt nähert oder diesen verlässt, wodurch NEARWAYPOINTSPEED des Mähers ausgelöst wird
#define FLOATSPEED 0.25 // (m/s) Bei GPS-FLOAT-SOLUATION wird der Mäher FLOATSPEED verwenden
#define SONARSPEED 0.15 // (m/s) Wenn Sonar aktiviert und verwendet wird, wird der Mäher SONARSPEED beim Sonar-Trigger verwenden
#define OBSTACLEAVOIDANCESPEED 0.35 // (m/s) Bei Ausweichoperationen vor Hindernissen wird der Mäher OBSTACLEAVOIDANCESPEED verwenden
#define DOCKSPEED 0.60 // (m/s) Die Geschwindigkeit, mit der der Mäher den Dockpfad nach dem Mähen oder beim Auslösen des Dockens erreicht
#define DOCKPATHSPEED 0.30 // (m/s) Die Geschwindigkeit des Mähers auf dem Dockpfad
#define ESCAPE_REVERSE_WAY 0.40 // (m) Der Abstand, den der Mäher rückwärts fährt, wenn ESCAPE_REVERSE aktiviert wird, wenn ein Hindernis erkannt wird, z.B. durch Stoßfänger oder GPS (keine Geschwindigkeit)
#define ESCAPE_FORWARD_WAY 0.35 // (m) Der Abstand, den der Mäher vorwärts fährt, wenn ESCAPE_FORWARD aktiviert wird, wenn ein Hindernis durch OBSTACLE_ROTATION (keine Rotation) erkannt wird
#define GLOBALSPEEDLIMIT true // Wenn true, werden MOTOR_MAX_SPEED und MOTOR_MIN_SPEED mögliche Fehler oder Eingaben direkt in motor.cpp begrenzen
#define MOTOR_MAX_SPEED 0.60 // (m/s) Maximale Mähgeschwindigkeit --> hat wenig mit der Konfiguration der Geschwindigkeiten zu tun: dient als Sicherheitsmechanismus
#define MOTOR_MIN_SPEED 0.05 // (m/s) Minimale Mähgeschwindigkeit --> hat wenig mit der Konfiguration der Geschwindigkeiten zu tun: dient als Sicherheitsmechanismus
#define DISTANCE_RAMP true // Verwendet NEARWAYPOINTDISTANCE, MOTOR_MIN_SPEED und die tatsächliche Set-Geschwindigkeit, um eine indirekte Verzögerungsrampe zum nächsten Wegpunkt zu berechnen. Wenn dies aktiviert ist, wird NEARWAYPOINTSPEED in linetracker.cpp deaktiviert
#define DISTANCE_RAMP_MINSPEED 0.15 // (m/s) Dies ist die minimale Geschwindigkeit der Rampe
//Rotationsgeschwindigkeiten, auch diese lassen sich leicht an die eigenen Erwartungen anpassen --> wird auf angularRamp() mit weniger Parametern geändert
#define ROTATION_RAMP true // Verwendet eine Rampe für angletotargetfits (sehr gut), ROTATETOTARGETSPEEDs sind deaktiviert, wenn dies aktiviert ist
#define ROTATION_RAMP_MAX 75 // (deg/s) Maximale Rotationsgeschwindigkeit
#define ROTATION_RAMP_MIN 18 // (deg/s) Minimale Rotationsgeschwindigkeit
#define ROTATETOTARGETSPEED1 65.0 // (deg/s) Wenn der Winkelunterschied zum Zielpunkt mehr als ANGLEDIFF1 beträgt, wird dieser Wert verwendet... Warnung, ein hoher Wert führt zu extremem Getriebemotorstress (auf eigenes Risiko testen, 65deg/s ist immer noch sicher und schnell)
#define ROTATETOTARGETSPEED2 40.0 // (deg/s) Wenn der Winkelunterschied zum Zielpunkt zwischen ANGLEDIFF1 und ANGLEDIFF2 liegt, wird dieser Wert verwendet...
#define ROTATETOTARGETSPEED3 25.0 // (deg/s) Wenn der Winkelunterschied zum Zielpunkt weniger als ANGLEDIFF2 beträgt, wird dieser Wert verwendet...
#define ANGLEDIFF1 30.0 // (deg) Wenn der Winkel zum Zielpunkt mehr als ANGLEDIFF1 beträgt --> wird ROTATETOTARGETSPEED1 verwendet
#define ANGLEDIFF2 15.0 // (deg) Wenn der Winkel zum Zielpunkt zwischen ANGLEDIFF1 und ANGLEDIFF2 liegt --> wird ROTATETOTARGETSPEED2 verwendet, bei einem kleineren Wert wird ROTATETOTARGETSPEED3 verwendet...
#define ANGLEPRECISE 5.0 // (deg) Wenn der Winkel zum Zielpunkt innerhalb von 5° liegt, fährt der Mäher mit dem Linetracker.cpp Stanley-Code und der NEARWAYPOINT-Einstellung fort
#define TRANSITION_ANGLE 25 // (deg) Wenn der nächste Punkt diesen Winkel unterschreitet, stoppt der Mäher nicht vollständig, sondern macht eine Übergangsbewegung mit TRANSITION_SPEED
#define TRANSITION_SPEED 0.10 // (m/s) Geschwindigkeit für den Übergang zum nächsten Punktwinkel
//Verwende einen PID-Regler für den Mähmotor, um eine Drehzahl statt PWM einzustellen? Wenn du dies verwendest (es wird eine Konsolenausgabe mit Daten nach 10 Sekunden erfolgen, wenn du den Mähmotor aktivierst und dies aktiviert ist)
//CONFIG-HINWEIS: Für die folgenden Optionen ist es wichtig, ob du eine Mähmotordodometrie hast: USE_MOW_RPM_SET, ADAPTIVE_SPEED_MODE, ESCAPE_LAWN_MODE. Wenn du keine Odometrie hast: Verwende Modus 1 in beiden Fällen und setze USE_MOW_RPM_SET auf false, wenn du Odometrie hast, verwende Modus 2 in beiden Fällen und setze USE_MOW_RPM_SET auf true (empfohlen)
#define USE_MOW_RPM_SET false // Verwendet RPM statt PWM, um den Mähmotor zu steuern (RPM_FAULT_DETECTION von orig Sunray sollte für alle RPM-basierten Funktionen auf TRUE gesetzt werden!!)
#define MOWMOTOR_RPM_OFFSET 310 // Kompensiert kleine RPM-Offsets (positiv, wenn die RPM-Ablesung unter dem Sollwert liegt)
#define MOWMOTOR_PID_KP 0.0032 // (0.0024 Mähmotortreiber DRV8308) (0.0018 JYQD) Dies reicht aus, um den Batterieverbrauch im Laufe der Zeit zu kompensieren und einen langsamen Hochlauf zu ermöglichen. Es könnte einen Controller-Offset zur RPM geben, der berücksichtigt werden muss... RPM_OFFSET
#define MOWMOTOR_PID_KI 0.01 // (0.04 (Mähmotortreiber DRV8308/JYQD))
#define MOWMOTOR_PID_KD 0.00 // (0.0000 (Mähmotortreiber DRV8308/JYQD))
//adaptive Geschwindigkeitseinstellungen basierend auf RPM oder Last des Mähmotors (berücksichtige, ob du eine Mähmotordodometrie hast)
#define ADAPTIVE_SPEED true // Wenn true, wird die Mähgeschwindigkeit an die RPM oder MOWMOTORPOWER des Mähmotors bei allen Vorwärtsgeschwindigkeitsoperationen angepasst (am besten)
#define ADAPTIVE_SPEED_MODE 1 // (1, 2) Adaptive Geschwindigkeitsmodi. Modus 1 - verwendet die Mähmotorkraftmessung zum Beschleunigen/Verlangsamen; Modus 2 - verwendet die RPM-Messung des Mähmotors zum Beschleunigen/Verlangsamen (2: am besten)
#define ADAPTIVE_SPEED_USE_MINS
Hier noch der Teilrest:
Code:
#define ADAPTIVE_SPEED true // wenn true, passt die Mähgeschwindigkeit je nach Drehzahl oder Leistung des Mähmotors bei allen Vorwärtsbewegungen an (empfohlen)
#define ADAPTIVE_SPEED_MODE 1 // (1,2) adaptive Geschwindigkeitsmodi. 1=Verwendung der Mähmotorleistung, 2=Verwendung der Drehzahl des Mähmotors (besser)
#define ADAPTIVE_SPEED_USE_MINSPEED true // false: verwendet MOTOR_MIN_SPEED als niedrigste Geschwindigkeit, true: verwendet ADAPTIVE_SPEED_MINSPEED als niedrigste Geschwindigkeit
#define ADAPTIVE_SPEED_MINSPEED 0.05 // (m/s) minimale Geschwindigkeit bei hoher Mähmotorbelastung
#define MOWPOWERMAX_AUTO false // (experimentell) verwendet automatisch die höchste erkannte Mähmotorleistung während des Betriebs. Wenn true, wird MOWPOWERMAX ignoriert
#define MOWPOWERMIN 40.0 // (Watt) Leerlauf- oder Mindestlastleistung des Mähmotors – darunter fährt der Mäher mit maximaler Geschwindigkeit
#define MOWPOWERMAX 90.0 // (Watt) maximale Mähmotorlast – der Mäher fährt dann mit minimaler Geschwindigkeit
#define MOW_RPM_DEADZONE 200 // (rpm) Totzone vor der Geschwindigkeitsreduzierung, z. B. wenn MOW_RPM_NORMAL = 3000, Zone = 2800...3000
#define MOW_RPM_NORMAL 3200 // (rpm) normale Mähdrehzahl (wird nur verwendet, wenn USE_MOW_RPM_SET = true)
#define MOW_RPM_SLOW 3600 // (rpm) langsame Mähdrehzahl
#define MOW_RPM_RETRY 3600 // (rpm) Mähdrehzahl beim erneuten Mähen nach ESCAPE_LAWN (wird nur für ESCAPE_LAWN verwendet)
#define MOW_PWM_NORMAL 195 // (pwm) normaler Mäh-PWM-Wert (nur verwendet, wenn USE_MOW_RPM_SET = false)
#define MOW_PWM_SLOW 215 // (pwm) langsamer Mäh-PWM-Wert bei keepslow
#define MOW_PWM_RETRY 235 // (pwm) Mäh-PWM-Wert beim erneuten Mähen nach ESCAPE_LAWN
#define ESCAPE_LAWN true // wenn true, fährt der Mäher zurück, wenn er blockiert ist (anhand von Drehzahl/Leistung des Mähmotors)
#define ESCAPE_LAWN_MODE 1 // (1,2) ESCAPE_LAWN Modi. 1=Verwendung der Mähmotorleistung, 2=Verwendung der Drehzahl (besser)
#define CHANGE_SPEED_SET true // wenn true, wechselt der Mäher in den Langsam-Modus, wenn ESCAPE_LAWN oder keepslow aktiviert ist
#define MOW_POWERtr_STALL 80 // (%) ESCAPE_LAWN wird über diesem Prozentsatz von MOWPOWERMAX ausgelöst
#define MOW_POWERtr_SLOW 70 // (%) keepslow wird über diesem Prozentsatz von MOWPOWERMAX ausgelöst
#define MOW_RPMtr_STALL 65 // (%) ESCAPE_LAWN wird unter diesem Prozentsatz von MOW_RPM_NORMAL ausgelöst
#define MOW_RPMtr_SLOW 80 // (%) keepslow wird unter diesem Prozentsatz von MOW_RPM_NORMAL ausgelöst
#define NO_GPS_OBSTACLE true // GPS-Hindernis nach ESCAPE_LAWN ignorieren
#define NO_GPS_OBSTACLE_DEADTIME 7000 // (ms) GPS-Hindernis für diese Zeit nach ESCAPE_LAWN ignorieren
#define TEST_WAIT_BEFORE_REVERSE false // nur Test: vor dem Rückwärtsfahren warten
#define MOW_RPMtr_WAITZONE 5 // (%) Wartezone für Übergänge (kein Eingreifen in diesem Bereich)
#define MOW_RECOVERY_WAIT_TIME 3000 // (ms) Wartezeit, damit der Mäher sich von einer Blockade erholen kann
#define ESCAPELAWNSPEED 0.35 // (m/s) Rückwärtsgeschwindigkeit bei ESCAPE_LAWN
#define ESCAPELAWNDISTANCE 0.40 // (m) Rückwärtsentfernung bei ESCAPE_LAWN
#define ESCAPELAWNWAITTIME 5000 // (ms) Wartezeit nach dem 2. ESCAPE
#define ESCAPELAWNTIMER 20000 // (ms) Timer zum Zurücksetzen des Wiederholungszählers
#define ESCAPELAWN_DEADTIME 4000 // (ms) Sperrzeit für den nächsten ESCAPE
#define ESCAPELAWN_DELAY 100 // (ms) Wartezeit zwischen Erkennung und Reaktion
#define MAXRETRY 5 // maximale Anzahl von Wiederholungen, bevor Fehler/Hindernis ausgelöst wird
#define MAXRETRYOBSTACLE true // wenn true, wird bei erreichter Wiederholungsgrenze ein Hindernis statt eines Fehlers ausgelöst
#define RETRYSLOWSPEED 0.15 // (m/s) Mähgeschwindigkeit beim Wiederholen
#define KEEPSLOWSPEED 0.25 // (m/s) langsame Mähgeschwindigkeit bei keepslow
#define RETRYSLOWTIME 25000 // (ms) Dauer der langsamen Wiederholung
#define KEEPSLOWTIME 25000 // (ms) Dauer des langsamen Fahrens bei keepslow
#define MAP_STANLEY_CONTROL true // Stanley-Parameter linear auf aktuelle Geschwindigkeit anwenden
#define STANLEYNORMALMUL false // wenn true, werden Stanley-Werte in der App mit 10 multipliziert
#define DOCK_GPS_REBOOT true // GPS beim Andocken/Abdocken neu starten?
#define DOCK_GPS_REBOOT_TIME 45000 // (ms) Wartezeit für GPS-Fix nach Neustart
#define DOCK_POINT_GPS_REBOOT 3 // Index des Dockpunkts zum Neustart des GPS
#define DOCK_SLOW_ONLY_LAST_POINTS 3 // Anzahl der letzten Dockpunkte, an denen nur langsam gefahren wird
#define DOCK_REVERSE_POINT 3 // ab welchem Punkt rückwärts zur Ladestation gefahren wird (abhängig von Vorder-/Hinterrädern)
#define DOCK_NO_ROTATION true // Drehung am Dockpunkt deaktivieren – Mäher muss gerade anfahren
#define DOCK_NO_ROTATION_DISTANCE 0.60 // (m) Entfernung zum letzten Dockpunkt, um Drehung zu deaktivieren
#define DOCK_NO_ROTATION_TIMER 17000 // (ms) maximale Zeit zur Erreichung der Ladestation – danach Rückwärtsfahrt und erneuter Versuch
#define DOCK_NO_ROTATION_SPEED 0.20 // (m/s) Geschwindigkeit zur Ladestation ohne Drehung
#define GPS_COLD_RESET true // GPS-Kaltstart anstelle von Warmstart
#define SOLUTION_TIMEOUT 5000 // (ms) Timeout für GPS-Lösung
#define GPS_RESET_WAIT_FIX true // GPS zurücksetzen, wenn zu lange auf Fix gewartet wird
#define GPS_RESET_WAIT_FIX_TIME 5 // (min) Wartezeit für Fix vor GPS-Reset
#define NO_GPS_SIGNAL_TIMEOUT 20000 // (ms) Mäher arbeitet ohne gültiges GPS-Signal für diese Zeit weiter
#define GPS_JUMP_WAIT true // bei GPS-Sprung warten?
#define GPS_JUMP_WAIT_TIME 30000 // (ms) Wartezeit bei GPS-Sprung
#define MOW_START_AT_WAYMOW false // Mähmotor nur starten, wenn sich im Mähbereich befindet
#define WATCHDOG_CONTINUE false // nach Watchdog-Reset weiter mähen
#define WATCHDOG_TIME 16000 // (ms) Watchdog-Reset-Zeit
#define OBSTACLE_DETECTION_ROTATION true // Blockierung durch Drehung erkennen (IMU erforderlich)
#define ROTATION_TIMEOUT 5000 // Drehzeit-Timeout zur Hinderniserkennung
#define ROTATION_TIME 1500 // erwartete Drehzeit ohne Yaw-Änderung
#define CHANGE_OBSTACLE_ROTATION true // Hindernis-Rückwärtsfahrt nach mehreren blockierten Drehungen auslösen
#define OVERLOAD_ROTATION true // Motorüberlastung bei blockierter Drehung vermeiden
#define MOWER_RADIUS_FRONT 0.45 // (m) Radius vorne zur Hindernispositionserkennung
#define MOWER_RADIUS_SIDES 0.25 // (m) Radius seitlich zur Hindernispositionserkennung
#define MOWER_RADIUS_BACK 0.20 // (m) Radius hinten zur Hindernispositionserkennung
#define OVERLOAD_ROTATION_DEADTIME 1000 // (ms) Sperrzeit für Überlastschutz bei Drehung
#define OBSTACLE_CHAINING true // Hinderniserkennung auch während bestehender Vermeidung erlauben
#define DRV8308_FIX false // DRV8308-Treiber-Fix (verwenden, wenn Treiber auf der Ladestation ausfällt)
#define DRVFIXITERATIONS 5 // Anzahl der Wiederholungen für Fix
#define DRVFIXTIMER 60000 // (ms) Zeitintervall für Fix
#define PWM_GEAR 1
#define PWM_MOW 1
#define MOVE_REGULARLY false // regelmäßig in der Ladestation bewegen, um Motortreiber aktiv zu halten
#define MOVE_AGAIN_AFTER 9.0 // (min) Intervall, um sich erneut in der Ladestation zu bewegen
#define MOVING_TIME 400 // (ms) Bewegungszeit in der Ladestation
#define SWITCH_OFF_TRACTION_MOTORS false // Antriebsmotoren in der Ladestation ausschalten?
#define SUNRAY_OUTPUT false // Standardausgabe von Sunray aktivieren
#define OUTPUT_LOOPTIME false // Schleifendauer ausgeben
#define DEBUG_OUTPUT false // Debug-Ausgabe aktivieren
#define DEBUG_OUTPUT_TIME 100 // (ms) Intervall der Debug-Ausgabe
Zuletzt bearbeitet: