- LiTime Speicher und Akkus         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Richtungsänderung mit MP6050

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6

    Richtungsänderung mit MP6050

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    Ich bastle an einem kleinen Roboter auf Basis eines RasPi Zero.
    Bisher kann er schon Hindernisse erkennen und diesen ausweichen.

    Jetzt habe ich noch einen MPU 6050 angebracht und mir ist es auch schon gelungen die Ergebnisse in Python auszulesen.

    Jetzt würde ich gerne die Änderung der Fahrtrichtung darüber bestimmen, um Drehungen in einem angegebenen Winkel durchzuführen. (z.B. Der Roboter soll seine Fahrtrichtung um 90° im Uhrzeigersinn ändern)

    Ist dies überhaupt mit dem Sensor möglich und wenn ja wie?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Trägheitsnavigation ist jetzt nicht optimal sondern eher eine Ergänzung zu einer anderen (weniger genauen) absoluten Navigationsreferenz.

    Für den angedachten Zweck wären Gyro Sensoren deutlich sinnvoller, denn G Sensoren können nur die Beschleunigung messen, d.h. wenn du dich anfängst zu drehen kann man ausrechenen mit welcher geschwindigkeit du dich drehst aber nicht wie weit

    Gyros können absolut messen unterliegen aber einem drift, den man ggf. mit den beschleunigungssensoren ausgleichen kann
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Der MPU 6050 ist doch ein 3-Achsen-Gyroskop + 3-Achsen-Beschleunigungssensor. Oder habe ich da etwas falsch verstanden?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    okay als ich danach gegoogelt hatte kam nur beschleunigungssensor raus, sorry das detail ist mir entgangen
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.197
    Zum Raspi kann ich nix sagen, aber für den Sensor gibt es, für Arduino, die Kalman-Bibiliothek.
    Hier z.B. gibts dazu was.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Danke, habe ich mir mal durchgelesen und man kann das ganze Wohl auch recht gut annähern über den Complementary Filter angle = 0.98 *(angle+gyro*dt) + 0.02*acc

    Aber wie bekomme ich allgemein erst einmal den Winkel?

    Einfach die Differenz des Gyro Z-Achse zum Zeitpunkt 0 und Zeitpunkt 1?

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Zitat Zitat von dascoco Beitrag anzeigen
    Danke, habe ich mir mal durchgelesen und man kann das ganze Wohl auch recht gut annähern über den Complementary Filter angle = 0.98 *(angle+gyro*dt) + 0.02*acc

    Aber wie bekomme ich allgemein erst einmal den Winkel?

    Einfach die Differenz des Gyro Z-Achse zum Zeitpunkt 0 und Zeitpunkt 1?
    In Prinzip, Ja. Aber.... Erst muss der Gyro "kalibriert" werden. Bei Stilstand soll so eine Gyro auch Drehrate 0 ausgeben, tut es aber nicht. Da sind "offsets" anwesend, und damit fangt die erste Fehler an. Kalibrieren aber ist einfach : Drehrate erfassen bei Stillstand, und diesen Wert is ihre offset. Ihre Berechnung wird dan : (Angle + (gyro-offset)*dt
    Den Winkel bei Anfang wird einfach 0 genommen, oder wen ein Kompass forhanden ist, auch mal die Himmelrichtung. Ihre "dt" (samplezeit) muss auch relatif kurz sein : 10 ms (100 Hz) ist moglich bei diese MPU6050.
    Das zweite teil mit den "acc" ist nicht so einfach : bei drehen um eine Senkrechte, andert sich die acc nicht, keine von 3 Achsen !! Nur ein Kompass kann hier weiter helfen, ist auch relatif complex. Suche auch mal nach IMU (Kris Winer algoritme)

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    01.03.2008
    Ort
    Niederlanden
    Beiträge
    1.170
    Du solltest ein Magnetometer baustein verwenden. Leider is das MPU6050 kein 9-achse IMU. Diese kan die Richtung gegen das Lokales (Erd-)Magnetisches Feld bestimmen. Leider ist das nicht immer ein Ortogonales Achse-system gerade zu das Raum wo dein Robot sich befindet. Ferromagnetische materialen in die Nähe (Stahl/Eisen) oder Elektrische Spüle konnen die gemessen Richtung ändern.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2018
    Beiträge
    6
    Ich habe mal versucht den ersten Teil der Formel umzusetzen.
    Hier mal mein bisheriger code. Allerdings ändert sich der WInkel selbst im Ruhezustand stark, da der Winkkel-Offset nicht immer 0 ist
    Ich nutze folgende Bibliothek um die Sensorwerte abzufragen https://github.com/Tijndagamer/mpu60...050/mpu6050.py

    Code:
    #!/usr/bin/python
    import time
    from mpu6050 import mpu6050
     
    mpu = mpu6050(0x68)
    gyro_data = mpu.get_gyro_data()
    
    angle = 0
    dt = 0
    offset = gyro_data['z']
    
    while 1:
    		
    	gyro_data = mpu.get_gyro_data()	
    	gyroZ = gyro_data['z']
    	angle = angle + (gyroZ-offset)*dt
    	print gyroZ
    
     	dt += 0.01
    	time.sleep(0.01)

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Sie sind auf den guten Weg, aber siehe ich 2 Fehler :
    1. In welche Einheit wird ausgelesen ? 16 bit, oder schon in °/sekunde, oder rad/sekunde.... Abhangig von setup von MPU, kan es sein das 16 bit 250°/sek darstellen, oder 500° oder.. Sag mal, nach umrechnen in einer float bekommen wir das dan in °/s.
    2. Ihre dt bleibt immer 0.01, da wird nicht summiert !! Zeitinterval ist doch immer gleich !
    3. Versuch auch noch mit timer zu arbeiten, time.sleep ist blockierend.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 05.11.2007, 01:17
  2. Rs232 Richtungsänderung beim RN-MotorControl
    Von visualman im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 14.03.2007, 09:36

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test