1. Percepción/detección: Algoritmos que permiten al robot comprender su entorno a través de los sensores.
* Visión de la computadora:
* Detección de objetos: YOLO, SSD, R-CNN más rápido, Mask R-CNN, Transformers (DETR, DETR deformable)-Identificación y localización de objetos en imágenes/video.
* segmentación de imágenes: U -Net, DeepLab:dividiendo una imagen en regiones significativas, asignando una etiqueta a cada píxel.
* Detección y coincidencia de características: Sift, Surf, Orb:encontrar características distintivas en imágenes para que coincidan en diferentes puntos de vista y condiciones.
* Estructura del movimiento (SFM): Reconstruyendo la estructura 3D de una serie de imágenes 2D.
* Visual Slam (localización simultánea y mapeo): Orb-Slam, DSO-SLAM:construyendo simultáneamente un mapa del entorno y determinando la ubicación del robot dentro de ese mapa utilizando la visión.
* flujo óptico: Lucas -Kanade, Farneback - Estimando el movimiento de los objetos y el robot en sí mismo en función de los cambios en las características visuales.
* Estimación de profundidad: Visión estéreo, estimación de profundidad monocular con aprendizaje profundo (por ejemplo, usando transformadores).
* Procesamiento de lidar:
* Registro de nube de puntos: ICP (punto más cercano iterativo), Ransac:alineando nubes de puntos de múltiples escaneos para crear un modelo 3D completo.
* Reconocimiento y clasificación de objetos: PointNet, PointNet ++, DGCNN - procesando directamente los datos de la nube de puntos para identificar y clasificar objetos.
* segmentación: Cultivo de la región, ajuste de plano, segmentación de nubes de puntos basados en el aprendizaje profundo.
* lidar slam: Loam (odometría y mapeo LiDAR), LEGO -LOAM - Similar al SLAM visual, pero usando datos LIDAR.
* Mapeo de cuadrícula de ocupación: Representar el entorno como una cuadrícula donde cada celda indica si está ocupada o libre.
* Fusión del sensor: Combinando datos de múltiples sensores para obtener una percepción más precisa y robusta del entorno.
* Filtro Kalman: Estimación del estado de un sistema (por ejemplo, posición del robot y velocidad) combinando datos de sensor ruidoso con un modelo dinámico. Filtro Kalman extendido (EKF), el filtro Kalman sin perfume (UKF) son variaciones para sistemas no lineales.
* Filtrado bayesiano: Un marco general para combinar el conocimiento previo con los datos del sensor para actualizar las creencias sobre el entorno. Los filtros de partículas son una implementación específica.
* Filtro complementario: Combinación de la salida de diferentes sensores en función de sus características de frecuencia (por ejemplo, usando acelerómetro para el movimiento de alta frecuencia y el giroscopio para la orientación a largo plazo).
2. Localización y mapeo: Algoritmos que permiten al robot conocer su posición y crear una representación de su entorno. A menudo se superpone con la percepción.
* slam (localización y mapeo simultáneo): Como se mencionó anteriormente, tanto Visual como LiDar Slam son críticos. Los algoritmos clave incluyen:
* Ekf Slam: Un enfoque temprano que utiliza el filtro Kalman extendido.
* Slam basado en gráficos: Representar el mapa como un gráfico donde los nodos son posturas de robot y los bordes son restricciones entre poses. G2O, el solucionador de Ceres son bibliotecas de optimización comunes.
* Slam de filtro de partículas (Fastslam): Usando un conjunto de partículas (hipótesis) para representar las posibles poses y el mapa del robot.
* Gráficos de factor: Una generalización del slam gráfico que permite un modelado más flexible del ruido y las limitaciones del sensor.
* Solo localización:
* Monte Carlo Localización (MCL): Uso de un filtro de partículas para estimar la pose del robot dado un mapa conocido.
* AMCL (localización adaptativa de Monte Carlo): Una extensión de MCL que puede adaptar el número de partículas en función de la incertidumbre en la pose del robot.
* GPS (sistema de posicionamiento global): Para entornos al aire libre donde hay una señal GPS disponible. A menudo fusionado con otros sensores.
* Mapeo:
* Mapeo de cuadrícula de ocupación: Construyendo un mapa probabilístico del medio ambiente.
* Mapeo basado en características: Creación de un mapa de características salientes en el entorno (por ejemplo, esquinas, bordes).
* Mapeo topológico: Representar el entorno como un gráfico de lugares y conexiones entre ellos. Útil para la navegación de alto nivel.
* Mapeo semántico: Aumentar el mapa con información semántica sobre los objetos y lugares en el medio ambiente (por ejemplo, "cocina", "tabla", "persona").
3. Planificación y navegación: Algoritmos para determinar el mejor camino para que el robot siga para alcanzar una meta.
* Planificación de ruta:
* a* buscar: Un algoritmo de búsqueda de gráficos que encuentra la ruta más corta desde un comienzo hasta un objetivo, utilizando una heurística para guiar la búsqueda.
* algoritmo de Dijkstra: Otro algoritmo de búsqueda de gráficos que encuentra el camino más corto, pero sin una heurística.
* RRT (árbol aleatorio de exploración rápida): Un algoritmo que construye un árbol de posibles rutas probando aleatoriamente el espacio de configuración. RRT*, informado RRT* son variantes que mejoran el rendimiento.
* PRM (Hoja de ruta probabilística): Un algoritmo basado en muestreo que construye una hoja de ruta del medio ambiente, que luego puede usarse para planificar caminos entre dos puntos.
* Campos potenciales: Crear un campo potencial artificial donde el objetivo es atractivo y los obstáculos son repulsivos. El robot sigue el gradiente del campo.
* Optimización de trayectoria: Formular el problema de planificación de ruta como un problema de optimización y resolverlo utilizando técnicas como descenso de gradiente o programación cuadrática secuencial. Chomp, Trajopt.
* Planificación de movimiento: Considera la dinámica y las limitaciones del robot (por ejemplo, velocidad, aceleración, límites conjuntos) al planificar una ruta. A menudo usa la optimización de trayectoria.
* Navegación:
* Control PID: Un algoritmo de control ampliamente utilizado para regular el movimiento del robot. Términos proporcionales, integrales y derivados.
* Control predictivo del modelo (MPC): Una técnica de control avanzada que optimiza la trayectoria del robot sobre un horizonte finito, teniendo en cuenta la dinámica y las limitaciones del robot.
* Aprendizaje de refuerzo: Capacitar al robot para navegar en un entorno a través de prueba y error. Q-Learning, Deep Q-Networks (DQN), Optimización de políticas proximales (PPO). Particularmente útil para entornos dinámicos complejos.
* Robótica basada en el comportamiento: Diseñar el comportamiento del robot como una colección de módulos reactivos que responden a diferentes entradas de sensores. Arquitectura de subsunción.
* Planificación de tareas: Planificación de nivel superior que implica romper una tarea compleja en una secuencia de acciones. Redes de tareas jerárquicas (HTN).
4. Control: Algoritmos para ejecutar la ruta planificada y mantener la estabilidad.
* Control PID: (Como se mencionó anteriormente, también se usa en la navegación).
* Control de Feedforward: Uso de un modelo del sistema para predecir las entradas de control requeridas.
* Estimación de estado: (Kalman filtros, etc.) Estimando el estado interno del robot (posición, velocidad, etc.) de los datos del sensor. Esto es crucial para el control de retroalimentación.
* Control de fuerza: Controlando las fuerzas ejercidas por el robot en el medio ambiente. Posición híbrida/control de fuerza, control de impedancia, control de admisión. Importante para las tareas de manipulación.
* Control adaptativo: Ajuste de los parámetros de control en tiempo real para compensar los cambios en el entorno o la dinámica del robot.
* Control robusto: Diseño de controladores que son insensibles a las incertidumbres y perturbaciones.
* Control no lineal: Técnicas para controlar robots con dinámica no lineal. Backstaping, control de modo deslizante.
5. Manipulación: Algoritmos para agarrar, manipular y ensamblar objetos.
* agarrando:
* Planificación de agarre: Determinar la mejor manera de comprender un objeto basado en su forma y la pinza del robot.
* Cierre de la fuerza: Asegurar que el agarre sea estable y pueda resistir fuerzas externas.
* CONSEJO METRICAS DE CALIDAD: Evaluación de la calidad de una comprensión basada en factores como la estabilidad, la robustez y la destreza.
* Aprendizaje profundo para agarrar: Entrenamiento de redes neuronales para predecir las posturas de agarre directamente a partir de imágenes o nubes de puntos. GRASPNET, DEX-NET.
* Planificación de movimiento para la manipulación:
* Planificación basada en muestreo: (RRT, PRM) Planificación del movimiento del brazo del robot mientras evita las colisiones con el medio ambiente y el objeto que se manipula.
* Optimización de trayectoria: Optimización de la trayectoria del robot para minimizar el consumo de energía o el tiempo de ejecución.
* Control de fuerza para la manipulación: (Como se mencionó anteriormente)
* Planificación de ensamblaje: Planificación de la secuencia de acciones requeridas para ensamblar un objeto complejo.
* manipulación dexerous: Algoritmos para usar múltiples dedos o brazos para realizar tareas de manipulación complejas.
6. Aprendizaje automático e inteligencia artificial:
* Aprendizaje de refuerzo: (Como se mencionó anteriormente)
* Aprendizaje supervisado: Modelos de entrenamiento para predecir el comportamiento del robot o clasificar los datos del sensor.
* Aprendizaje no supervisado: Descubrir patrones en datos del sensor sin ejemplos etiquetados.
* Aprendizaje profundo: Uso de redes neuronales profundas para la percepción, planificación y control.
* Aprendizaje de imitación: Entrenando un robot para imitar el comportamiento de un demostrador humano.
* Modelos generativos: Creación de modelos que pueden generar nuevos datos (por ejemplo, imágenes, nubes de puntos) para la simulación o el aumento de datos. Gans, Vaes.
* Procesamiento del lenguaje natural (PNL): Permitiendo que los robots comprendan y respondan a los comandos del lenguaje natural.
Consideraciones importantes:
* Rendimiento en tiempo real: Muchos algoritmos de robótica deben ejecutarse en tiempo real para ser útiles.
* robustez: Los algoritmos deben ser robustos para el ruido, la incertidumbre y los cambios en el entorno.
* Complejidad computacional: La complejidad computacional del algoritmo debe considerarse, especialmente para robots con potencia de procesamiento limitada.
* Integración: Se deben integrar diferentes algoritmos para crear un sistema robótico completo.
* Simulación: La simulación a menudo se usa para desarrollar y probar algoritmos de robótica antes de implementarlos en robots reales. Gazebo, V-Rep/Coppeliasim, Pybullet son entornos de simulación comunes.
* marcos y bibliotecas: ROS (Robot Operating System) es un marco ampliamente utilizado que proporciona una colección de herramientas y bibliotecas para desarrollar software de robótica. OpenCV (para visión por computadora), PCL (Point Cloud Library), TensorFlow, Pytorch (para aprendizaje automático) también son esenciales.
Esta lista no es exhaustiva, pero proporciona una buena visión general de los algoritmos clave utilizados en la robótica. Los algoritmos específicos utilizados en un robot particular dependerán de la tarea, el entorno y el hardware del robot. El campo de la robótica está en constante evolución, por lo que se están desarrollando nuevos algoritmos y técnicas todo el tiempo.