Desarrollo de un robot autónomo con visión artificial para evasión de obstáculos
Development of an autonomous robot with artificial vision for obstacle avoidance
Ricardo Rosero1 , Marcelo Zambrano1
, César Minaya1
, Maxwel Salazar1
1Instituto Tecnológico Superior Rumiñahui, Sangolquí – Ecuador
Correo de correspondencia: ricardo.rosero@ister.edu.ec
Información del artículo
Tipo de artículo: Artículo original
Recibido: 10/07/2025
Aceptado: 02/09/2025
Publicado: 06/10/2025
Revista: DATEH
|
Resumen La investigación se enfocó en la implementación de un robot móvil evasor de obstáculos mediante visión artificial, utilizando el kit de robótica Lego Mindstorms EV3. El robot está configurado de manera de un robot móvil diferencial, por medio de la integración de sensores, actuadores y un controlador que permiten su desplazamiento autónomo. El sistema de control y la lógica de navegación se desarrollaron en Python, utilizando el entorno Spider y las librerías NumPy y Sklearn.Neural_Network, lo que facilitó la implementación de la red neuronal al reducir la complejidad de los cálculos matemáticos. Para la visión artificial, se incorporó una cámara Pixy, encargada de detectar objetos mediante el reconocimiento del tamaño y del color de los objetos y enviar la información al controlador, permitiendo que la red neuronal tome decisiones óptimas para la evasión de obstáculos. Se abordan conceptos de cinemática directa e inversa para determinar la posición y velocidad del robot, enfocándose en su configuración geométrica, por medio de pruebas y ajustes en la programación, se logró que el robot móvil EV3 se desplace de manera autónoma en su entorno, evitando obstáculos y proporcionando una respuesta auditiva sobre los colores detectados. Los resultados demuestran la efectividad del uso combinado de redes neuronales y visión artificial en la navegación autónoma de robots móviles.
Palabras clave: EV3, visión artificial, robótica, obstáculos
Abstract The implementation of an obstacle-avoiding mobile robot using artificial vision, using the Lego Mindstorms EV3 robotics kit. The robot is configured as a differential mobile robot, through the integration of sensors, actuators and a controller that allow its autonomous movement. The control system and navigation logic were developed in Python, using the Spider environment and the NumPy and Sklearn.Neural_Network libraries, which facilitated the implementation of the neural network by reducing the complexity of the mathematical calculations. For artificial vision, a Pixy camera was incorporated, responsible for detecting objects by recognizing the size and color of the objects and sending the information to the controller, allowing the neural network to make optimal decisions for obstacle avoidance. Concepts of direct and inverse kinematics are addressed to determine the position and speed of the robot, focusing on its geometric configuration. Through tests and adjustments in the programming, the EV3 mobile robot was able to move autonomously in its environment, avoiding obstacles and providing an auditory response on the detected colors. The results demonstrate the effectiveness of the combined use of neural networks and artificial vision in the autonomous navigation of mobile robots.
Keywords: EV3, machine vision, robotics, obstacles
|
INTRODUCCIÓN
Los robots móviles, resulta útil para llevar a cabo diversas tareas que requieren una programación o rutas predefinidas, permitiéndole moverse dentro de un entorno específico. Un ejemplo de ello es el robot enviado al espacio para la captura de imágenes y la recolección de muestras espaciales. (Munoz-Ceballos & Suarez-Rivera, 2022).
En el campo de la robótica móvil, el uso de sistemas avanzados de percepción y control es fundamental para desarrollar robots capaces de navegar de forma autónoma en entornos complejos. Un elemento clave en esta tarea es el diseño de sistemas de evasión de obstáculos que permitan al robot adaptarse a situaciones dinámicas en tiempo real. Tradicionalmente, sensores como el ultrasónico han sido ampliamente utilizados para la detección de obstáculos debido a su simplicidad y precisión en la medición de distancias. Sin embargo, en los últimos años, la incorporación de sistemas de visión artificial ha revolucionado este ámbito al ofrecer información más rica y detallada del entorno. (Arroyave et al., 2018).
Los robots autónomos, se definen como sistemas capaces de llevar a cabo tareas y operaciones sin requerir una supervisión o control directo por parte de los humanos. Su aplicabilidad abarca distintos sectores, desde la industria y el comercio hasta entornos más desafiantes como el agua, el aire e incluso el espacio, donde pueden desempeñar funciones complejas de manera independiente. (Sakai & Nagai, 2022)
En este contexto, el presente proyecto se enfoca en el desarrollo de un robot móvil diferencial, basado en el sistema Lego EV3, que utiliza una cámara Pixy, como sensor para la percepción del entorno y la evasión de obstáculos. Por medio de la cámara el robot puede diferenciar colores y tamaños de objetos, lo cual es invaluable para identificar y evadir obstáculos de manera más precisa y adaptativa. A diferencia de los sensores ultrasónicos, que solo proveen datos de distancia, la Pixy ofrece información contextual que ayuda al robot a clasificar y priorizar los objetos detectados. Esta característica resulta especialmente útil en escenarios donde el robot enfrenta múltiples obstáculos, ya que puede procesar y seleccionar el camino más adecuado en función de la posición relativa de cada objeto en su campo de visión.
Para optimizar esta capacidad de detección y clasificación, el proyecto incorpora técnicas de programación basadas en redes neuronales. La red neuronal utilizada se entrena para reconocer patrones y objetos específicos en el entorno del robot, permitiéndole diferenciar entre distintos tipos de obstáculos y adaptarse a cambios en el entorno. En particular, la programación de la red neuronal se centra en la clasificación de los objetos en función de su forma, tamaño y color, lo cual mejora significativamente la precisión del sistema de visión artificial. La red recibe como entrada las imágenes capturadas por la cámara Pixy, las procesa mediante técnicas de visión artificial y clasifica los objetos en diferentes categorías, determinando así si representan un obstáculo que debe evadirse. Esta capacidad de clasificación es especialmente relevante en situaciones donde el robot se enfrenta a obstáculos de diferentes características, ya que le permite tomar decisiones informadas y planificar su trayectoria de manera efectiva.
El uso exclusivo de la cámara Pixy y la red neuronal también presenta ventajas en términos de procesamiento y simplificación del sistema. Al depender únicamente de la visión artificial, el robot evita la redundancia de información que podría generarse al combinar múltiples sensores de diferentes tipos. Este enfoque no solo reduce el consumo de recursos computacionales, sino que también permite una integración más directa entre la detección de obstáculos y la planificación de la trayectoria. La red neuronal actúa como un filtro inteligente que interpreta las imágenes capturadas por la cámara, permitiendo al robot concentrarse en los obstáculos relevantes y descartar aquellos elementos del entorno que no representen una amenaza para su trayectoria.
MATERIALES Y MÉTODOS
Cinemática del Robot Móvil
Por medio de la cinemática del robot diferencial EV3, se analizó el movimiento y configuración del robot en su entorno de trabajo, considerando las relaciones entre los parámetros geométricos del robot y las restricciones de su movimiento. Las ruedas están controladas de manera independiente para permitir giros y desplazamientos laterales, lo que lo hace ideal para operaciones en espacios reducidos. Los ejes 𝑥𝐼 e 𝑦𝐼 definen una base inercial arbitraria en el plano como el sistema de referencia global de algún origen 0 {𝑥𝐼, 𝑦𝐼}. Para especificar la posición del robot, se elige un punto P en el chasis del robot como su punto de referencia de posición. La base {𝑥𝑅, 𝑦𝑅}.define dos ejes en relación con P en el chasis del robot y, por lo tanto, es la referencia local del robot. La posición de P en el sistema de referencia global se especifica mediante las coordenadas 𝑥 e 𝑦, la diferencia angular entre los sistemas de referencia global y local viene dada por 𝜃. Por lo tanto, se representa la postura del robot respecto al sistema de referencia global:
|
(1.1) |
Para describir el movimiento del robot en términos de movimientos de componentes, es necesario representar el sistema de referencia local respecto al sistema de referencia global.
|
(1.2) |
También se puede utilizar para representar un sistema de movimiento en el sistema de referencia global {𝑥𝐼, 𝑦𝐼} al movimiento en términos del sistema de referencia local {𝑥𝑅, 𝑦𝑅}.
|
(1.3) |
Esta
operación se denota por R(θ) porque el cálculo de esta operación depende
del valor de 𝜃.
|
(1.4) |
Debido a que (𝑥, 𝑦, 𝜃) son posiciones del robot en el plano derivamos estos valores (ẋ, ẏ, 𝜃˙) para obtener la velocidad. Dada alguna velocidad (𝑥˙, 𝑦˙, 𝜃˙) en el sistema de referencia global, se puede calcular los componentes del movimiento a lo largo de los ejes locales de este robot 𝑥𝑅, 𝑦𝑅.
|
(1.5) |
Modelo Cinemático del Robot Diferencial
La configuración de un robot diferencial está dada por un eje en común y dos ruedas, la velocidad de cada rueda está controlada por un motor independiente. Las ruedas del robot tienen radio 𝑟 y la distancia entre las mismas es 2𝑏. Se tiene que tomar las siguientes consideraciones para el análisis cinemático del robot:
· El sistema de referencia del robot se asignará entre ambas ruedas y sobre el eje de giro de las mismas.
· La rueda omnidireccional de apoyo no genera restricciones
· La velocidad de giro de la rueda derecha es 𝝋˙ 𝑑 y de la izquierda es 𝝋˙ 𝑖
Figura 1. Geometría de un robot con accionamiento direccional.
Restricción de rodadura (en el plano de la rueda):
|
(1.6) |
Restricción de deslizamiento (perpendicular al plano de la rueda):
|
(1.7) |
Se aplican por separado a las dos ruedas activas del robot. Para emplear las dos fórmulas de restricción, primero se debe identificar los valores de 𝛼 y 𝛽 para cada rueda. Como la tercera rueda omnidireccional es pasiva y puede moverse libremente en cualquier dirección (rueda loca). El sistema de referencia local del robot (𝑋𝑅, 𝑌𝑅) está alineado de manera que el robot se mueve hacia adelante a lo largo del eje +𝑋𝑅. Para la rueda fija derecha 𝛼 = −90°, β = 180° y 𝑙 = 𝑏. Reemplazando estos valores en las ecuaciones de restricción para cada rueda fija se obtiene:
Restricciones de rodadura y deslizamiento para la rueda derecha:
Restricciones de rodadura y deslizamiento para la rueda izquierda:
|
(1,9) |
A partir de estas ecuaciones matriciales, se construye las
matrices 𝐽1(𝛽𝑠), y 𝐽2, Además;
se tiene que considerar que las dos ruedas motrices no son orientables las dos
primeras matrices solo están compuestas por los términos 𝐽1𝑓 y 𝐶1𝑓 respectivamente, así
se obtiene que:
|
(1,10) |
Se determina la matriz jacobiana, la cual permite obtener
la expresión cinemática diferencial directa del robot, conociendo que 𝑚 > 𝑛 en la matriz 𝐵 se obtiene:
|
(1,11) |
La expresión para la velocidad lineal y angular del robot en función de la velocidad de las ruedas con respecto a su sistema de referencia local:
|
|
(1,12) |
La cinemática directa en el sistema inercial quedaría:
|
(1,13)
|
Las velocidades respecto al sistema inercial y en función de las velocidades lineales y angulares locales del robot.
|
(1,14) |
|
|
(1,15) |
|
Considerando que el radio de la rueda del robot EV3 es de 2.8 cm y el valor del parámetro b es de 6 cm se pueden obtener las siguientes ecuaciones finales que representan la cinemática directa final del robot EV3.
|
(1,16) |
La matriz jacobiana inversa puede ser obtenida a partir de la expresión 𝐽−1 = 𝐷+𝐵 = (𝐷𝑇𝐷)−1𝐷𝑇𝐵 o utilizando directamente la matriz jacobiana mediante 𝐽+ = (𝐽𝑇𝐽)−1𝐽𝑇:
|
(1,17) |
La representación matricial de la cinemática inversa diferencial respecto al sistema de referencia local del robot es:
|
(1,18) |
Para calcular la cinemática inversa respecto al sistema de
coordenadas global reemplaza en la expresión anterior la relación , con lo que se obtiene.
|
(1,19) |
Las ecuaciones obtenidas proporcionan las relaciones cinemáticas correctas entre las variables de movimiento y rotación en el plano, pero no incluyen la complejidad de la suspensión o la dinámica del motor.
Considerando el parámetro b que es un valor tomado desde el centro del robot hasta la mitad de la rueda que es de 6 cm se pueden obtener las siguientes ecuaciones finales que representan la cinemática inversa del robot EV3.
|
(1,20) |
Visión artificial
La visión artificial es un área de gran importancia en el campo científico. Utiliza diversas herramientas para adquirir, analizar y procesar imágenes del entorno, con el objetivo de generar información en forma de modelos matemáticos que puedan ser interpretados por un computador. A través de un ordenador, la visión artificial busca percibir, analizar, comprender el entorno externo y tomar decisiones de forma autónoma según convenga.
Figura 2. Elementos de la visión artificial.
Etapas del Proceso de Visión Artificial
La visión artificial abarca un conjunto de procesos destinados al estudio de imágenes, que incluyen: captación, preprocesamiento, segmentación, extracción de características, reconocimiento, clasificación e interpretación. Esta tecnología permite optimizar procesos de calidad, selección y verificación de productos. En el ámbito médico, se utiliza para identificar patrones y detectar anomalías, como tumores, además de asistir en operaciones con robots de alta precisión. También facilita la lectura de caracteres, símbolos y datos de productos mediante cámaras y códigos de barras.
Figura 3. Procesamiento de visión artificial.
RESULTADOS Y DISCUSIÓN
La configuración del robot Mindstorm EV3 para evadir obstáculos por medio de la programación de una red neuronal, reconoce diferentes colores y su entorno de trabajo. Las redes neuronales artificiales (RNA) son sistemas matemáticos de procesamiento que se asemejan a las redes neuronales biológicas, que se comunican entre sí a través de nodos, los cuales envían y reciben información. El proceso de entrenamiento de estas redes permite que aprendan a identificar patrones de relación entre las variables definidas y los resultados, habilitándolas para manejar nuevos datos y proporcionar las respuestas adecuadas.
Figura 4. Esquema general del proyecto.
El bloque del Mindstorm EV3, está conformado por el microprocesador AM1808 ARM, este dispositivo cuenta con un sólido sistemas operativos, interfaces de usuario y máxima flexibilidad de un procesador mixto totalmente integrado solución.
El microprocesador es el encargado de recibir las señales de la cámara que se encuentra instalado en el puerto 1 y un pulsador de marcha en el puerto 3, para el control de los movimientos por medio de dos motores que están conectados en los puertos B y C.
Figura 5. Robot EV3.
Para la programación del robot EV3 se necesita expandir la memoria con una tarjeta SD, y realizar la instalación de la imagen de Debian Stretch en la memoria SD e iniciar el Bloque inteligente Mindstorms EV3.
Por medio de SSH o Secure Shell, que es un protocolo de administración remota se conectó al bloque inteligente del EV3 para realizar la programación de manera inalámbrica, lo que ayuda a realizar pruebas de código de manera más rápida.
Figura 6. Conexión de manera remota con el bloque inteligente del EV3.
Se instala el gestor de paquetes para Python 3, que permite instalar y gestionar bibliotecas y dependencias de Python para la programación del robot.
Por medio de la cámara PixyMon, se puede reconocer colores y formas de objetos para evadir obstáculos, se tiene que configura los label de los colores, el brillo y se selecciona el tipo de comunicación.
Figura 7. Detección de colores.
Por medio de la cámara Pixy se pueden detectar colores, formas, tamaños. La configuración de este se realizar por medio del firmware pixyMon está disponible en diferentes sistemas operativos Windows, OS X, y Linux. Esta plataforma es muy fácil de usar con la capacidad de grabar diferentes objetos, se define el nombre de cada color que detecta la visión artificial, de esta manera el robot pueda informar cada vez que se encuentre con uno en el camino.
Para iniciar este proceso se calcula los resultados que se desea obtener mediante una red neuronal, se utilizó el algoritmo de optimización Limited Memory Broyden Fletcher Goldfarb para entrenar el modelo de machine learning.
Figura 8. Diagrama de flujo del robot EV3.
Para el diseño de la red neuronal, es necesario la instalación de una versión de Python 3 compatible con la biblioteca Scikit Learn. Para el desarrollo de este proyecto se utiliza Python 3.6.5 sobre Anaconda, adicionalmente se tiene que instalar las librerías de Scikit Learn y Numpy.
Para la generación de la inteligencia artificial se tomó en cuenta todas las combinaciones posibles que forme la cámara Pixy, para lo cual se todo en cuenta la resolución de la pantalla del bloque inteligente del EV3 que es de (178x128 px). Se decidió dividir en tres secciones de manera horizontal para poder identificar la posición del objeto y se asigna valores de -1, 0, 1 y 2 a las posiciones izquierdas, centro, derecha y sin obstáculo, respectivamente.
Figura 9. Distribución de pixeles en pantalla del robot.
Con las combinaciones posibles de los objetos detectados por la cámara Pixy, se decidió implementar un perceptrón multicapa con una capa oculta de 4 neuronas, cuyas entradas corresponden a los valores de la cámara digital, mientras que las salidas serán señales de activación para los motores izquierdo y derecho.
Figura 10. Cálculo de pesos y sesgo de la red neuronal.
El algoritmo de clasificación multicapa de Scikit-learn permite definir el optimizador para minimizar la función de coste, así como el número de neuronas en cada capa oculta y la función de activación. Durante el entrenamiento, se determinó que el algoritmo Limited Memory Broyden-Fletcher-Goldfarb-Shanno (LBFGS) es el mejor optimizador, ya que converge más rápidamente y ofrece un rendimiento superior. La función de activación seleccionada es la sigmoide, que establece que, si la salida de la red neuronal supera el 50% de probabilidad, se activa como 1; de lo contrario, se apaga como 0. Así, las matrices de peso y de sesgo obtenidas garantizan una precisión del 100% en las predicciones con respecto a los datos de entrada. Estas matrices se cargarán en el bloque EV3.
CONCLUSIONES
La implementación del algoritmo de clasificación multicapa de Scikit-learn, junto con el optimizador LBFGS, demostró ser altamente efectiva para lograr una alta precisión en las predicciones, lo que permitió al robot tomar decisiones informadas al navegar en su entorno.
La integración de algoritmos de aprendizaje automático con el bloque EV3 demostró ser un enfoque eficaz que combina procesamiento avanzado con plataformas de robótica educativa, la sinergia permitió al bloque EV3 ejecutar tareas complejas como la detección y evasión de obstáculos.
La implementación de la función de activación sigmoide resultó ser altamente efectiva en la detección de obstáculos, permitiendo que el robot responda de manera ágil y precisa a su entorno. Al establecer un umbral de activación del 50% para las salidas de la red neuronal, el sistema demostró una capacidad robusta para identificar situaciones críticas y activar los mecanismos de evasión de forma oportuna. Esta precisión no solo mejoró la navegabilidad del robot en entornos complejos, sino que también validó la efectividad de las técnicas de aprendizaje automático aplicadas en robótica.
CONTRIBUCIÓN DE LOS AUTORES
Todos los autores han contribuido de manera equitativa a la concepción, diseño, desarrollo, análisis de datos y redacción del manuscrito.
AGRADECIMIENTOS
Los autores expresan su agradecimiento al Instituto Tecnológico Superior Rumiñahui por el apoyo brindado durante la realización de este estudio.
REFERENCIAS BIBLIOGRÁFICAS
Alcala, U. d. (2021). HERRAMIENTA BÁSICA PARA EL DATA SCIENCE EN PYTHON. Obtenido de HERRAMIENTA BÁSICA PARA EL DATA SCIENCE EN PYTHON: https://www.master-data-scientist.com/scikit-learn-data-science/
Alonso, F. (2021, abril 8). Redes Neuronales y Deep Learning. Capítulo 2: La neurona. Future Space S.A. https://www.futurespace.es/redes-neuronales-y-deep-learning-capitulo-2-la-neurona/
Arroyave, L. F. O., Carvajal, M. V., & Ceballos, N. D. M. (2018). NAVEGACION DE ROBOTS MOVILES EN ENTORNOS CON DISCONTINUIDADES: UNA REVISION. https://www.redalyc.org/journal/6078/607866319011/html/
Florez, O. U. (2018, agosto 1). Un LEGO a la vez: Explicando la Matemática de como las Redes Neuronales Aprenden. LatinXinAI. https://medium.com/latinxinai/un-lego-a-la-vez-explicando-la-matem%C3%A1tica-de-como-las-redes-neuronales-aprenden-ae582ab91da6
Javier Finance. (2021, enero 6). Tipos de redes neuronales (Clasificación). Inteligencia-artificial.dev. https://inteligencia-artificial.dev/tipos-redes-neuronales/
Martinez-Zamudio, P., González-Villela, V., López-Parra, M., & Ramírez-Reivich, A. C. (2015). Cinemática Diferencial de un Manipulador Paralelo Plano 3RRR-(RRR)v con Actuación Virtual Indirecta. Ingeniería mecánica, tecnología y desarrollo, 5(3), 321–331. https://www.scielo.org.mx/scielo.php?script=sci_arttext&pid=S1665-73812015000200002
Modelo cinemático y simulación de un robot móvil diferencial. (2022, agosto 15). Roboticoss; edisonsasig. https://roboticoss.com/modelo-cinematico-y-simulacion-con-python-robot-movil-diferencial/
Munoz-Ceballos, N. D., & Suarez-Rivera, G. (2022). Criterios de desempeño para evaluar algoritmos de navegación de robots móviles: una revisión. Revista Iberoamericana de Automática e Informática Industrial, 19(2), 132-143.
Sakai, T. y Nagai, T. (2022). Robots autónomos explicables: una encuesta y una perspectiva. Advanced Robotics , 36 (5–6), 219–238. https://doi.org/10.1080/01691864.2022.2029720
Sánchez, D. E. H., Cuenca, J. R. E., Sánchez, C. C., & Cortés, J. F. R. (s/f). “Diseño, construcción y modelo dinámico de un robot móvil de tracción diferencial aplicado al seguimiento de trayectorias”. Org.mx. Recuperado el 31 de octubre de 2024, de https://somim.org.mx/memorias/memorias2017/articulos/A3_189.pdf