SciELO - Scientific Electronic Library Online

 
vol.21 número2Design of Flat Halfband Filters With Sharp Transition and Differentiators through Constrained Quadratic OptimizationBridging the Gap Between Model-Based Design and Reliable Implementation of Feedback-Based Biocircuits: A Systems Inverse Problem Approach índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Servicios Personalizados

Revista

Articulo

Indicadores

Links relacionados

  • No hay artículos similaresSimilares en SciELO

Compartir


Computación y Sistemas

versión On-line ISSN 2007-9737versión impresa ISSN 1405-5546

Comp. y Sist. vol.21 no.2 Ciudad de México abr./jun. 2017

https://doi.org/10.13053/cys-21-2-2739 

Articles

Identificación del campo de trabajo de un robot hexápodo utilizando optimización multiobjetivo

Identification of the Workspace of a Hexapod Mobile Robot Using Multobjective Optimization

Josué Domínguez Guerrero1 

Roberto Sepúlveda1 

Oscar Montiel1 

Oscar Castillo2 

1 Instituto Politécnico Nacional, Centro de Investigación y Desarrollo de Tecnología Digital (CITEDI), Tijuana, B.C., Mexico

2 Tijuana Institute of Technology, Tijuana, B.C., México


Abstract:

In this paper, an innovative method to find the workspace of a hexapod mobile robot is presented. Differently, to the current state of the art methods that allows to determine the working spaces for walking in straight line, the proposed method allows estimating the optimal set of configurations for walking in any viable direction. The method takes advantage of the existing similitudes between the hexapod and the Delta robot during the tripod walk; however, there are some movement restrictions between them, which were conveniently solved by handling them as a multiobjective optimization problem. Particularly, the MOEA/D algorithm was used to solve the problem.

Keywords: Hexapod robot; multobjective optimization; delta robot; evolutionary algorithms; gait

1. Introducción

En la actualidad, la mayoría de los robots están diseñados para desplazarse en superficies lisas, niveladas o ligeramente inclinadas. Los ambientes externos con superficies irregulares e inestables como arena, nieve, lodo o grava, y los interiores como escaleras, puertas y esquinas, se consideran ambientes difíciles para el desplazamiento de robots móviles [17]. En la naturaleza existe una gran diversidad de animales de los cuales se puede imitar su locomoción para diseñar robots capaces de sortear este tipo de terrenos [10], por ejemplo, los animales hexápodos, cuya estructura y modelo de locomoción les permite evitar pequeños obstáculos y caminar por terrenos inclinados, lo que ha inspirado la creación de robots que imiten su locomoción. La habilidad de un robot hexápodo para eludir obstáculos, caminar en distintos tipos de terreno y su eficiencia energética depende en gran medida de la relación entre el largo de sus patas y su peso.

En el movimiento y desplazamiento de un robot hexápodo se tienen que controlar y coordinar al mismo tiempo sus seis patas, cada una de las cuales se representa normalmente utilizando la estructura de una cadena cinemática de tres eslabones con tres grados de libertad [3], por lo que el control de un robot hexápodo es un problema en el que se tienen que controlar 18 uniones al mismo tiempo.

El caminado de un hexápodo de acuerdo al número de patas que se encuentran en apoyo, se puede clasificar en secuencias de caminado, que pueden ser de tipo onda, tetrápodo, transición y trípode. Para crear estas secuencias de caminado se puede utilizar un generador central de patrones [3, 12, 6], redes neuronales [7], algoritmos genéticos [11] o un generador aleatorio basado en aprendizaje [5]. En el caminado cada pata puede tener dos estados: avance y recuperación.

Un robot hexápodo al considerarse como un sistema aislado sus patas se pueden mover libremente sin embargo al poner las patas sobre la superficie estas ya no se pueden mover libremente sino que estarán restringidas por la fricción entre el piso y las patas, sus movimientos se limitan de manera similar a lo que sucede cuando una mano robótica con tres dedos sujeta un objeto uniforme [2]. Durante la etapa de avance en el caminado trípode un robot hexápodo se asemeja a un robot paralelo tipo Delta como el presentado en [18], la plataforma móvil es el cuerpo del robot y la plataforma fija es el triángulo de apoyo que forman las tres patas que se encuentran en contacto con el suelo. En [1] se presenta el diseño de una estructura de un robot hexápodo paralelo, el cual de forma similar al robot tipo Delta, su plataforma superior está fija, la longitud de cada una de sus patas varía utilizando uniones tipo pistón para mover la plataforma inferior, de este tipo de robots en [8] se presenta un análisis de su exactitud y de la simetría en el campo de trabajo; en [13], se presenta un método para resolver el problema de la cinemática directa de este tipo de robots utilizando un algoritmo genético.

Este trabajo contribuye con un método para encontrar el campo de trabajo de un robot hexápodo, utiliza la similitud existente entre un robot hexápodo y uno tipo Delta. La representación del robot hexápodo utilizada es similar a la presentada en [8, 13, 1] con la diferencia que éstos son robots estáticos, la representación de un robot hexápodo móvil como un robot paralelo también se utiliza en [15] donde se hace un análisis de la estabilidad del robot antes del caminado. El método propuesto en este trabajo permite encontrar todas las posibles combinaciones de las articulaciones de las tres patas en soporte del hexápodo que hacen que su cuerpo avance o gire manteniendo las puntas de las patas en el mismo triángulo de apoyo.

De acuerdo con la investigación realizada, no hay un trabajo donde se encuentre el campo de trabajo para un robot hexápodo móvil, las investigaciones reportadas generan solo el movimiento con patrones de caminado en línea recta [3, 12, 6, 5]. Para encontrar el campo de trabajo del robot, se requiere una solución que satisfaga de manera simultánea y óptima varios objetivos, por lo que este problema intrínsecamente es un problema de optimización multiobjetivo, en el cual se deberán minimizar los errores de los ángulos, el perímetro entre el triángulo de apoyo de la posición actual, y el de la nueva posición. La propuesta utiliza el algoritmo MOEA/D (del inglés Multiobjective Evolutionary Algorithm Based on Decomposition) propuesto en [19], cada punto en la frontera de Pareto representa una posición viable para un robot hexápodo.

Este trabajo está organizado de la siguiente manera: En la sección 2 se describe el modelo matemático de los robots hexápodos. En la sección 3 se describe la secuencia de caminado utilizado para el robot hexápodo y la formulación multiobjetivo del problema de mantener el triángulo de apoyo en la misma posición para encontrar el campo de trabajo, también se describe el algoritmo MOEA/D. Los resultados y experimentos se muestran en la sección 4. Finalmente, en la sección 5 se presentan las conclusiones.

2. Modelo cinemático de un robot hexápodo

En la Figura 1, se observan las patas del modelo del robot hexápodo utilizado las cuales están distribuidas simétricamente al eje y, que es el eje sobre el cual se desplaza el robot. En la Figura 2, se presenta el modelo cinemático utilizado para representar cada pata del robot. Considerando que el origen se encuentra en el punto de anclaje de la pata con el cuerpo, la altura z1 es la distancia entre el origen y la superficie de contacto, cada pata de un robot hexápodo se puede analizar como una cadena cinemática de tres eslabones, la cual inicia en la unión 0 donde está sujeta la pata al cuerpo del robot, el eslabón 1 es la coxa, el eslabón 2 es el fémur y el eslabón 3 es la tibia [9, 14]. La Tabla 1 muestra los parámetros de Denavit-Hartenberg (D-H) del robot: longitud del eslabón (ai), giro del eslabón (αi), distancia de la unión (di) y ángulo de la unión (θi).

Fig. 1 Modelo del robot 

Fig. 2 Modelo cinemático de una pata 

Tabla 1 Parámetros D-H 

La matriz de transformación homogénea que describe la traslación y rotación entre el i-ésimo y el (i − 1)-ésimo sistema de coordenadas se representa en (1). La ubicación de la punta de la pata con respecto al origen está definida en las ecuaciones (5), (6) y (7), las cuales se obtienen utilizando las matrices de transformación homogénea definidas en (2), (3) y (4) [14]:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

Resolviendo las ecuaciones de posición (5), (6) y (7), se pueden determinar los valores de los ángulos de las articulaciones de cada pata utilizando las ecuaciones (8), (9) y (10):

(8)

(9)

(10)

3. Identificación del campo de trabajo del robot hexápodo

El caminado trípode del robot hexápodo se dividió en seis estados a partir de la posición inicial en la cual las patas 1, 3 y 5 están en apoyo y las patas 2, 4 y 6 están levantadas. El proceso de caminado se muestra en la Figura 3.

Fig. 3 Proceso de caminado del robot hexápodo 

En el primer estado las dos patas extremas del lado izquierdo 1 y 3, y la pata central 5 del lado derecho se encuentran en apoyo, estas patas se desplazan hacia atrás cambiando el valor de los ángulos θ1,1 y θ1,3 por θ1, y el ángulo θ1,5 por ∆θ1, esto provocará que el robot avance en línea recta hacia enfrente; en el segundo estado (recuperación), las dos patas extremas del lado derecho 4 y 6, y la pata central 2 del lado izquierdo se ponen en la posición inicial, a los ángulos θ1,4 y θ1,6 y θ1,2 se les asigna el valor cero; en el tercer estado (transición), las patas 4, 6 y 2 se ponen en apoyo, posteriormente las patas 1, 3 y 5 se levantan; en el estado cuatro las patas 4, 6 y 2 realizan el avance; en el estado cinco las patas 1, 3 y 5 se recuperan a su posición inicial; en el estado seis se realiza la transición y se vuelve a repetir el ciclo.

El primer y el cuarto estado son los que controlan el desplazamiento del hexápodo. En el avance en línea recta el ángulo θ1,i de las patas del lado derecho y del lado izquierdo en apoyo deben tener la misma magnitud pero con sentido diferente. La acción de girar el cuerpo de un robot hexápodo es compleja ya que se tiene que encontrar los valores de los ángulos Θ1,a que permitan al robot girar manteniendo el triángulo de apoyo en la misma posición inicial. En el primer estado el movimiento del cuerpo de un robot hexápodo es controlado por los ángulos Θ1,a = {θ1,1, θ1,3, θ1,5} y en el cuarto estado es controlado por los ángulos Θ1,a = {θ1,2, θ1,4, θ1,6}.

Durante la etapa de avance de un robot hexápodo con caminado trípode se forma un robot paralelo tipo Delta (Figura 4). Esta clase de robots está compuesta por una plataforma fija y una plataforma móvil conectadas por tres cadenas cinemáticas idénticas e igualmente distribuidas [16]. En el robot hexápodo la plataforma móvil es el cuerpo y la plataforma fija es el triángulo de apoyo que se forma con las tres patas en el piso.

Fig. 4 Representación de un robot hexápodo como robot paralelo 

3.1. Definición multiobjetivo del problema

Un problema de optimización multiobjetivo se define como minimizar o maximizar las funciones objetivo F(x) en el espacio objetivo Z, sujeto a restricciones de igualdad, de desigualdad y los límites de las variables de decisión x ∈ Ω. La meta en un problema de optimización multiobjetivo es encontrar el conjunto óptimo de Pareto *, es decir el conjunto de soluciones x ∈ Ω para las cuales no existe ninguna solución x′ ∈ Ω que domine x. Una solución x′ domina a otra solución x (x′ ⪯ x) si x′ es parcialmente menor que x, asumiendo que todos los objetivos se minimizarán (x′ sera menor o igual que x para todos los objetivos y menor al menos que uno de los objetivos).

Para mantener el triángulo de apoyo en la etapa de avance se debe asegurar que el triángulo formado por la posición de las patas 1 , 3 y 5 en apoyo en el primer estado antes de avanzar, sea el mismo que el formado por las patas 1 , 3 y 5 después de avanzar. El triangulo de apoyo antes y después del avance será igual si dos de sus ángulos y su perímetro es igual. Para cumplir con lo anterior, se planteó una formulación matemática de optimización multiobjetivo, la cual se muestra en la ecuación (11). El primer objetivo, es minimizar el error entre el ángulo , y el mismo ángulo después del avance; el segundo objetivo, es minimizar el error entre los ángulos y ; el tercer objetivo, es minimizar el error del perímetro del triángulo de apoyo en el primer estado pt y el perímetro del triángulo después de avanzar pt+1:

Minimizar

(11)

sujeto a

Los ángulos y son dos de los ángulos formados por el triángulo de apoyo de las patas en el tiempo t los cuales permanecen constantes. Para encontrar sus valores se utilizan las ecuaciones (12) y (13), las cuales se obtienen descomponiendo el triángulo de apoyo en tres triángulos rectángulos como se muestra en la Figura 5, y utilizando las ecuaciones de la cinemática (5) y (6) se encuentra la posición de las patas 1, 3 y 5. El perímetro pt del triángulo de apoyo se calcula utilizando la ecuación (14). Los ángulos y y el perímetro pt+1, después de que el cuerpo del robot se movió, se calculan utilizando las mismas ecuaciones con los valores de las patas en la nueva posición.

(12)

(13)

(14)

Fig. 5 Descomposición del triángulo de apoyo 

en donde:

Las variables de búsqueda del problema de optimización multiobjetivo son los ángulos , estos ángulos provocan que las patas se coloquen en una nueva posición, la cual se encuentra utilizando las ecuaciones (5), (6) y (7). Con esta nueva posición se calculan los ángulos y y el perímetro pt+1 que definen el nuevo triángulo de apoyo.

En el problema de restricción del triángulo de apoyo el conjunto óptimo de Pareto * son todas las soluciones en el espacio de búsqueda Ω tal que no exista ninguna solución que sea dominante de . Para que domine a , se debe cumplir para todo j = 1, 2, 3 y para al menos una j = 1, 2, 3.

Todos los triángulos de apoyo que cumplen esta condición, es decir todas las posiciones en las que se puede mover el hexápodo manteniendo sus patas en el mismo lugar es el campo de trabajo, el cual como se muestra en la Figura 3 se tiene que encontrar al iniciar el caminado del robot entre los estados 0 y 1, y después en la transición de los estados 3 y 4, y 6 y 1.

La condición para que el robot hexápodo no se caiga durante el caminado, es que el centro de gravedad de la parte superior del cuerpo permanezca siempre dentro del polígono de apoyo, como se muestra en la Figura 6. Esta condición se cumple mientras la distancia Sf sobre el eje x a la diagonal que se forma entre la pata central y la pata de enfrente, o la distancia Sb sobre el eje x a la diagonal que se forma entre la pata central y la pata de atrás, sean mayor que cero.

Fig. 6 Centro del robot dentro del triángulo de apoyo 

3.2. Algoritmo para optimización multiobjetivo basado en descomposición (MOEA/D

Los problemas de optimización multiobjetivo se resuelven principalmente usando métodos que asignan un valor de peso a cada objetivo de acuerdo a su importancia en el problema (métodos escalados), que lo convierten en un problema de un solo objetivo o usando algoritmos evolutivos los cuales ofrecen la ventaja de poder encontrar múltiples soluciones óptimas de Pareto en una sola corrida. También es relativamente más sencillo adaptarlos a diferentes problemas de aplicación. En optimización multiobjetivo es importante encontrar la mayor cantidad de soluciones óptimas de Pareto, pero también que éstas estén distribuidas uniformemente sobre el frente de Pareto.

Para encontrar las posiciones en las que se puede mover un robot hexápodo se utilizó el algoritmo MOEA/D propuesto en [19], el cual divide un problema de optimización multiobjetivo en N subproblemas de un solo objetivo que descompone el espacio objetivo en espacios igualmente distribuidos. La dispersión de las soluciones en el frente de Pareto es superior a otros algoritmos evolutivos de acuerdo a lo reportado en [19].

Cada subproblema i tiene un vector de pesos diferente para cada función objetivo, y tiene asignado un conjunto Bi con los τ vectores de peso más cercanos. Para resolver cada subproblema se utiliza el enfoque de Tchebycheff definido en la ec. (15):

(15)

donde es el vector de pesos del individuo j, cada subproblema se resuelve utilizando los τ vectores de pesos uniformemente distribuidos λ1, λ2, . . . , λN más cercanos a cada λj. El algoritmo MOEA/D resuelve todo los N subproblemas en una sola corrida, su funcionamiento se muestra en el Algoritmo 1.

4. Resultados experimentales

La comprobación del método propuesto se realizó utilizando la herramienta Robotics [4] de Matlab para simular un robot hexápodo y ver el movimiento de sus articulaciones. En el experimento se consideró que las patas 1, 3 y 5 están en apoyo como se muestra en la Figura 4 y los ángulos iniciales son , y . Las longitudes de los eslabones de las patas son l1 = 1 cm., l2 = 3,5 cm. y l3 = 6 cm, el ancho del cuerpo del robot es W = 10 cm y el largo L = 7 cm.

Estas medidas se eligieron porque son las características físicas de un robot hexápodo que se tiene en el laboratorio de sistemas digitales del CITEDI-IPN. Las variables de búsqueda son los ángulos , y todos entre −pi/6 y pi/6. Los ángulos θ2 = −π/8 y θ3 = −π/4 permanecen constantes, por lo tanto la altura de las tres patas también permanece constante z = 6,8827 cm.

En el algoritmo evolutivo se utilizó una población de 300 individuos con un vecindario τ = 20, y se ejecutó durante 100 generaciones. En la Figura 7 se observa el frente de Pareto obtenido después de 100 generaciones, en esta Figura también se indica la ubicación en el espacio objetivo de las soluciones a, b, c, y d, de las cuales se muestra el movimiento que provocan en las patas del robot en la Figura 9, estas soluciones fueron elegidas aleatoriamente para ejemplificar el comportamiento del robot hexápodo. En la Tabla 2 se muestran los valores de ángulos, la posición de las tres patas en apoyo en los ejes x y y, así como los valores de las funciones objetivo de las soluciones a, b, c, y d.

Fig. 7 Frente de Pareto obtenido después de 100 generaciones 

Tabla 2 Muestra de soluciones óptimas de Pareto 

En la Figura 8a se observa el campo de trabajo del robot hexápodo obtenido por las mismas soluciones del frente de Pareto mostrado en la Figura 7, estas soluciones solo provocan que el robot se mueva en un sentido ya que el algoritmo multiobjetivo no utiliza ningún criterio para determinar la posición de la patas.

Fig. 8 (a) Campo de trabajo, (b) Campo de trabajo completo de robot hexápodo 

El campo de trabajo completo mostrado en la Figura 8b se obtiene creando soluciones simétricas a las obtenidas por el algoritmo y uniendo estos dos conjuntos de soluciones.

En la Figura 9 se observan cuatro soluciones representativas del conjunto óptimo de Pareto, donde se muestra la nueva posición de las tres patas (1, 3 y 5) que provocan el movimiento del robot y el triángulo de apoyo permanece en la misma posición.

Fig. 9 Comportamiento de un robot hexápodo para cuatro soluciones óptimas de Pareto 

En la misma figura se muestra que lo que se mueve son las patas que forman el triángulo de apoyo y no el cuerpo, ésto se debe a que en la herramienta Robotics de Matlab, el sistema de referencia del modelo cinemático del robot es la parte superior del cuerpo, sin embargo, en un robot real, el sistema de referencia es el piso, por lo que el cuerpo del robot es lo que se mueve.

En la Figura 9b se muestra una solución dentro del espacio de trabajo que no es viable ya que el centro geométrico del cuerpo superior del robot esta fuera del triángulo de apoyo.

5. Conclusiones

En este trabajo se analizó un robot hexápodo como un robot paralelo tipo Delta, y se propuso un método innovador para obtener el campo de trabajo, ya que de acuerdo a las fuentes bibliográficas consultadas, éstas se enfocan a que el robot avance en línea recta.

El método propuesto permite encontrar los posibles movimientos que puede realizar un robot hexápodo, y tiene como propósito mantener en la misma posición sobre el piso al triángulo de apoyo después del movimiento, lo cual se planteó como un problema de optimización multiobjetivo. El método propuesto permite que un robot hexápodo se pueda mover en todas las direcciones durante la etapa de avance del caminado trípode.

Referencias

1. Akda, M., Karagulle, H., & Malgaca, L. (2012). An integrated approach for simulation of mechatronic systems applied to a hexapod robot. Mathematics and Computers in Simulation, Vol. 82, No. 5, pp. 818–835. [ Links ]

2. Borras, J., & Dollar, A. M. (2014). Analyzing dexterous hands using a parallel robots framework. Autonomous Robots, Vol. 36, No. 1-2, pp. 169–180. [ Links ]

3. Chen, W., Ren, G., Zhang, J., & Wang, J. (2012). Smooth transition between different gaits of a hexapod robot via a central pattern generators algorithm. Journal of Intelligent and Robotic Systems, Vol. 67, No. 3-4. [ Links ]

4. Corke, P. I (2011). Robotics, Vision & Control: Fundamental Algorithms in Matlab. Springer. [ Links ]

5. Erden, M. S., & Leblebicioglu, K. (2008). Free gait generation with reinforcement learning for a six-legged robot. Robotics and Autonomous Systems, Vol. 56, No. 3, pp. 199–212. [ Links ]

6. Fuente, L., Lones, M., Turner, A., Caves, L., Stepney, S., & Tyrrell, A. (2013). Adaptive robotic gait control using coupled artificial signalling networks, hopf oscillators and inverse kinematics. Evolutionary Computation (CEC), IEEE Congress on, pp. 1435–1442. [ Links ]

7. Juang, C.-F., Chang, Y.-C., & Hsiao, C.-M. (2011). Evolving gaits of a hexapod robot by recurrent neural networks with symbiotic species-based particle swarm optimization. Industrial Electronics, IEEE Transactions on, Vol. 58, No. 7, pp. 3110–3119. [ Links ]

8. Karimi, D., & Nategh, M. J. (2014). Kinematic nonlinearity analysis in hexapod machine tools: Symmetry and regional accuracy of workspace. Mechanism and Machine Theory, Vol. 71, pp. 115–125. [ Links ]

9. Mănoiu-Olaru, S., & Nţulescu, M. (2013). Stability analysis software platform dedicated for a hexapod robot. In Dumitrache, L., editor, Advances in Intelligent Control Systems and Computer Science, volume 187 of Advances in Intelligent Systems and Computing. Springer Berlin Heidelberg, pp. 143– 156. [ Links ]

10. Nishii, J (2000). Legged insects select the optimal locomotor pattern based on the energetic cost. Biological Cybernetics, Vol. 83, No. 5, pp. 435–442. [ Links ]

11. Pap, Z., Kecskes, I., Burkus, E., Bazso, F., & Odry, P. (2010). Optimization of the hexapod robot walking by genetic algorithm. Intelligent Systems and Informatics (SISY), 8th International Symposium on, pp. 121–126. [ Links ]

12. Ren, G., Chen, W., Dasgupta, S., Kolodziejski, C., Worgotter, F., & Manoonpong, P. (2015). Multiple chaotic central pattern generators with learning for legged locomotion and malfunction compensation. Information Sciences, Vol. 294, pp. 666–682. Innovative Applications of Artificial Neural Networks in Engineering. [ Links ]

13. Rolland, L., & Chandra, R. (2016). The forward kinematics of the 6-6 parallel manipulator using an evolutionary algorithm based on generalized generation gap with parent-centric crossover. Robotica, Vol. 34, pp. 1–22. [ Links ]

14. Roy, S. S., & Pratihar, D. K. (2012). Effects of turning gait parameters on energy consumption and stability of a six-legged walking robot. Robotics and Autonomous Systems, Vol. 60, No. 1, pp. 72–82. [ Links ]

15. Rushworth, A., Cobos-Guzman, S., Axinte, D., & Raffles, M. (2015). Pre-gait analysis using optimal parameters for a walking machine tool based on a free-leg hexapod structure. Robotics and Autonomous Systems, Vol. 70, pp. 36–51. [ Links ]

16. Simionescu, I., Ciupitu, L., & Ionita, L. C. (2015). Static balancing with elastic systems of DELTA parallel robots. Mechanism and Machine Theory, Vol. 87, pp. 150–162. [ Links ]

17. Sorin, M., & Mircea, N. (2012). Matlab simulation interface for locomotion analysis of a hexapod robot structure. System Theory, Control and Computing (ICSTCC), 16th International Conference on, pp. 1–6. [ Links ]

18. Wang, J., & Gosselin, C. M. (1999). Static balancing of spatial three-degree-of-freedom parallel mechanisms. Mechanism and Machine Theory, Vol. 34, No. 3, pp. 437–452. [ Links ]

19. Zhang, Q., & Li, H. (2007). A multi-objective evolutionary algorithm based on decomposition. IEEE Transactions on Evolutionary Computation, Vol. 2007. [ Links ]

1Corresponding author is Josué Domínguez Guerrero.

Recibido: 09 de Mayo de 2016; Aprobado: 07 de Febrero de 2017

Creative Commons License Este es un artículo publicado en acceso abierto bajo una licencia Creative Commons