-
        

Ergebnis 1 bis 5 von 5

Thema: Balancierender Roboter ohne komplizierte Filter

  1. #1
    Unregistriert_
    Gast

    Balancierender Roboter ohne komplizierte Filter

    Anzeige

    Hallo,

    für ein externes Projekt der Schule möchte ich einen balancierenden Roboter bauen. Ich habe schon einige Jahre Erfahrung mit dem Programmieren von Mikrocontrollern (AVR, ARM). Allerdings dürfen wir für dieses Projekt nur einen Arduino benutzen aber daran soll es nicht scheitern. Erfahrung mit der Regelungstechnik für die Motoren habe ich schon durch meine Ausbildung. Was mir allerdings schwer fällt ist die Auswertung des Gyros und des ACC. Im Internet lese ich immer wieder dass man hierfür einen Kalman Filter benötigt, da ich aber keine Ahnung von diesem Themengebiet habe möchte ich nachfragen ob es auch einfachere Wege gibt (mit Gyro+ACC, kein Abstandssensor). Der Roboter muss nicht super präzise stabilisiert werden, er sollte nur stehen bleiben und nicht umfallen wenn man ihn wegstoßt.

    Es wäre super wenn Ihr mir ein paar Vorschläge machen könnt wie man das am besten lösen kann und ob es überhaupt möglich ist.

    Gruß

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    hallo!
    die gute Nachricht lautet:
    nein! du brauchst keinen Kalman für einen "Segway"!
    Du brauchst noch nichtmal einen Accelerometer-Sensor!
    Alles was du an Hardware brauchst ist ein Gyro mit 1° Auflösung, und Encoder-Motore (etwa 1° Auflösung am Rad) sowie einen PID-Controller dafür, den du allerdings sehr sorgfältig tunen musst.
    Das System ist sogar recht simpel, es laufen bereits seit fast 10 Jahren Lego-Roboter mit solchen ganz einfach gestrickten Programmen!
    Übrigens funktionieren Lego-Encoder-Motore ganz hervorragend mit Arduinos und L293D Motortreibern zusammen:
    http://www.mindstormsforum.de/viewto...&t=8302#p65015


    Die Gyro-Drift stellt außerdem für Segways auch ein ziemlich einfach in den Griff zu kriegendes Problem dar, wenn sie schwächer ist als - sagen wir - 10° pro Minute.
    Du musst nur eine ganz einfache Annahme machen: dass im Mittel nämlich der Segway immer ausbalanciert ist - :
    daraus folgt, dass das Integral über alle Gyrowerte immer annähernd Null ist! Damit lässt sich die Drift herausrechnen!

    Ein Accelerometer ist nur sinnvoll für die Start-Bedingung, damit er seine senkrechte Stellung erkennt.
    Es geht aber auch ohne:
    erst waagerecht legen, dann initialisieren und damit eichen auf 90° Gyroneigung, dann hinstellen, und dann den Gyro seinen neuen Senkrecht-Nullwert = -90° vom Waagerecht-Wert umrechnen lassen.

    Auch fahren lassen kannst du ihn mit diesem PID-Regler: dann wird als Gyro-Sollwert nicht Null, sondern ein kleiner Offset als Zielwert gewählt (schräge Stellung), und schon muss er sich in die Richtung der Neigung bewegen, um balanciert zu bleiben - heißt: er fährt in Richtung des Neigungs-Offsets. Kurven-fahren kann analog berechnet werden (Räder verschieden schnell, aber Durchschnitt dem Neigungs-Offset angepasst).

    Sketch besitzt übrigens bereits eine fertige lib für PID-Controller: PID_v1.h, die allerdings erst konfiguriert (und dann, wie gesagt, getuned) werden muss:
    http://playground.arduino.cc/Code/PIDLibrary

    HTH!
    Geändert von HaWe (25.11.2014 um 21:31 Uhr)

  3. #3
    Unregistriert_
    Gast
    Hallo HaWe,

    vielen dank für die schnelle und ausführliche Antwort. Damit hätten sich meine Fragen fürs erst einmal erledigt.

    Gruß

  4. #4
    Unregistriert
    Gast
    Sorry, aber eine Frage habe ich noch.
    Was für Motoren eignen sich am besten? Ich habe die EMG30 gefunden, diese kommen mir aber ein bisschen groß vor. Gibt es eine etwas kleinere Alternative?

    Gruß

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.452
    kommt ntl auch auf die benötigte elektrische (und mechanische) Leistung an und die notwendige Drehzahl - und wie sie mechanisch verbaut werden sollen oder müssen.
    wenn Motoren im Bereich 600-2000 mA (Leerlauf-Stalling) mit etwa 40-50Ncm Drehmoment (ca. 3 U/s Drehzahl an der Antriebsachse) funktionieren:
    Nimm die Lego-Motoren, ich finde, sie sind durch ihre eingebauten Rotationsencoder (=Quadraturencoder, max. 0,5° Auflösung an der vorderen Achse) ideal für solche kleinen Modelle!

    Klicke auf die Grafik für eine größere Ansicht

Name:	lego-nxt-motor.jpg
Hits:	8
Größe:	8,0 KB
ID:	29374
    auf dieser Seite findest du auch die Pinbelegung des exzentrischen RJ11-Steckers (Nase einfach abschneiden). Sie laufen übrigens mit 7-12V, die Encoder brauchen 3.3 bis 5V.
    http://trivox.tripod.com/lego-nxt-mo...ut-output.html

    mit Fernsteuerung:


    ab 4:33 !!
    http://www.youtube.com/watch?v=7OfJwG0EhBU
    Programm in einer Art C-ähnlichem "Dialekt": http://www.hitechnic.com/file.php?f=786-HTWayC.nxc

    oder hier, nicht ferngesteuert, sondern als Linienfolger:

    Geändert von HaWe (26.11.2014 um 17:59 Uhr)

Ähnliche Themen

  1. Balancierender Roboter
    Von Zwerwelfliescher im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 9
    Letzter Beitrag: 11.10.2010, 01:24
  2. Balancierender Roboter
    Von the_mephisto im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 10
    Letzter Beitrag: 27.03.2010, 21:40
  3. balancierender Roboter
    Von kehrblech im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 22
    Letzter Beitrag: 14.06.2008, 17:28
  4. Balancierender Roboter
    Von blan im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 5
    Letzter Beitrag: 10.03.2007, 10:37
  5. balancierender Roboter bbot
    Von LT im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 2
    Letzter Beitrag: 28.12.2005, 23:17

Benutzer, die dieses Thema gelesen haben: 1

Berechtigungen

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