Bewegungserkennung

Hallo,

ich möchte etwas experimentieren und die Bewegungen meines Hundes aufnehmen. Dafür würde ich gerne einen Beschleunigungssensor und ein Gyroscop am Halsband befestigen und die Werte abspeichern, bzw. senden und anschließend auswerten. Also ich möchte wissen ober liegt, geht, läuft sich im Kreis bewegt, ob er am Rücken liegt, sich am boden wälzt. Dabei frage ich mich aber ob dafür ein Beschleunigungssensor und ein Gyroscop reicht, oder wäre eine IMU besser geeignet?

MfG

Und wie willst du da unterscheiden ob der Hund läuft oder nur da steht und seinen Kopf schüttelt oder durch die Gegend schaut?

Die Idee ist gut und wird sicher auch funktionieren.
Mit z.B. einem MPU-6050 kannst du erkennen, ich welche Richtung dein Hund (wie schnell) läuft, springt oder gar ruhig liegt.
Das ist prinzipiell das gleiche, was ich für meinen Heli gerade am tüfteln bin.
Wenn man es denn ganz genau haben will, muss noch eon Kompass (z.B. HMU5883L) dazu - dann hast du auch die wirkliche Richtung.
Aus der Beschleunigung könnte man auch die Geschwindigkeit ableiten.
Völlig elegant wäre noch ein (gutes) GPS dazu. Hat zwar nur min 1,5m Auflösung in der Fläche, bietet aber nebenbei noch die Zeit zum besten.
Das ganze auf ner SD-Karte geloggt oder wie du schon sagtest per Sender auf den PC ....

Danke für eure Antworten :slight_smile:
Ich denke, dass ich anhand der Sensorwerte Bewegungen wie Schütteln erkennen und herausfiltern kann.
Das heißt mit einem MPU-6050 kann ich zwischen am Bauch liegen - am Rücken liegen, stehen - liegen, Kreisbewegungen unterscheiden.
Problematisch wird es aber dann bei der Geschwindigkeit, denn sobald die Geschwindigkeit konstant ist habe ich keine Beschleunigung mehr. GPS kann ich nicht verwenden, da ich Indoor messen möchte. Für mich wäre es aber sehr wichtig zwischen einer langsamen, ruhigen Bewegung und einer schnellen Bewegung zu unterscheiden. Eventuell ist das möglich wenn ich überprüfe wie stark und wie lange beschleunigt wurde. Bin mir aber sicher, dass es sehr fehlerbehaftet sein wird.
Gibt es da noch andere Möglichkeiten?

Edit: Habe noch etwas recherchiert und habe herausgefunden, dass es möglich sein sollte die Geschwindigkeit zu ermitteln, wenn ich den Beschleunigungssensor so schnell wie möglich in bestimmten Intervallen (timer interrupt) abfrage und die werte aufintegriere. Da der Beschleunigungssensor nicht in einer Ebene aufliegt, liefert mir das Gyroskop die Werte zum Korrigieren.

Ich glaube mit dem MPU6050 bist du gut ausgerüstet für die Aufgabe.
Der Sensor ist ziemlich gut aufgelöst (16 bit) und wenn du die Beschleunigungen in konstanten Abständen aufsummierst kannst du die Geschwindigkeit gut ausrechnen. Wichtig ist, dass der Sensor in Ruhe kalibirert wird - d. h. z. B. wenn man einen Taster betätigt werden alle Werte in des Sensors in Ruhe gespeichert und dann nur noch die Differenzen zu diesen Werten betrachtet werden.
Bei einem Hund kannst du auch - statt nur der Vorwärtsbeschsleunigung - auch die Seitwärtsbeschleunigung und die “Rotation” (mit einem der Gyros) um die Vorwärtsachse auswerten - jenachdem wie schnell der Hund geht/läuft/rennt wird es unterschiedliche Frequenzen und Amplituden geben, da der Hund mehr oder wenig stark “schaukelt”.

Ok, dann hätte ich noch eine Verständnisfrage und zwar überlege ich jetzt zwischen dem 6050 und dem 9150. Da ich nur wissen will, ob und wie er sich bewegt bzw. seine Lage, brauche ich kein Magnetometer. Das Magnetometer würde mir sagen wo Norden ist und ich könnte in Kombination mit den anderen Sensoren ungefähr sagen wo er sich im Raum befindet. Natürlich würde der Fehler mit der Zeit größer werden. Stimmt das so?

Mit dem Magnetometer kannst du im Prinzip eine absolute Orientation des Sensors feststellen (im Gegensatz zu den Gyros, die eine Drehgeschwindigkeit, also eine relative Drehung zum letzten Zeitpunkt, ausgeben), d. h. ob der Hund z. B. nach Westen oder nach Osten schaut oder auf dem bacuh oder auf dem Rücken liegt. Letzteres kannst du natürlich auch mit einem Beschleunigungsmesser, der einfach die Erdbeschleunigung misst.

Die Absolute Position im Raum wirst du kaum feststellen können, da du dann die Beschleunigungen zweimal (!) integrieren müsstest [s(t) = v'(t) = a''(t)]- da wirst du schon nach sehr schneller Zeit Fehler drin haben und völlige Abweichungen von der tatsächlichen Position herausbekommen. Außerdem muss nach jedem Einschalten die Position neu eingegeben werden oder sichergestellt werden, dass man immer am selben Ort einschaltet. Wenn du wirklich Postionen willst, müsstest du Abstände zu festen Punkten im Zimmer messen (z. B. mit Ultraschall) - und ich glaube zur Überwachung eines Hundes ist das ein bischen overkill :wink:

Klar, schnall den Hund doch ein Android Handy auf den Rücken und programmier das als App. Dann kannst Du den Hund auch gleich Online verfolgen. Die Sensorik incl. GPS ist ja schon drin, Stromversorgung und Gehäsue ist auch schon da. --> Du kannst Dich dann ganz auf die Software konzentrieren.