- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 9 von 9

Thema: [SLAM] Lidar zur Erstellung einer Karte und zum Finden der Position des Roboters

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    [SLAM] Lidar zur Erstellung einer Karte und zum Finden der Position des Roboters

    Hi,
    Ich arbeite in einem Schulprojekt schon lange an einem Roboter, der autonom durch ein Labyrinth fahren muss. Der Roboter verfügt über ein Lidar (genauer "RPLidar A1M8"), mit dem er die Umgebung scannen kann. Der Roboter ist dafür gedacht an dem "Rescue Maze" Wettbewerb des RoboCup Juniors teilzunehmen (Der Roboter ist etwa 18x22 cm groß). Der Wettbewerb funktioniert so, dass der Roboter in eine Arena gesetzt wird, die aus vielen „Räumen“ besteht, die jeweils 30x30 cm groß sind. Diese Räume haben dann zwischen 0 und 4 Wänden. Diese Arena, die der Roboter vorher nicht kennt, muss er dann autonom durchfahren. Wir verwenden das Lidar bereits, um die Wände in der Arena zu erkennen und sie in eine Karte einzutragen.

    Jetzt würden wir gerne das Lidar nutzen um eine genauere Karte des Labyrinths anzufertigen, während wir durch dieses fahren. Damit wollen wir erkennen, wenn der Roboter nicht mehr dort ist, wo er glaubt, dass er gerade ist. Ich habe mich schon in die Richtung von Algorithmen, wie "Iterative Closest Point" und "Coherent point drift" umgesehen, habe aber bisher keinen Startpunkt für die Umsetzung gefunden. Da wir mit einem Raspberry Pi 3 fahren (wir wollen demnächst auf einen RockPi umsteigen), ist auch die Geschwindigkeit des Algorithmus nicht ganz unerheblich.

    Wie ich meine Karte bauen kann, nachdem ich weiß wo der Roboter sich bewegt hat, ist mir relativ klar. Nur weiß ich nicht, wie ich genau herausfinden kann, wie er sich bewegt hat, da im Labyrinth auch Hindernisse stehen können, an denen der Roboter hängengeblieben sein könnte. Am besten wäre für mich ein System, mit dem der Roboter über die durch das Lidar erstellte Karte navigieren könnte, um automatisch Hindernissen auszuweichen und um schneller zu sein, als das Ganze „Feld-für-Feld“ anzugehen.

    Habt ihr irgendwelche Ideen oder Erfahrungen, wie ich so ein System bauen kann bzw. welche Algorithmen ich genau verwenden sollte, um herauszufinden, wo sich der Roboter gerade befindet bzw. wie er sich bewegt hat über die Bilder die das Lidar ausgibt?

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Hallo,

    ein Teil scheint mir etwas unverständlich:

    Nur weiß ich nicht, wie ich genau herausfinden kann, wie er sich bewegt hat, da im Labyrinth auch Hindernisse stehen können, an denen der Roboter hängengeblieben sein könnte.
    Wie der Roboter sich bewegt, müsste doch bekannt sein, ob er also geradeaus fährt oder rückwärts, vorwärts oder ....

    Ich weiß nicht, ich würde intuitiv anfangen, eine Karte zu bauen. Eine "Karte", die in positive und negative Richtung offen ist. Wie beim "Schiffe versenken" würde ich in ein Raster die Hindernisse eintragen. Wenn ich auch etwas stoße, von dem ich nicht weiß, ob es ein Hinderniss ist, das umfahrbar ist, muss ich versuchen drum herum zu fahren. Ist dies nicht möglich, ist es eben kein umfahrbares Hindernis.
    Je nachdem, in welche Richtung ich fahre, trage ich die Hindernisse auf der Karte auch ein.


    Ob der Roboter sich von der Stelle bewegt, kann man sicher auch irgendwie feststellen. z.B. ob sich die Räder drehen, wenn der in eine Richtung fahren soll.

    Welche Sensoren hat der Roboter denn überhaupt, um sein Vorankommen zu erfassen? Ist noch nicht mal klar, wie der überhaupt beschaffen ist.


    MfG

  3. #3
    Danke für deine schnelle Antwort!

    Das ich nicht immer genau weiß, wie er gefahren ist, meine ich so, dass der Roboter an "Bumpern", also Dinge auf dem Boden, die ihn am Fahren hindern, sich gerne so festhängt, dass sich die Räder zwar gedreht haben, aber der Roboter sich nicht von der Stelle bewegt hat. Auch kommt es vor, dass der Roboter so mit einem Hinerniss zusammenprallt, dass er nicht mehr wirklich weiß wo er ist. Das heißt, der Roboter trägt dann in seine Karte, wo die Wände und so verzeichnet sind ein, dass er einen Raum weiter gefahren ist, wobei er eigentlich noch im Raum davor steht. Das führt dann dazu, das späteres Navigieren problematisch wird.

    Außer dem Lidar haben wir an Sensoren noch einen Kompass-Sensor (BNO055) und Sensoren, die für den Wettbewerb wichtig sind, wie zum Beispiel Wärmesensoren, Kameras und Lichtsensoren. Das der Roboter sich verfährt kommt zwar nicht so oft vor, aber oft genug, dass wir ein System brauchen, dass das erkennt. Außerdem wäre es cool mehr aus dem Lidar zu machen, also darüber zu navigieren.

  4. #4
    HaWe
    Gast
    hallo,
    du weißt ja, dass die Wände immer 30cm oder ein Vielfaches voneinander entfernt sind, daher kannst du über die Messung der rel. Abstände zu den Wänden deine Positionsbestimmung etwas verbessern: ein Algorithmus dazu wäre z.B. die Monte-Carlo-Methode (MC-Simulation, Partikelfilter).

    Dennoch riskierst du hier falsche Ergebnisse, da du dich an Dingen orientierst, die nicht 100% bekannt sind, schließlich musst du dein Labyrinth ja erst per SLAM erforschen, und folglich beißt sich das irgendwie in den eigenen Schwanz.

    Wirklich hilfreich , um die Odometrie zu verbessern, wären nur Sensorfusionen mit Gyro, Accelerometer und Kompass durch 9D Sensorfusion, z.B. per Extended Kalmanfilter (es gibt Sensoren, die das schon teilw. durch einen onboard 9D-dsp tun, z.B. CMPS12 (einfach) oder MPU9250 (schwierig und aufwändig), den 9D Kalman musst du dann noch mit der Odometrie fusionieren ).

    Auch hier hast du aber nur 1 absolute externe Referenz , nämlich das Erdmagnetfeld (via Kompass), der Rest an Sensorwerten ist theoretisch beliebig verrauscht - das ist etwas dünn für eine exakte Navigation, gerade bei Schlupf und magn. Störfeldern.

    Also hilft zur Ortung nur ein zusätzliches externes Ortungssystem, wie Baken per dm-Wellen ("Indoor-GPS"), s. z.B. Pozyx (teuer aber sehr genau).
    Falls das nicht in Frage kommt, musst du mit den Ungenauigkeiten aus MC-Simulation und Kalmanfilter leben.

    Was nicht-statische Hindernisse angeht, könnte man das virtuell erstellte Bild des Labyrinths "schattieren", d.h. mit Grauwerten versehen.
    weiß = frei,
    Grautöne = Hindernis mit zunehmender Schwärzung bei wiederholter Messung, kann auch wieder zu weiß ausradiert werden falls es plötzlich wieder verschwindet
    schwarz = dauerhaftes Hindernis ab der soundsovielten konstanten Messung

    Weiterer Vorteil bei dem grauschattierten virtuellen Labyrinth:
    du kannst die Einzelfelder direkt in einem A* (AStern) weiterverarbeiten, zur Ermittlung des kürzesten Weges aus dem Labyrinth heraus, wobei der Grad der Schwärzung mit verschieden hohen Wegekosten korreliert werden kann.

  5. #5
    Hallo HaWe,
    Danke für deine Rückmeldung, ich werde mir die Sensoren, die du beschrieben hast auf jeden Fall ansehen. Ein "Indoor-GPS" System können wir leider nicht verwenden, da das der Wettbewerb nicht zulässt. Auch deine Idee mit den Schattierungen werde ich mal versuchen für unser Projekt umzusetzten.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Ein Gedanke den ich schon länger mal ausprobieren wollte, aber zumindest privat nie wirklich in angriff genommen habe wäre eine Computermaus (genauer gesagt den Maussensor, kann man als einzelne bastlerplatine kaufen) für die Wegerfassung zu nutzen

    Das wäre Kontaktlos und auf 95% aller Oberflächen kein Problem

    Da der Sensor geschützt verbaut werden kann und solange man sicher geht dass der robo sich nicht unnötig selber aufbockt (Also den Boden aus dem Fokus nimmt) sollte man damit sehr zuverlässig die Wegstrecke tracken können

    Versuch doch mal irgendwo her eine alte optische PS2 Maus zu organisieren, dann kannst du das zumindestens erstmal testen, denn PS2 ist nichts weiteres als gammeliges UART in eiem runden Stecker

    Wenn dein Robo eine Gehirn mit USB Port besitzt gehts auch mit einer USB Maus natürlich
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Ähnliche Themen

  1. Roboter mit Neato Lidar und SLAM
    Von teamohnename im Forum Vorstellungen+Bilder von fertigen Projekten/Bots
    Antworten: 4
    Letzter Beitrag: 20.04.2015, 13:41
  2. Kartenausschnitt in Karte finden
    Von jcrypter im Forum Software, Algorithmen und KI
    Antworten: 7
    Letzter Beitrag: 15.08.2013, 10:02
  3. Lpt-Karte - wie Hardware-Adresse für Bascom finden?
    Von erik_wolfram im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 22.03.2010, 21:27
  4. Trajektorien eines 3-Achs Roboters in Position und Geschwin.
    Von Henryy im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 24.01.2010, 12:17
  5. Position innerhalb der Karte?
    Von Chris266 im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 05.05.2005, 00:30

Stichworte

Berechtigungen

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

Solar Speicher und Akkus Tests