Ja, am Sonar macht mwii jetzt schon 2 Jahre herum. Eigentlich ist das an einem Wochenende erledigt, wenn man weiss, was man will, und realisiert was das Sonar kann und was eben nicht. Ein Sonar kann immer nur einen RELATIVEN Abstand messen und NIEMALS eine absolute Höhe i.S von MSL(mean sea level kann das GPS und das aktuell mit ungefähr +-10m Ungenauigkeit, und der Baro) - d.h. ein Ansatz wie Arducopter, Mahowik u.a muss in der Grundannahme schon mal falsch sein (ABSOLUTE Höhe) - und werden deshalb auch gefährlich im Flug. Ein Sonarkontakt kann man daher nicht immer dem Bodenkontakt gleich setzen (Baum/Berg/ Stein-Terassenboden/ Landewiese). Deswegen sind viele open source Sonarcodes an der Sensor-Realität vorbei und auch noch gefährlich.
Was kann ein Sonar?
- Den relativen Abstand zu einem Hindernis messen, sofern es Schall reflektiert (Grass/Stein)
- Schallgeschwindigkeit/Temp Abhängigkeit: Temperaturunterschiede sind mathematisch zu vernachlässigen (es sei denn, man fliegt in Regionen, wo +35C und -10C sich abwechseln - z.B Kühlhaus und Gewächshaus im Wechsel - das Flugfeld möchte ich gerne sehen) Bemerkung: Für die barometrische Höhenmessung ist die Lufttemp dagegen sehr wichtig.
Vergleich:
+35 C 102 CM
+20 C 100 CM
-10 C 95 CM
d.h. 45 Grad Unterschied machen 7 cm (auf einen Meter) beim Sonar aus - schönen Gruss an Armazilla(github), wo dieser Unterschied - THEORETISCH - berücksichtigt ist - der Rest des Codes ist unbrauchbar und bestenfalls eine billige "Harakiri "Kopie.
- Das Sonar kann kurz den "Kontakt" verlieren (z.B billiger Sensoren wie das HC SR04)
- Das Sonar hat nur einen eingeschränken, verwertbaren Messbereich, der i.d.R die HÄLFTE des beworbenen maximal range beträgt.
- Je nach dem wo das Sonar montiert ist, kann es durch Verkippung des Fluggerätes (Copter?) zu einer künstlichen Veränderung des gemessenen (sonar)Abststandes kommen. Das ist in verschiedenen open source codes überschätzt und mit cos Funtionen bedient. In Realität macht die Verkippung KAUM einen Unterschied zwischen Sonar gemessenem Abstand und tatsächlichem Abstand.
Was soll eine Sonar können?
- Nicht das Braometer ersetzen - denn das kann es NIEMALS, weil es eben nur einen relativen Abstand messen kann. Nur das Baro kann die absolute Höhe messen (GPS zu ungenau). Ein Sonar kann NIEMALS (never ever) ein Barometer ersetzen.
- Abstand zu einem Hindernis "halten"
- Keine Hüpfer über Bäume produzieren
- Ungefährlich die ganze Zeit mitlaufen und den Baro unterstützen.
Was soll der Sonar Code daher können?
- Einen RELATIVEN Abstand halten können.
- d.h. z.B Bei Dachinspektionen immer einen konstanten Abstand zum Dach beibehalten.
Wie soll der Sonar/Baro/ACC Code daher aussehen?
- Ein Sonar only Code ist absoluter Schwachsinn (s.o), weil ein Sonar immer nur einer relative, niemals eine absolute Höhe bestimmen kann (im Rahmen seines "Ranges").
- Fehler müssen gebrückt werden - auch ein Disconnect muss erkannt werden.
- Die RELATIVE Höhenänderung des Sonars muss berücksichtigt werden (v.a das billige SR04 - Maxbotix 1200 und höher sind deutlich besser)
- Daher MUSS ein OFFSET zwischen gemessener Barohöhe und der relativen Sonar Höhe (bei Kontakt) gebildet werden.
-> daher sind alle opensource codes, die ich bis jetzt gesehen habe, WENIG sinnvoll....... um es nach meiner Auffassung positiv zu sagen...
Ergebnis?
- Wenn ein vertrauenswürdiger (Definition!) Sonar Kontakt vorliegt, wird die gemeldete, RELATIVE Höhenänderung durch das Sonar mit der ABSOLUTHÖHE des Baro verarbeitet und umgesetzt.
- Kein "hüpfen" über Bäume etc...
Das wollte ich mir mal von der Seele schreiben. Der Sonar Unfug mit absoluten Höhen (ab 4 m mache das blabla etc) ging mir dermassen gegen den Strich, dass ich mir hier mal Luft machen musste (sorry for that). Für (hoffentlich bald preiswert zu kaufende) Radar Sensoren gilt das gleiche: RELATIVE Höhe wird gemessen, niemals die absolute Höhe...
Diesen Unterschied muss man sich immer klar machen, wenn man Anfordeungen an das Sonar stellt.
P.s: Für Autostart und Autolandung ist das SONAR NIEMALS entscheidend !! Das geht auch "nur" mit dem Baro, wenn der Code entsprechend ist....
LG
Rob