Open ampxtreme opened 5 years ago
Bitte die benötigte Durchlaufzeit des Codes messen und unten eintragen.
Sensor | Ausführungszeit Code [ms] |
---|---|
RPM | |
Ultraschall | |
Servo + Ultraschall | |
Camera | |
Gyro | |
Flame | |
Summe |
Falls die Durchlaufzeiten zu hoch werden sollten, können wir folgende Ansätze verfolgen:
Inner- und Outer-Loops, Innerhalb des Inner-Loops würden die Sensoren und Fahren laufen. Im Outer-Loop der Rest. Beides gleichzeitig geht in diesem Fall dann nicht. (Beispiel: https://repository.asu.edu/attachments/162093/content/Lin_asu_0010N_15358.pdf)
Zweiten Microcontroller implementieren und darüber die Sensoren auslesen. Komm. über RS232/UART (ggf. Bauraumprobleme)
Siehe auch: https://github.com/Denkschmied/fire-and-ice/issues/38
Hab noch ein Ass im Ärmel. Eine weitere Möglichkeit wäre über ein Bash-Skript zwei Python-Programme gleichzeitig auszuführen (eines für die Position und eines für den Rest) und über eine Textdatei als Zwischenspeicher zu gehen. Das ist zwar kein wahres Multiprocessing, sondern geht eher in Richtung Multithreading. Einen Vorteil sollte es aber allemal bringen.
Bitte alle Durchlaufzeiten (Beispielrechnung unten) der Code-Snippets bestimmen und in untenstehende Tabelle eintragen.
Falk und ich haben uns Gedanken zum RPM Sensor (Umsetzung in Matlab) gemacht. Problem ist hierbei ggf. die Abtastfrequenz. Wenn es blöd läuft gehen uns Signale verloren da der Prozessor bzw. der Loop zu diesem Zeitpunkt gerade mit anderen Aufgaben beschäftigt ist.
Aus diesem Grund haben wir mal folgende Rechnung angestellt um die maximal benötigte Loop-Durchlaufzeit am Beispiel RPM zu berechnen.