Cooles Teil!![]()
![]()
Hut ab!
Cooles Teil!![]()
![]()
Hut ab!
@Defiant:
Die Scheduler Geschichte kannte ich noch gar nicht - die muss ich mir mal ansehen. Ansonsten sehe ich mir über htop an, wie die Auslastungen sind. Der 2. Raspi schwitzt schon ordentlich, wenn er den Kamera-Feed streamt. Der Job, die Depth-Map in für Anubis passende Raum-Koordinaten umzubauen, wird er ohnehin nicht mit 30fps o.ä. schaffen - ist auch nicht nötig. Ich lasse ihn so schnell rechnen, wie er kann - und dann werden planmäßig inkl. Streaming 3 Kerne auf Anschlag stehen.
Deswegen ist mir das zu unsicher, darüber auch die Bewegungen zu steuern.
Die Bewegungsberechnung ist eigentlich auch gar nicht soooo rechenintensiv. Ich könnte die auf ca. 150 rounds per second stabil laufen lassen. Aber, die 12 Servos müssen ja in jedem Durchgang mit einigen Werten ausgelesen und gesetzt werden. Das dauert auch bei 4Mbit/s Verbindung so lange, trotz ausgelagertem Thread, dass ich momentan bei knapp 120rps lande - was völlig ok ist.
D.h. der Raspi 1 hat noch Luft und Raspi 2 werde ich am Anschlag betreiben.
@schorsch_76: Dankeschön!
Inzwischen habe ich auch noch ein paar andere Problemchen gelöst. Wenn er im Stand gehen sollte, ist er z.B. nach hinten gegangen. Durch Änderungen der Beinbewegung tut er das nun nicht mehr. Er dreht noch leicht, das werde ich aber durch den Lagesensor in den Griff bekommen. Allerding ist diese schnelle Schrittfolge, in der sich alle 0.25s ein Beinpaar hebt und senkt, genau die richtige Frequenz für diese Größe und dieses Gewicht. Alles andere wackelt furchtbar rum. Er ist zwar schon um Welten stabiler als der Vorgänger, aber er ist mir immer noch wackliger, als mir lieb ist. Immerhin konnte ich die Geschwindigkeit jetzt auf maximal 15cm/s erhöhen...
Ich poste demnächst noch mal ein Filmchen!
Grüße, Marcus
ok, dann noch ein paar zusätzliche Infos. Ich hatte 2013 in meiner Abschlussarbeit mal einen Test auf einem Dual-Core ARM Prozessor durchgeführt. Es hat etwa 100 Busy-Loops Threads gebraucht, bis der SCHED_FIFO die Periodendauer von 16.67ms nicht mehr einhalten konnte. Nur so als Tip, da ein Rpi4 doch ca. 1A benötigt und es sicherlich von Vorteil für die Laufzeit wäre wenn man einen einsparen könnte.
@LeeMajors, schon mal überlegt den stream auf 10fps runter zu setzen?
@Defiant, schicke arbeit, muss ich mir mal heute abend in ruhe durchlesen.
ich würde auch 2 rpi einsetzen, die bildverarbeitung benötigt doch eine menge leistung und wenn zwei cams einsetzen will, ist das in meinen augen sowieso besser.
das leben ist hart, aber wir müssen da durch.
Der Stream ist momentan schon bei 12fps und der Raspi ist schon eingebaut und läuft. Ich möchte da einfach nicht ans Limit gehen und etwas Luft haben.
Außerdem fand ich es auch interessant, Daten zwischen den beiden Rechnern auszutauschen:
Momentan läuft da einmal eine Websocket-Verbindung und zum anderen nutze ich auf dem Raspi 1 /dev/shm/, einem Verzeichnis, welches im RAM liegt. Das ist einfach auch auf dem Raspi 2 gemountet und der Datenaustausch ist super schnell.
Dort arbeite ich auch mit einer SQLite Datenbank und die Performance ist wirklich verblüffend. Dort werden vom Lagesensor z.B. Daten reingeschrieben, wann welche Lage vorlag, sowie die theoretische Position im Raum. (Jeder Sensor/Kamera, etc. hat ja seine eigene Latenz. Die der Tiefenmap liegt bei 0.25s, bis sie im python Skript verarbeitet werden kann, die des Lagesensors bei 0.12s.) Später kann ich dann bei einer Depth-Map auf die "alte Lage" zugreifen und so die Hindernis-Positionen des Raums berechnen. Dass der Roboter inzwischen schon ein paar cm weiter gelaufen ist, ist im Prinzip ja nicht schlimm, da der Lagesensor weit nach vorne guckt.
...soweit schon mal die schöne Theorie! :-p
ich finde die sache mit den gemouteten verzeichnissen die bessere lösung, weil websocket bedeutet immer overhead.
schon mal an csv file gedacht? (nur ein gedanke)
das leben ist hart, aber wir müssen da durch.
Ich setze beides ein. Für die Clientverbindung brauche ich ja auf alle Fälle Websockets. Und für Push-Nachrichten zwischen den Raspis auch.
Was soll ich ansonsten mit csv files anfangen!? Als Alternative zur Datenbank? Ich muss doch gezielt Datensätze auslesen...
Lesezeichen