Exploré este problema exacto en mi tesis de maestría, Evaluación de un SoC para 3D SLAM en tiempo real.
Consideré muchos de los factores presentados en la excelente respuesta de Sharad Sinha. Finalmente elegí acelerar la porción de búsqueda de vecinos más cercana del algoritmo Iterative Closest Point después de la creación de perfiles. Este es un componente clave en muchos problemas de localización y alineación 3D, y a menudo es un cuello de botella en el rendimiento.
Implementé una arquitectura de matriz sistólica para realizar una búsqueda de distancia mínima canalizada para lotes de 110 puntos. Este diseño finalmente resultó en una aceleración de 13.74x sobre el vecino ARM de punto fijo más cercano.
- Un problema importante con los algoritmos de programación prioritarios es el bloqueo indefinido o la inanición. ¿Puede explicar el concepto de inanición y cómo a menudo se resuelve en la programación de prioridades?
- ¿Cuáles son los algoritmos más importantes y ampliamente utilizados para leer sobre criptografía?
- ¿La matriz de Java de primitivas se almacena en la pila o el montón?
- ¿Puede un gráfico tener bordes dirigidos y no dirigidos?
- ¿Estaría de acuerdo en que el aprendizaje profundo es el único algoritmo que rige sobre todos los demás algoritmos en el aprendizaje automático?
Mis objetivos de diseño eran agrupar tantos puntos como fuera posible para reducir la sobrecarga de E / S y maximizar el uso de los segmentos DSP presentes en el FPGA (estos son necesarios para multiplicar y agregar operaciones).
Hay mucho más que puedes hacer para investigar SLAM en FPGA o SoC. Mi diseño estaba implementando un algoritmo SLAM muy básico que no era adecuado para usar fuera de la investigación. El ICP punto a punto no es la mejor manera de avanzar, y se ha demostrado que los mejores algoritmos que utilizan la alineación punto a plano o SDF a SDF funcionan mucho mejor.
¡La mejor de las suertes!