Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial Internet of Things >> Incrustado

Facilitar el desarrollo de aplicaciones visuales SLAM

La localización y mapeo simultáneos (SLAM) describe el proceso mediante el cual un dispositivo, como un robot, utiliza datos de sensores para crear una imagen del entorno que lo rodea y, al mismo tiempo, determinar su posición dentro de ese entorno. Hay muchas formas diferentes de implementar SLAM, tanto en términos de los algoritmos de software implementados como de los sensores utilizados, que pueden incluir cámaras, Sonar, Radar, LiDAR y datos posicionales básicos, utilizando una unidad de medida inercial (IMU).

La disponibilidad de cámaras pequeñas y económicas ha impulsado la popularidad de los sistemas Monocular Visual SLAM, que utilizan un único camerato estándar que realiza las funciones de ubicación y mapeo. , robots de campo en agricultura, drones y, potencialmente, vehículos autónomos. Los sistemas Visual SLAM también ofrecen ventajas donde el GPS no está disponible, por ejemplo, en áreas interiores o en grandes ciudades, donde la obstrucción por edificios reduce la precisión del GPS.

Este artículo describe el proceso básico de SLAM visual, cubriendo los módulos y los algoritmos involucrados en el reconocimiento y seguimiento de objetos y la corrección de errores. Se discuten las ventajas de descargar el cálculo y la funcionalidad de SLAM a DSP dedicados y el kit de desarrollo CEVA-SLAM SDK se utiliza como una ilustración de los beneficios que se pueden obtener siguiendo esta ruta de desarrollo.

SLAM directo y basado en funciones

Hay muchos enfoques diferentes para la implementación de SLAM visual, pero todos usan el mismo método general, rastreando puntos de ajuste a través de cuadros de cámara consecutivos para triangular su posición 3D mientras simultáneamente usan esta información para aproximar la pose de la cámara. Paralelamente, los sistemas SLAM utilizan continuamente algoritmos complejos para minimizar la diferencia entre los puntos proyectados y reales:el error de reproyección.

Los sistemas Visual SLAM se pueden clasificar como directos o basados ​​en características, según la forma en que utilizan la información de una imagen recibida. Los sistemas Direct SLAM comparan imágenes enteras entre sí, proporcionando información rica sobre el entorno, lo que permite la creación de un mapa más detallado pero a expensas del esfuerzo y la velocidad de procesamiento. Este artículo se centra en los métodos SLAM basados ​​en características, que buscan en la imagen características definidas, como esquinas y "manchas", y basan la estimación de la ubicación y los alrededores solo en estas características. Aunque los métodos SLAM basados ​​en características descartan cantidades significativas de información valiosa de la imagen, la compensación es un proceso simplificado que es computacionalmente más fácil de implementar.


Figura 1:SLAM directo frente a basado en funciones. (Fuente:https://vision.in.tum.de/research/vslam/lsdslam)

El proceso de SLAM visual

Los pasos principales en SLAM basado en características son la extracción de un conjunto de características escasas de las imágenes de entrada, la coincidencia de las características obtenidas de diferentes poses de cámara y la resolución del problema SLAM minimizando el error de reproyección de características (la diferencia entre la ubicación rastreada de un punto y dónde se espera obtener la estimación de la postura de la cámara, en todos los puntos).

Estos pasos se logran mediante un conjunto de bloques de construcción, que se describen a continuación, que son comunes a todas las implementaciones de SLAM basadas en características. Visual SLAM es un área en evolución que genera una cantidad significativa de investigación y se han desarrollado y propuesto varios algoritmos para cada módulo, cada uno de los cuales tiene pros y contras, dependiendo de la naturaleza exacta de la implementación de SLAM. La descripción a continuación menciona un subconjunto de los algoritmos más populares actuales.

La extracción de características, figura 2, es un proceso que representa de manera eficiente información útil en una imagen, como esquinas, bordes, manchas y objetos más complejos, como puertas y ventanas, como un vector de características compacto. Los algoritmos de extracción de características más populares incluyen Diferencia de Gauss (DoG) y Características de la prueba de segmento acelerada (FAST9), un método de detección de esquinas que se adapta bien al procesamiento de video en tiempo real debido a su eficiencia computacional.


Figura 2:Extracción de características SLAM. (Fuente:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

En Descripción de características, la región alrededor de cada característica extraída se convierte en un descriptor compacto que se puede comparar con otros descriptores. Las características pueden describirse, por ejemplo, por su apariencia o por la intensidad de los píxeles en un parche alrededor del punto de característica. ORB y FREAK son ejemplos de algoritmos de descriptores de características populares.

En Feature Matching, las características extraídas (descriptores) se combinan en varios marcos. Las características se combinan en dos imágenes comparando todas las características de la primera imagen con todas las características de la segunda imagen. La función de distancia de Hamming se usa comúnmente en la coincidencia de características, ya que se puede realizar de manera eficiente en hardware utilizando XoR y funciones de conteo de bits en conjuntos de datos de bits, como vectores. La distancia de Hamming da una indicación de cuántos bits en dos vectores son diferentes, lo que significa que cuanto menor es el puntaje, más cercana es la coincidencia.

Loop Closure es el paso final en el proceso SLAM y asegura una solución SLAM consistente, particularmente cuando las operaciones de localización y mapeo se llevan a cabo durante un largo período de tiempo. El cierre de bucle observa la misma escena mediante fotogramas no adyacentes y agrega una restricción entre ellos para reducir la deriva acumulada en la estimación de pose. Al igual que con los otros módulos SLAM visuales, se ha desarrollado una variedad de algoritmos para el cierre de bucles, siendo los más populares el ajuste de paquetes, el filtrado de Kalman y el filtrado de partículas.

Los algoritmos VSLAM son un área de investigación activa y los anteriores son ejemplos de un número creciente de técnicas que han surgido en los últimos años. Los métodos SLAM basados ​​en funciones son preferibles para las soluciones integradas, ya que permiten velocidades de procesamiento más rápidas y hacen un uso más eficiente del ancho de banda de la memoria. Además, las soluciones basadas en funciones exhiben niveles más altos de robustez en una variedad de condiciones, incluidos cambios rápidos en el brillo, niveles bajos de luz, movimientos rápidos de la cámara y oclusiones.

La elección de un algoritmo específico depende de las características de la aplicación en particular, incluidos los tipos de mapas, los tipos de sensores, el grado de precisión requerido y muchos más. Muchos sistemas SLAM incorporan una combinación de algoritmos que mejor se adaptan a la más amplia gama de escenarios.

Desafíos de la implementación de SLAM

El procesamiento de Visual SLAM es extremadamente intensivo desde el punto de vista computacional, lo que impone una gran carga a las implementaciones tradicionales basadas en CPU, lo que genera un consumo de energía excesivo y velocidades de cuadro bajas, con los consiguientes impactos en la precisión y la duración de la batería. Los desarrolladores de aplicaciones SLAM emergentes requieren soluciones que ofrezcan mayores niveles de integración y menor consumo de energía. Cada vez más utilizan unidades de procesamiento de visión (VPU) dedicadas en sus diseños. Una VPU es un tipo de microprocesador con una arquitectura diseñada específicamente para la aceleración de tareas de visión artificial, como SLAM, y que se puede utilizar para descargar el procesamiento de visión de la CPU de la aplicación principal. Las VPU, como las CEVA CEVA-XM6, figura 3, incluyen características como bajo consumo de energía, ALU potentes, potentes capacidades MAC, acceso a memoria de alto rendimiento e instrucciones de visión dedicadas. Los dispositivos también admitirán las potentes capacidades de punto flotante que requieren las aplicaciones de procesamiento de imágenes.


Figura 3:Unidad de procesamiento de visión CEVA XM6. (Fuente:CEVA)

Sin embargo, incluso con las VPU, el desarrollador de SLAM visual debe superar varios desafíos, ya que crear un código eficiente para los diferentes módulos de SLAM no es una tarea trivial y también puede ser difícil conectar la VPU al procesador principal.

La creación de código eficiente es crucial en aplicaciones integradas, donde la velocidad de ejecución y el consumo de energía deben optimizarse. La codificación de módulos visuales SLAM es una tarea compleja, que potencialmente requiere la obtención, almacenamiento y manipulación de grandes cantidades de datos. En la coincidencia de características, por ejemplo, los descriptores se almacenan en la memoria como vectores de 128 bits y, para hacer coincidir características en cuadros consecutivos, normalmente se deben comparar 200 características con 2000 candidatos, lo que lleva a 400.000 operaciones de coincidencia. Obviamente, la operación de comparación requiere una gran cantidad de memoria, pero también, cuando el tamaño de los datos muestreados es pequeño, la alta sobrecarga de obtener y formatear los datos puede comprometer la eficiencia del algoritmo codificado.

El ajuste de paquete es otro algoritmo que involucra álgebra lineal compleja, que involucra la manipulación de matrices grandes. Existen varias técnicas para optimizar la codificación para estos y otros módulos VSLAM, pero la implementación de estas técnicas requiere un alto nivel de experiencia en codificación específica de la visión.

La gestión de la memoria es otro desafío en el procesamiento de imágenes. Los datos capturados de una imagen generalmente se cargan en ubicaciones de memoria consecutivas y trabajar con parches aleatorios en una imagen significa tratar con datos que no están almacenados en ubicaciones de memoria consecutivas. Las rutinas de software, que realizan la comparación de características, deben recuperar descriptores de ubicaciones de memoria no consecutivas, lo que aumenta aún más la sobrecarga de configuración.

Herramientas de desarrollo de VSLAM

Dado que la velocidad de comercialización es fundamental en el entorno actual, no siempre es práctico para un desarrollador tomarse el tiempo para adquirir las habilidades y el conocimiento necesarios para implementar un código de procesamiento de visión eficiente. Afortunadamente, existen varias herramientas para facilitar la aceleración de aplicaciones SLAM rentables; Hay disponibles kits de desarrollo de aplicaciones que brindan una combinación de bibliotecas de software específicas de visión, hardware optimizado y herramientas de integración para permitir al desarrollador descargar fácilmente las tareas específicas de visión de la CPU a la VPU.

El SDK de CEVA SLAM, figura 4, es un ejemplo destacado de un conjunto de herramientas de desarrollo de aplicaciones de este tipo.


Figura 4:El SDK de CEVA SLAM. (Fuente:CEVA)

Basado en el hardware del procesador CEVA XM6 DSP y CEVA NeuPro AI, el CEVA SLAM SDK permite la integración eficiente de implementaciones SLAM en sistemas integrados de baja potencia. El SDK presenta una serie de bloques de construcción que incluyen bibliotecas de procesamiento de imágenes que brindan un código eficiente para la detección y coincidencia de características, así como el ajuste de paquetes. También proporciona soporte para álgebra lineal, resolución de ecuaciones lineales, resolución rápida de ecuaciones dispersas y manipulación de matrices.

El hardware CEVA XM6 está optimizado para el procesamiento de imágenes con características innovadoras como la instrucción de carga paralela, que aborda el problema de acceso a la memoria no consecutiva, y también una instrucción exclusiva y dedicada para ejecutar el cálculo de la distancia de Hamming. El SDK también incluye una interfaz de CPU detallada, que permite al desarrollador integrar fácilmente la funcionalidad de procesamiento de visión con la CPU de la aplicación principal.

Como ilustración del rendimiento del SDK como herramienta de desarrollo, se midió que una implementación de referencia de un módulo de seguimiento SLAM completo que se ejecuta a 60 fotogramas por segundo tiene un consumo de energía de solo 86 mW.

Conclusión

Los sistemas Visual SLAM están ganando popularidad en una amplia gama de aplicaciones, como robots agrícolas y drones. Hay una serie de métodos alternativos para la implementación de SLAM visual pero, con la creciente implementación en aplicaciones integradas, la eficiencia de la codificación y el bajo consumo de energía son factores críticos.

Si bien es común que los desarrolladores usen VPU para descargar las tareas de procesamiento de visión intensivas en computación de la CPU principal, quedan desafíos importantes para producir un código eficiente y también para administrar la interfaz entre la VPU y la CPU.

Con el tiempo de comercializar un impulsor clave, los desarrolladores pueden acelerar el desarrollo de productos aprovechando las capacidades integradas en los kits de herramientas de desarrollo específicos de SLAM, como CEVA SLAM SDK.


Incrustado

  1. El papel de la extrusión en las aplicaciones de impresión 3D
  2. Aplicaciones de IA en la cadena de suministro global
  3. Todas las aplicaciones de los pigmentos de ftalocianina
  4. Todas las aplicaciones de los tintes básicos
  5. Todas las aplicaciones del pigmento azul
  6. El desarrollo de plásticos modernos
  7. Cómo seleccionar un controlador
  8. Las aplicaciones de los vibradores industriales
  9. Industria 4.0:el desarrollo de una ciberseguridad única
  10. El impacto de la gestión visual en la industria
  11. La importancia de la interoperabilidad en las aplicaciones de software 3D