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
risposta
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.
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
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 –
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.
OpenCV è utile per l'elaborazione delle immagini ma, oltre al filtro kalman, non sono inclusi algoritmi di mappatura completi – Janusz
OpenCV non è una piattaforma SLAM. È possibile creare un framework SLAM che lo utilizza ma da solo non ha alcuna relazione con SLAM. – twerdster
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
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.
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
il tuo link a "IROS 2010 paper" su SLAM flessibile è rotto. Potresti aggiornarlo? Sono interessante nel leggerlo. – Snowman
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
Meglio tardi che mai :) Grazie per il link (e il codice) lo controllerò più in dettaglio una volta che avrò più tempo. – ldog
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.
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.
Per sviluppare le vostre basi si può sicuramente provare il corso on-line di robot autonomi mobili su EDX: https://www.edx.org/course/autonomous-mobile-robots-ethx-amrx-1
MRPT è anche una buona choice.But assicurarsi di sapere i fondamenti del filtro di Kalman.
- 1. convertire la matrice tripletta semplice (slam) in matrice sparsa (Matrix) in R
- 2. Algoritmo complessità
- 3. Algoritmo logaritmo
- 4. Algoritmo Object.hashCode()
- 5. Algoritmo RANSAC
- 6. Algoritmo: trasformazione della distanza - qualsiasi algoritmo più veloce?
- 7. Algoritmo binario GCD vs algoritmo di Euclide sui computer moderni
- 8. Algoritmo di disegno della linea subpixel preciso (algoritmo di rasterizzazione)
- 9. Algoritmo di pesata rapida con algoritmo di compressione del percorso
- 10. algoritmo giudice gioco diplomazia
- 11. Expert System algoritmo
- 12. Modifica algoritmo di distanza
- 13. Algoritmo di disturbo Perlin
- 14. algoritmo incrementale k-core
- 15. Algoritmo ungherese in Python
- 16. Algoritmo colorazione selezione
- 17. problema algoritmo di selezione
- 18. Algoritmo per l'interpolazione 2D
- 19. algoritmo di ricerca
- 20. algoritmo sigma veloce
- 21. Algoritmo dijkstra su iOS
- 22. 0-1 algoritmo Knapsack
- 23. Markov Clustering Algoritmo
- 24. di interpretazione Dijkstra Algoritmo
- 25. zaino algoritmo di variazione
- 26. K-means ++ algoritmo
- 27. griglia algoritmo di puzzle
- 28. algoritmo AEC webrtc
- 29. Algoritmo per trovare rettangoli
- 30. Algoritmo di Recommender
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