Red de conocimiento informático - Conocimiento informático - ¿Qué conocimientos preparatorios se necesitan para aprender SLAM?

¿Qué conocimientos preparatorios se necesitan para aprender SLAM?

SLAM cubre una gran cantidad de contenido y se divide en dos partes: front-end y back-end. El front-end estudia principalmente el empalme de marcos adyacentes, también llamado alineación. Dependiendo del sensor, hay nubes de puntos láser, imágenes, empalme RGB-D, etc. El registro de imágenes se divide en dos tipos: basado en características dispersas (Sparse) y basado en características densas (Dense). El back-end estudia principalmente la corrección de errores acumulativos en la unión de mapas (front-end). Hay dos métodos principales: filtros bayesianos (EKF, PF) basados ​​​​en la teoría de la probabilidad y métodos basados ​​​​en optimización. EKF rara vez se usa y PF también se usa en SLAM (Gmapping) de mapas 2D. La mayoría de las optimizaciones aún están en progreso.

Tú mismo has explicado los conocimientos necesarios para esta pieza, uno son matemáticas y el otro es programación. Por tanto, para empezar a aprender, también debemos partir de estos dos aspectos.

1. Matemáticas

En términos de matemáticas, sugiero la "Robótica probabilística" de Thrun mencionada anteriormente. De hecho, no es necesario leerlo todo. Cómo la probabilidad resuelve problemas en robots. Es necesario aprender el filtrado bayesiano, que es la aplicación de la fórmula bayesiana en varios problemas (posicionamiento, SLAM). Además, en términos de optimización, se recomienda calcular primero la optimización de mínimos cuadrados y luego hacer algunas derivaciones matemáticas, porque muchos problemas tienen que ver en última instancia con la optimización de mínimos cuadrados y luego el descenso de gradiente, el cálculo jacobiano, etc.

En segundo lugar, la programación

Las cosas teóricas son aburridas, por lo que necesitas practicar más. Se recomienda que primero escriba una ronda de optimización de mínimos cuadrados al comenzar. Solo puede realizar un ajuste simple en línea recta, no utilizar las herramientas de optimización en Matlab y comprender cómo se escribe finalmente la derivación matemática en el código. Luego, asegúrese de probar con el kit de herramientas de optimización de Matlab, es más fácil experimentar.

Una vez que tenga cierta base, puede intentar jugar con algunos paquetes SLAM existentes. Se recomiendan dos lugares. Uno es www.openslam.org, que contiene varios paquetes SLAM y algoritmos SLAM convencionales. el general Todos tienen código fuente. El otro es ROS, que contiene muchos paquetes SLAM existentes, como Gmapping y RGB-D SLAM. Es fácil comenzar incluso si no tiene ningún equipo, puede usar el entorno de simulación en ROS (como Gazebo). ) para ejecutarlo. Se recomienda que pruebe Gmapping primero. Hay muchos tutoriales chinos sobre Baidu. Ejecutar estos paquetes de software al principio sigue siendo muy satisfactorio y puede aumentar su interés.

Si estás haciendo visión o RGB-D, OpenCV y PCL son herramientas esenciales. No puedes equivocarte si empiezas temprano.

3. Avanzado

Después de comenzar, debe aprender basándose en proyectos de investigación de laboratorio, lo que depende de si usa láseres, cámaras o Kinect, y los algoritmos de front-end de Diferentes sensores Todavía hay algunas diferencias. Los láseres suelen utilizar ICP y son relativamente simples. Todavía hay muchas cosas visuales. La "Geometría de vista múltiple en visión por computadora" recomendada anteriormente es realmente muy importante, pero creo que también deberías aprender a extraer características, descriptores de características y coincidencia de características al mismo tiempo. Si su laboratorio está realizando un registro denso, entonces todavía tiene que aprender cosas como álgebra de Lie (¡es tan avanzada que ni siquiera el maestro Li Qun pudo entenderla después de verla durante muchos días!). De hecho, muchos algoritmos tienen paquetes de código abierto. Puede ir a ROS, al blog de un determinado maestro y a la página de inicio de Daniel Lab para explorar más.