¿Qué conocimientos preparatorios se necesitan para aprender SLAM?
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.