2009-07-03 18 views
31

Qualcuno ha esperienza nello sviluppo o nel lavoro sul problema del robot autonomo, in particolare nello sviluppo dell'algoritmo SLAM? Mi piacerebbe sapere dove sarebbe un buon posto per iniziare a sviluppare una versione molto molto semplice su SLAM. Sarebbe apprezzato anche qualsiasi suggerimento di risorse sugli argomenti (a parte le ovvie ricerche su google).Algoritmo SLAM

+1

Motivazione della domanda di riapertura: Dato che il motivo della chiusura è "[questi tipi di domande] tendono ad attirare risposte e spam". Penso che questa domanda dovrebbe essere riaperta poiché ogni risposta data finora è stata molto utile e di alta qualità ad eccezione di una. Si noti che l'argomento che ho chiesto è molto vasto e sto chiedendo opinioni di esperti su dove è un buon punto di partenza. – ldog

risposta

26

Il libro Probabilistic Robotics di Thrun e altri trascorre molto tempo su SLAM.

OpenSLAM ha un sacco di risorse SLAM e implementazioni di diversi algoritmi SLAM.

+0

Ottimo libro! Esattamente quello che stavo cercando, questo libro introduce tutto da zero, leggi circa 1/5 nel libro ora e avere una comprensione molto migliore. – ldog

+2

Ya, è sicuramente un grande libro. Assicurati di controllare la pagina degli errata, dato che ci sono alcuni errori matematici qua e là a seconda della stampa che hai. http://robots.stanford.edu/probabilistic-robotics/errata.html –

-5

openCV è la soluzione migliore per questo, è una grande libreria che gestisce un sacco di problemi di Computer Vision che ha una grande storia, comunità e supporto.

http://opencv.willowgarage.com/wiki/

+3

OpenCV è utile per l'elaborazione delle immagini ma, oltre al filtro kalman, non sono inclusi algoritmi di mappatura completi – Janusz

+0

OpenCV non è una piattaforma SLAM. È possibile creare un framework SLAM che lo utilizza ma da solo non ha alcuna relazione con SLAM. – twerdster

+0

Non solo OpenCV non ha alcuna funzionalità SLAM, si presume che il suo front-end SLAM sia visivo. Scenario non plausibile, ma la corrispondenza con la scansione laser è più comune. – SuperElectric

4

Alcune delle persone che lavorano sui robot alla Università di Bielefeld si basano sui seguenti documenti nel loro lavoro con un robot.

  • I. Esteban, O. Booij, Z. Zivkovic e B. Kröse. Slam basato su omnivision traiettoria. In RSS inviato. IEEE, 2008

  • A Harati, S Gachter e R Siegwart. Segmentazione delle immagini a intervallo rapido per 3D-SLAM indoor. Nel sesto Simposio IFAC su Intelligent Autonomous Vehicles (IAV), 2007.

  • A Harati e R Siegwart. 3D-SLAM ortogonale per ambienti interni con angoli retti. Nel 3 ° Conferenza Europea sulla Robotica Mobile (ECMR), 2007.

Un'altra carta che potrebbe dare un punto di partenza è:

  • R. SIEGWART, I.R.NOURBAKHSH (2004). Introduzione ai robot mobili autonomi. MIT Premere

La maggior parte della carta dovrebbe essere trovata in Google Scholar.

29

Probabilistic Robotics è sicuramente un ottimo libro da cui partire, ma gli attuali algoritmi hanno superato gran parte degli scopi che copre.

Il TORO di Grisetti (disponibile da OpenSLAM) è un algoritmo veloce in grado di chiudere i loop in tempo O (N) (dove N è la dimensione del loop). Si potrebbe adattarsi alle seguenti condizioni:

  • Non hai bisogno di una precisione ottimale (ad esempio, non si sta usando questo per eseguire struttura-da-motion, o di restringere il campo di ricerca per le caratteristiche visive)
  • Non si utilizzano sensori di sola posizione, come il GPS.

L'iSAM di Kaess è molto buono se si desidera una precisione ottimale (ottimale nel senso dei minimi quadrati). Potrebbe essere adatto alle seguenti condizioni:

  • Si utilizza il GPS.
  • Si trarrebbe vantaggio dalla precisione ottimale.
  • Non ti dispiace che chiude i loop in tempo O (N^2), dove N è il numero di pose nel ciclo.
  • Il tuo robot può smettere di ri-risolvere la mappa da zero ogni poche centinaia di waypoint. Questo richiederà alcuni secondi. (Questa debolezza è stata superata nel suo recent tech report).
  • Le stime di posa iniziali sono decenti. In caso contrario, iSAM può rimanere bloccato nei minimi locali.

Infine, è possibile scremare il mio IROS 2010 paper su SLAM flessibili, che vi dà una manopola con il quale è possibile regolare il costo di chiusura di un ciclo, dove più dei costi significa più precisione. Il costo può essere impostato ovunque da O (N) a O (N^2). Anche al minimo, è ancora più preciso di TORO. Usalo se:

  • Ti piacerebbe elaborare anche grandi chiusure di loop in tempo reale.
  • si desidera utilizzare il GPS

Considera anche la bontà delle stime iniziali posa. Quando si utilizza un buon algoritmo di corrispondenza laser-scan in aree interne limitate, la deriva di posa può essere piuttosto ridotta. Ciò riduce gran parte del carico di accuratezza dello SLAM e la differenza tra l'output di tecniche approssimative come TORO e le tecniche esatte come l'iSAM diventa sottile.

Buona fortuna,

- Matt

+0

il tuo link a "IROS 2010 paper" su SLAM flessibile è rotto. Potresti aggiornarlo? Sono interessante nel leggerlo. – Snowman

14

so che vengo a questo partito un po 'in ritardo, ma ho un'implementazione SLAM estremamente semplice che viene eseguito in MATLAB (o la libera Octave) che è utile per imparare le basi. L'implementazione è tanto semplice quanto comprende solo 283 linee di codice.

verificarlo qui: https://github.com/randvoorhies/SimpleSLAM

+0

Meglio tardi che mai :) Grazie per il link (e il codice) lo controllerò più in dettaglio una volta che avrò più tempo. – ldog

2

Inoltre, se si scrive C++, MRPT dovrebbe essere uno di vostra scelta nella realizzazione SLAM.

MRPT è Mobile Toolkit di programmazione robot che si basa su SLAM, computer vision e algoritmo di pianificazione del movimento. Troverete molti semplici esempi e alcune applicazioni utili come il filtro SLAM di Kalman, lo SLAM grafico, lo slam 3D kinect, ecc. Qui.

3

Un'altra risposta tardiva, ma mi sono appena imbattuto in un tutorial sulla creazione di EKF slam in Matlab o Octave dal Dr. Joan Sola qui: http://www.joansola.eu/JoanSola/eng/course.html.

Sono circa 8 ore di video ed è un po 'lento, ma ti guida attraverso un'implementazione funzionante di SLAM.