Fecha de aceptación:
DESARROLLO DE UNA APLICACIÓN ANDROID PARA EL MANEJO
CINEMÁTICO DE LA PLATAFORMA ROBÓTICA R700 VECTOR
ROBOTIC ARM.
DEVELOPMENT OF AN ANDROID APPLICATION FOR THE KINEMATIC
HANDLING OF THE ROBOTIC PLATFORM R700 VECTOR
ROBOTIC ARM.
Ing. Dora Lilia Castañeda Yisel Tatiana Parra Duarte** Daniel Stiven Suarez González*** Resumen: En este artículo se especifica el proceso de optimización de la plataforma robótica R700: VECTOR ROBOTIC ARM de la empresa Nuevos Recursos S.A.S y a su vez del software con el que viene, pues aunque tiene librerías para el funcionamiento del robot esto genera al usuario la necesidad de saber programar y también requiere de tiempo prolongado para lograr movimientos muy sencillos que no permiten sacar total provecho de la funcionalidad de este. Para esto, inicialmente se realizaron los respectivos cálculos de la cinemática directa e inversa del mismo, a partir de dichos cálculos se desarrolló una aplicación móvil en Android Studio, que permite al usuario interactuar con el robot de una manera más sencilla, logrando así manipular cada uno de los servomotores, probar rutinas de posiciones ya asignadas, y programar rutinas por medio de la cinemática directa y cinemática inversa. También se adicionó un módulo bluetooth para lograr la conectividad
Ingeniera Electrónica Universidad Distrital Francisco José de Caldas, Investigadora semillero de Investigación SITA. Profesora adscrita a la Facultad Tecnológica de la Universidad Distrital Francisco José de Caldas. e-mail: [email protected]
** Estudiante de Tecnología en Electrónica. Universidad Distrital Francisco José de Caldas (Colombia). e-mail:
***Estudiante de Tecnología en Electrónica. Universidad Distrital Francisco José de Caldas (Colombia). e-mail: [email protected]
entre la plataforma y el móvil del usuario. Adicional a esto, se elaboró un documento con la descripción detallada del uso del R700 por medio de la aplicación nombrada ARM_R700. Palabras clave: Android, aplicación móvil, cinemática directa, cinemática inversa, plataforma robótica R700 vector robotic arm.
Abstract: This article specifies the optimization process of the robotic platform R700 VECTOR ROBOTIC ARM of the company Nuevos Recursos S.A.S. For this, initially the respective calculations of the direct and inverse kinematics of the same were made, from these calculations a mobile application was developed in Android Studio, which allows the user to interact with the robot in a simpler way, thus managing to manipulate each one of the servomotors, test routines of positions already assigned, and program routines by means of direct kinematics and inverse kinematics. A bluetooth module was also added to achieve connectivity between the platform and the user's mobile. In addition to this, a document with the detailed description of the use of the robot was elaborated by means of the application named ARM_R700.
Key words: Android, mobile application, direct kinematics, inverse kinematics, robotic platform R700 VECTOR ROBOTIC ARM
1. Introducción
En el área de la electrónica, ramas como la robótica requieren de una enseñanza constructivista en donde el aprendizaje va ligado a la autonomía del estudiante para la edificación de su conocimiento [1]. Es así, como herramientas didácticas que contribuyan con esta formación son de impacto positivo para este modelo pedagógico [2]. Elementos como la plataforma robótica R700 VECTOR ROBOTIC ARM [3], a pesar de ser un buen prototipo importado por la empresa Nuevos Recursos S.A.S, no cuenta con una herramienta que facilite su uso y su manejo a las personas con poco conocimiento sobre programación y robótica, entonces se tiene que, aunque es una buena plataforma didáctica para el aula, no
Fecha de aceptación:
ofrece un manual de uso para todo tipo de estudiante con conocimientos básicos de electrónica y/o robótica, puesto que su lenguaje es muy técnico. Es por esto, que se hace necesario desarrollar la cinemática de la plataforma para poder configurar sus movimientos y crear una interfaz en dispositivos móviles que facilite que la persona que adquiera el robot pueda manipularla de manera más sencilla por medio de conexión bluetooth.
2. Objetivos
• Implementar la cinemática inversa y directa de la plataforma en la aplicación móvil. • Desarrollar una aplicación en Android S.O. que permita al usuario manipular los movimientos de la plataforma de forma manual, o con rutinas ya asignadas
• Establecer la comunicación Bluetooth entre cualquier dispositivo móvil con sistema operativo Android y la plataforma.
3. Caracterización de la plataforma R700
El R700 es un brazo robótico diseñado para aficionados y estudiantes que quieran interactuar y comenzar a conocer el mundo de la robótica, figura 1.
El brazo tiene 5 grados de libertad de movimiento y una pinza de agarre que se mueven mediante 6 servomotores. Adicionalmente en la base cuenta con el microcontrolador y puertos de conexión disponibles para programar y agregar módulos de comunicación como WIFI o Bluetooth.[3]
3.1. Microcontrolador y puertos de conexión
El microcontrolador es un ATMEL ATMEGA64 de 8-bit, el cual tiene 64KB de memoria flash y tiene un reloj interno de 16 MHz. Puertos para módulos ARX-WRL [APC220] o ARX-BT3 (módulo inalámbrico Bluetooth). Conexiones de bus I2C, SPI y UART, compatible con los módulos de extensión RP6V2 XBUS, Conectores de extensión adicionales con todos los pines de I/O libres del ATMEGA64. Adicionalmente cuenta con 6 preamplificadores con una resistencia de derivación para medir la corriente de los servomotores, figura 2.
Figura 2. Tarjeta de control y puertos de conexión [3] 3.2. Puerto de alimentación.
La plataforma R700 se puede alimentar de dos formas diferentes como se aprecia en la Figura 3. Una de ellas es por medio de un cargador DC 12V/3A que viene con la plataforma, y la otra forma de alimentación es una conexión de baterías externas que tengan un voltaje entre 9V y 14V. Es importante resaltar que si el voltaje disminuye por debajo de los 6.7V el sistema muestra una advertencia, figura 3.
Fecha de aceptación:
Figura 3. Puertos de alimentación. [3] 3.3. Encendido y reset del programa.
La plataforma cuenta con un interruptor de 2 posiciones y un pulsador, estos controlan el estado de encendido/apagado y el start/reset del programa cargado a la plataforma, respectivamente.
3.4. Servomotores
Los servomotores que permiten el movimiento de la plataforma están ubicados en cada una de las articulaciones y la pinza de agarre. Así mismo, para identificar cada uno de ellos, se enumeraron del 1 al 6 desde la pinza hasta la base, figura 4.
4. Programación de la aplicación. 4.1 Software WinAVR
El software WinAVR es el entorno de desarrollo donde se escribirá el código fuente en lenguaje C, y se genera el archivo .hex que se cargará a la plataforma mediante la interfaz RobotLoader.[4]
4.2 Interfaz RobotLoader.
El RobotLoader como se muestra en la Figura 5, es una interfaz diseñada para cargar nuevos programas a la plataforma a través de comunicación serial de 38400Baud con el computador. El programa es guardado en la memoria EEPROM del microcontrolador que cuenta con un espacio de 2KB.
Adicionalmente en esta interfaz se puede verificar el estado de la comunicación serial, el registro de errores, un terminal serial y permite ver la conexión con módulos WIFI en caso de tener establecida esta conexión, figura 5.
Figura 5. Interfaz RobotLoader 5. Uso de la plataforma
Inicialmente para usar la plataforma lo que se debe hacer es la conexión USB con el computador y comprobar que la comunicación esté funcionando correctamente.
Fecha de aceptación:
5.1 Librerías incorporadas con la plataforma
El R700 trae una carpeta nombrada RobotArmLib con las librerías que permiten configurar todos los puertos, pines y funciones principales que puede realizar, y que posteriormente servirán para modificar o agregar funciones al mismo.
A demás de las librerías, viene una carpeta nombrada RobotArmExamples con ejemplos de diferentes programas que muestran los códigos y cómo se realiza la programación de la plataforma.
5.2 Calibración de la plataforma
Si es la primera vez que se va a utilizar el robot y se requiere conocer la posición de reposo o la posición inicial de la misma, es importante calibrar los servomotores en la posición representada en la Figura 4 que se fijará como la posición inicial.
La calibración se realiza con el programa RobotArm_Selftest.c que viene como ejemplo en la carpeta RobotArmExamples y que se cargará al R700 con el RobotLoader.
Con el programa cargado, se inicia la plataforma con el botón start/reset y vamos a la pestaña “Terminal” de la interfaz RobotLoader donde se visualizarán los mensajes y la entrada de datos con lo que se calibrará cada uno de los servomotores, figura 6.
Figura 6. Pestaña Terminal interfaz RobotLoader
El primer mensaje que se visualiza en la Figura 6, es una advertencia que dice, si es la primera vez que utiliza el robot, escoja la opción “c” para realizar la calibración.
Continuamos presionando ENTER.
Figura 7. Menú de opciones programa RobotArm_Selftest.c
En el menú de la Figura 7, se visualizan las diferentes opciones que se pueden escoger en el actual programa cargado a la plataforma. En este caso nos centraremos en la opción “c– Calibrate Robotarm”.
Este menú despliega las opciones con las que se configura el valor inicial con los que la plataforma adoptara la posición mostrada en la Figura 4.
Fecha de aceptación:
Figura 8. Comandos de calibración
La Figura 8 muestra los comandos con los que se modifica y se configura la posición de cada servomotor, iniciando por el servomotor 6. Los comandos son:
p: aumenta continuamente el valor de la posición del servomotor m: disminuye continuamente el valor de la posición del servomotor
h: para el movimiento continuo del servomotor en el valor que este en el momento. ok: guarda el valor de la posición en la que este el servomotor.
x: sale de la opción de calibración sin modificar ningún valor.
El rango de los valores de movimiento de cada uno de los servomotores está definido por las librerías entre 0 y 2600.
Los valores con los cuales se calibra cada uno de los servomotores en la posición inicial establecida son los siguientes:
1: 1490 2 : 1480 3 : 1464 4 : 1456 5 : 1382 6 : 1455 Servo Servo Servo Servo Servo Servo
Una vez configurados todos los servomotores, se guardan los valores calibrados en la memoria EEPROM del microcontrolador, para así usar esos valores en cualquier programa con el que posteriormente se quiera utilizar la plataforma.
Adicionalmente se establecen los valores mínimos y máximos que alcanza cada servomotor en su correcto funcionamiento. Servomotor Valor mínimo Valor máximo 1 790 2190 2 780 2180 3 429 2499 4 536 2491 5 405 2417 6 420 2490
Tabla 1. Valores de máx. y min. de movimiento 6. Desarrollo cinemático de la plataforma R700
Para hacer el desarrollo cinemático de la plataforma, lo primero que debemos hacer es conocer las dimensiones de la estructura de la plataforma como se aprecia en la Figura 9.
Fecha de aceptación:
Luego ubicamos los ejes articulares (Zi), y sistemas de referencia de cada una de las articulaciones presentes en la plataforma, Figura 10.
Figura 10. Sistema de referencias articulares.
De tal manera los ángulos que se definieron según los sistemas de referencia para la posición inicial de la plataforma son:
1 2 3 4 5 0º 90º 0º 90º 45º = = = = − =
Para la pinza de agarre (servomotor 1) se define el ángulo igual a 70º. Este valor configura la pinza en la posición intermedia de la abertura total.
Con estos ángulos iniciales, establecemos los ángulos máximos de movimiento de cada servomotor. Servomotor Ángulo mínimo Ángulo máximo Rango 1 0º 140º 140º 2 −25º 115º 140º 3 −180º 0º 180º 4 −90º 80º 170º 5 5º 180º 175º 6 −90º 90º 180º
Con los valores de las Tablas 1 y 2, encontramos el valor que representa cada ángulo de movimiento en los respectivos servomotores. Para eso utilizamos la siguiente ecuación:
# :
Servo Valor maximo Valor minimo valor de movimiento de cada ángulo Rango − = (1) 1: Servo
2190 790
10
140
−
=
2 : Servo 2180 780 10 140 − = 3: Servo 2499 429 11,5 180 − = 4 : Servo 2491 536 11,5 170 − = 5 : Servo 2417 405 11, 497 175 − = 6 : Servo 2490 420 11,5 180 − =Estos valores nos servirán para implementar y realizar los movimientos en el código de la programación. Con la plataforma ya identificada en sus dimensiones, ángulos iniciales, ángulos de movimiento y los sistemas de referencia definidos; continuamos con el desarrollo de la cinemática directa y la cinemática inversa.
6.1 Cinemática directa
La cinemática directa nos permite determinar la posición y orientación del efector final de la plataforma, con respecto a un sistema de referencia en la base de la misma, conociendo los valores articulares y las dimensiones del robot [5]
Los parámetros de Denavit-Hartenberg [4] representan la posición y orientación del efector final como una sucesión de rotaciones y traslaciones (i, di, ai, i), que relacionan el
Fecha de aceptación:
sistema de referencia i con el sistema de referencia i−1. Dando como resultado la siguiente Tabla 3. Art i di ai i 1 1 9,5 0 90 2 2 0 8 0 3 3 0 8 0 4 4 0 0 −90 5 5 17 0 0
Tabla 3. Parámetros Denavit-Hartenberg
Cada articulación es representada en una matriz de transformación homogénea de 4 4x con la siguiente matriz, ecuación 2.
1
cos cos sin sin sin cos
sin cos cos sin cos sin
0 sin cos 0 0 0 1 i i i i i i i i i i i i i i i i i i i a a A d − − − = (2)
La matriz que representa la primera articulación con respecto al sistema de referencia de la base es la siguiente. 1 1 1 1 0 1 cos 0 sin 0 sin 0 cos 0 0 1 0 9, 5 0 0 0 1 A − =
La segunda articulación con respecto a la primera se representa con la siguiente matriz.
2 2 2
2 2 2
1 2
cos sin 0 8cos
sin cos 0 8sin
0 0 1 0 0 0 0 1 A − =
3 3 3
3 3 3
2 3
cos sin 0 8cos
sin cos 0 8sin
0 0 1 0 0 0 0 1 A − =
La cuarta articulación con respecto a la tercera se representa con la siguiente matriz.
4 4 4 4 3 4 cos 0 sin 0 sin 0 cos 0 0 1 0 0 0 0 0 1 A − = −
Por último, la quinta articulación con respecto a la cuarta se representa con la siguiente matriz. 5 5 5 5 4 5 cos sin 0 0 sin cos 0 0 0 0 1 17 0 0 0 1 A − =
Con la matriz de cada articulación ya encontrada, se encuentra la matriz de transformación homogénea (3), que indica la posición y orientación del efector final con respecto al sistema de referencia de la base.
( )( )( )( )( )
0 1 2 3 4 5 0 1 2 3 4 5 6 6A
A
A
A
A
A
=
A
(3) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 0 0 0 0 6 1,1 6 1,2 6 1,3 6 1,4 0 0 0 0 6 2,1 6 2,2 6 2,3 6 2,4 0 6 0 0 0 0 6 3,1 6 3,2 6 3,3 6 3,4 0 0 0 0 6 4,1 6 4,2 6 4,3 6 4,4 A A A A A A A A A A A A A A A A A =Fecha de aceptación: ( )
(
)
(
)
( )(
)
4 1 2 3 1 2 3 0 5 5 1 6 1,1 4 1 2 3 1 2 3 4 1 2 3 1 2 3 0 5 6 2,1 4 1 2 3 1cos cos cos cos cos ( sin ) cos
cos sin ( sin )
sin cos cos ( sin ) cos ( sin ) cos cos sin cos cos cos ( sin ) cos cos
sin sin cos ( sin ) sin ( s
A A + − + = + − − + − + − + = − + −
(
)
( )(
(
)
(
)
)
( ) 5 1 2 3 0 5 4 2 3 2 3 4 2 3 2 3 6 3,1 0 6 4,1 sin cos in ) coscos cos sin cos cos sin sin sin ( sin ) cos cos 0 A A + = + + − + = ( )
(
)
(
)
( )(
)
4 1 2 3 1 2 3 0 5 5 1 6 1,2 4 1 2 3 1 2 3 4 1 2 3 1 2 3 0 5 6 2,2 4 1 2 3 1cos cos cos cos cos ( sin ) cos
sin cos ( sin )
sin cos cos ( sin ) cos ( sin ) cos cos sin cos cos cos ( sin ) cos sin
sin sin cos ( sin ) sin (
A A + − + = − + − − + − + − + = − − +
(
)
( )(
(
)
(
)
)
( ) 5 1 2 3 0 5 4 2 3 2 3 4 2 3 2 3 6 3,2 0 6 4,2 cos cos sin ) cossin cos sin cos cos sin sin sin ( sin ) cos cos 0 A A + − = − + + − + = ( )
(
)
(
)
( )(
)
(
)
4 1 2 3 1 2 3 0 6 1,3 4 1 2 3 1 2 3 4 1 2 3 1 2 3 0 6 2,3 4 1 2 3 1 2 3 0 6 3sin cos cos cos cos ( sin ) cos cos cos cos ( sin ) cos ( sin ) cos
sin sin cos cos cos ( sin ) cos cos sin cos ( sin ) sin ( sin ) cos
A A A − + − + = − + − − + − + = − + − ( )
(
(
)
(
)
)
( ) 4 2 3 2 3 4 2 3 2 3 ,3 0 6 4,3sin sin cos cos sin cos sin ( sin ) cos cos 0
A
= − + + − +
( )
(
)
(
)
(
)
( ) 1 2 3 1 2 3 4 1 2 3 0 1 2 3 6 1,4 1 2 3 4 1 2 1 2 3 1 4 0 6 2,4cos cos cos
8 cos cos cos sin
cos ( sin ) cos
17 8 cos ( sin ) sin
cos cos ( sin )
cos 8 cos cos
cos ( sin ) cos sin cos sin 17 A A + + − + − = + − + − + − − =
(
)
(
)
(
)
( ) 2 3 1 2 3 1 2 3 1 2 3 1 2 3 4 1 2 1 2 3 2 3 4 2 3 0 6 3,4 cos8 sin cos cos cos ( sin ) cos
8 sin ( sin ) sin sin cos ( sin )
cos 8 sin cos
sin ( sin ) cos sin cos sin cos sin 17 cos A + + + − + − + − + − + − + =
(
)
(
)
( ) 2 3 2 3 2 3 2 4 2 3 0 6 4,4 8 sin cos 8 cos sin sin ( sin ) 8sin 9, 5 cos cos 1 A + + + − + + =La posición X Y Z, , del efector final de la plataforma con respecto al sistema de referencia de la base esta dado por:
( )
(
)
(
)
(
)
1 2 3 1 2 3 4 1 2 3 0 1 2 3 6 1,4 1 2 3 4 1 2 1 2 3cos cos cos
8 cos cos cos sin
cos ( sin ) cos
17 8 cos ( sin ) sin
cos cos ( sin )
cos 8 cos cos
cos ( sin ) cos
X A + + − + − = = + − + − + − (4) ( )
(
)
(
)
(
)
1 2 3 1 2 3 4 1 2 3 0 1 2 3 6 2,4 1 2 3 4 1 2 1 2 3sin cos cos
8 sin cos cos sin
cos ( sin ) cos
17 8 sin ( sin ) sin
sin cos ( sin )
cos 8 sin cos
sin ( sin ) cos
Y A + + − + − = = + − + − + − (5) ( )
(
)
(
)
2 3 2 3 4 2 3 0 2 3 6 3,4 2 3 2 4 2 3 sin cos 8 sin cos sin cos sin 17 8 cos sin sin ( sin ) 8sin 9, 5 cos cos cos Z A + + − + = = + + − + + (6)Fecha de aceptación:
6.2 Cinemática inversa
La cinemática inversa determina los valores articulares que debe adoptar el robot para posicionar el efector final en un punto
(
X Y Z, ,)
, con respecto al sistema de referencia de la base [6], tal como se muestra en la Figura 11.Figura 11. Modelo Geométrico de la plataforma robótica R700
El desarrollo de la cinemática inversa se hace por desacoplamiento cinemático [7]. Este método permite separar la posición y la orientación del efector final. La posición está determinada por los 3 primeros ángulos
(
1, 2, 3)
y la orientación por los últimos 2 ángulos(
4, 5)
.[9]Esto se debe a que en el punto Pm mostrado en la Figura 11, se cortan los ejes de rotación de los ángulos
(
4, 5)
, denominando este punto como la muñeca de la plataforma.Para desarrollar los cálculos geométricos que determinan los valores articulares de los ángulos
(
1, 2, 3)
, se pide como datos iniciales la posición(
x y z, ,)
del punto Pm.El ángulo 1 representa el giro sobre el plano
(
X Y,)
y se encuentra con la siguiente ecuación: 1 1 tan y x = − (7)El ángulo 2 como se muestra en la Figura 11, es la suma de los ángulos a1 y a2. Para determinar estos ángulos se desarrollan el siguiente procedimiento.
Se encuentra el valor de h que es la distancia entre el punto Pm y el origen del Sistema de referencia O1.
2 2
1
h= x +z (8)
1
z es la posición en
z
menos la distancia entre O0 y O1(
)
1 1 2
z = −z d +d (9)
Conociendo el valor de z1, h y x se determina el valor de a1
2 2 2 1 1 1 cos 2 h x z a hx − + − = (10)
El valor de a2 se determina conociendo l1, l2 y h
2 2 2 1 1 2 2 1 cos 2 l h l a hl − + − = (11) 2 a1 a2 = + (12)
El ángulo 3 se determina conociendo el valor de a3 con los valores de l1, l2 y h
2 2 2 1 1 2 3 1 2 cos 2 l l h a l l − + − = (13)
Fecha de aceptación: 3 3 3 180 0 180 0 a si x a si x = − − (14)
Los ángulos
(
4, 5)
que determinan la orientación del efector final son datos que seráningresados como datos iniciales.
Con todos los ángulos ya definidos se conoce la posición del efector final de la plataforma. Adicional a lo anterior, se realiza un barrido aproximado de las posiciones
(
x y z, ,)
en las cuales el robot R700 se puede mover sin chocar con la base o superficie sobre la cual está ubicado. Tal como se muestra en las siguientes tablas.x(cm) y(cm) zmin(cm) zmax(cm)
0 0 21 25 1 1 21 25 2 2 21 25 3 3 20 24 4 4 20 24 5 5 19 23 6 6 17 23 7 7 15 22 8 8 13 20 9 9 13 19 10 10 12 16 11 11 10 13 Tabla 4. x=y
x(cm) y(cm) zmin(cm) zmax(cm)
0 2 21 25 0 4 21 24 0 6 20 24 0 8 18 23 0 10 15 21 0 12 13 20 0 14 13 17 0 15 11 15 Tabla 5. x=0, y≠0
x(cm) y(cm) zmin(cm) zmax(cm) 2 0 21 25 4 0 21 24 6 0 20 24 8 0 18 23 10 0 15 21 12 0 13 20 14 0 13 17 15 0 11 15 Tabla 6. y=0, x≠0
x(cm) y(cm) zmin(cm) zmax(cm)
5 8 16 22 8 5 16 22 10 5 13 20 8 13 11 14 6 10 13 20 9 16 - - 2 11 13 20 10 12 - - 6 12 13 18 13 3 13 18 2 15 11 14 4 11 14 20 Tabla 7. x≠0, y≠0
Se calculo el porcentaje de error en la posición final con respecto a la posición desea.
En la siguiente tabla y graficas se muestran los valores teóricos, valores reales, y el porcentaje de error.
Valor Teórico Valor Real % Error en z % Error en x
x y z x y z 0 0 25 0,9 0 24,8 0,800 - 2 0 24 2,5 0 23,8 0,833 25,000 4 0 22 4,4 0 21,8 0,909 10,000 6 0 21 6,5 0 20,7 1,429 8,333 8 0 20 8,4 0 19,3 3,500 5,000 10 0 18 10,3 0 17,4 3,333 3,000 12 0 16 12,2 0 15 6,250 1,667 14 0 14 14,2 0 12,7 9,286 1,429 15 0 12 14,9 0 10,9 9,167 0,667
Fecha de aceptación:
Grafica 1.a.) Valor Teórico. b.) Valor Real
Grafico 2. Valor teórico vs Valor real.
7. Implementación de la cinemática en el microcontrolador ATMEGA64
Al realizar el programa en código C que se implementó y se cargó en la memoria EEPROM del ATMEGA64, se agregaron las ecuaciones vistas en el capítulo anterior, que permiten realizar el cálculo de la cinemática directa y la cinemática inversa, y se dividieron las acciones a ejecutar por la plataforma.
Cada acción a ejecutar es activada por un comando que se envía desde la aplicación móvil al seleccionar un botón o elemento de introducción de datos.
Los comandos enviados están formados por un conjunto de caracteres de la siguiente manera:
1. Un carácter especial que identifica la acción a ejecutar,
2. Un segundo carácter que selecciona el servomotor o la cinemática sobre la que se realizara la acción, y
3. Los datos en código ascii necesarios para realizar las operaciones Ejemplo:
Si enviamos el valor articular que debe adoptar un servomotor especifico, el comando a enviar seria:
"
SA
@"
El carácter ' 'S , identifica que la acción a ejecutar es modificar la posición de un servomotor, el carácter ' 'A , selecciona el servomotor que se configurará, en este caso es el número 6, y el carácter '@', que en código ascii corresponde al número 64, es el valor articular que adoptara el servomotor.
7.1 Lista de comandos
•
" 1"
R
: Activa la rutina 1 para comprobar funcionamiento de servos•
" 2"
R
: Activa la rutina 2 para comprobar funcionamiento de servos•
" 3"
R
: Activa la rutina 3 para comprobar funcionamiento de servos•
"
SA
*"
: Modifica el valor articular del servomotor 6•
"
SB
*"
: Modifica el valor articular del servomotor 5Fecha de aceptación:
•
"
SD
*"
: Modifica el valor articular del servomotor 3•
"
SE
*"
: Modifica el valor articular del servomotor 2•
"
SF
*"
: Modifica el valor articular del servomotor 1•
"
pp
"
: Vuelve el robot a la posición inicial•
" @******"
g
: Recibe y guarda los 6 valores articulares que dan la posición de lacinemática directa.
•
"
ge
*****"
: Recibe valores(
x y z, ,)
de la posición del punto Pm en la cinemáticainversa
•
" $***"
g
: Recibe los valores articulares de los servomotores 1, 2 y 3, y guarda los6 valores articulares que dan la posición de la cinemática inversa
•
" ?"
c
: Correr rutina de posiciones guardadas en la cinemática directa•
" !"
c
: Correr rutina de posiciones guardadas en la cinemática inversa•
"
bdp
"
: Borrar posición guardada en la cinemática directa•
"
bip
"
: Borrar posición guardada en la cinemática inversa•
"
bdr
"
: Borrar todas las posiciones guardadas en la cinemática directa8. Configuración de la comunicación Bluetooth
Para establecer la comunicación Bluetooth entre el dispositivo móvil y la plataforma, se utilizó el módulo Bluetooth HC-06 el cual se configura por medio de los comandos AT y un Arduino, y en el microcontrolador ATMEGA64 se habilita el puerto serial (RXD0, TXD0).
8.1. Módulo Bluetooth HC-06
Para realizar la transmisión de datos es importante configurar el módulo con los comandos AT que serán enviados con un Arduino a través de comunicación serial[8].
Estos comandos son:
• AT+NAME
• AT+PSWD
• AT+UART
El primer comando AT+NAME permite consultar o modificar el nombre del módulo que se verá al momento de buscarlo para realizar la conexión. El nombre dado al módulo es ARM R700 y lo modificamos de la siguiente manera, AT+NAME:ARM R700.
El siguiente comando AT+PSWD consulta o modifica la clave con la cual se permite establecer la vinculación con el dispositivo móvil con el que se realizara la comunicación. La clave por defecto es “1234” que se dejara igual, y la confirmamos enviando el comando: AT+PSWD?
Por último, con el comando AT+UART se configura la velocidad de transmisión (baudrate) con la cual se enviarán los datos a la plataforma. La velocidad por defecto es 9600. Se modifica está velocidad a 38400 enviando el siguiente comando: AT+UART:38400,0,0.
8.2. Puerto serial ATMEGA64 (RXD0, XD0).
En la configuración del microcontrolador ATMEGA64 revisamos y modificamos las librerías
RobotArmBase.h y RobotArmBaseLib.c con las que viene la plataforma, y se configuran todos los puertos, pines y conexión que se pueden establecer con el microcontrolador.
Fecha de aceptación:
En la primera librería RobotArmBase.h, se puede ver la velocidad de transmisión con la cual está configurado el microcontrolador. En la línea 383, como lo muestra la Figura 12, la velocidad está establecida en 38400.[11]
Figura 12. Librería RobotArmBase.h
En la segunda librería RobotArmBaseLib.c, se habilita la comunicación serial por el puerto RXD0 y TXD0 agregando las líneas de código 1079-1083 a la librería.
Figura 13. Librería RobotArmBaseLib.c
8.3 Vinculación dispositivo móvil y modulo HC-06
Lo primero que se debe hacer es encender el Bluetooth del dispositivo móvil. Una vez encendido, se buscará el módulo HC-06 de nombre ARM R700 que identifica a la plataforma. Al seleccionar el módulo, se pide ingresar la clave de vinculación que se definió como “1234” y dar OK.
Figura 14. Vinculación dispositivo móvil y modulo ARM R700
Con la vinculación ya realizada se puede establecer la comunicación entre el dispositivo móvil y la plataforma.
9. Desarrollo de la aplicación móvil en Android Studio
La aplicación móvil para el sistema operativo Android, se desarrolla en Android Studio que es el entorno de desarrollo oficial creado por Google, y diseñado para dar soporte y facilitar la creación de cualquier aplicación para Android
La aplicación se desarrolla en una sola ventana de visualización. Configurada para modificar una parte de la ventana donde se mostrarán los diferentes controles e ingreso de datos que se requieran para manipular la plataforma.
A continuación, se explica cómo se realizó la interfaz y el código fuente de la aplicación. Lo primero fue crear un proyecto nuevo en blanco donde se comenzará a escribir toda la aplicación.
a.) b.)
Fecha de aceptación:
Al crear el proyecto se crean dos archivos importantes automáticamente, uno de nombre
activity_main.xml y otro de nombre MainActivity.java. El primero con la extensión .xml, Figura 16, es el que permite crear la interfaz gráfica que vera el usuario al ingresar los datos, y el segundo, Figura 17, es un archivo Java en el que se escribirá el código fuente del programa.
Figura 16. MainActivity.java
Figura 17. Activity_main.xml
Adicional a estos 2 archivos, se crearon 16 archivos que permiten modificar los elementos utilizados para el ingreso de datos. De estos 16 archivos, 7 son archivos java que controlan los datos y el envió de estos a la plataforma, y 9 archivos son .xml, que modifican la interfaz gráfica que ve el usuario al ingresar los datos.
a.) b.) Figura 18. a.) Archivos java. b.) Archivos XML
Es importante resaltar que estos 2 tipos de archivo trabajan de manera conjunta. La programación que se desarrolla en el archivo java, depende de una interfaz (archivo .xml) para que se ejecute la acción elegida. Para dejar esto más claro, a continuación, se explica cada uno de estos archivos.
9.1. Archivos XML 9.1.1. activity_main.xml
En este archivo se crea la interfaz gráfica de la ventana principal en la que se tendrá los siguientes elementos:
1. Muestra el nombre de la aplicación,
2. Un menú que mostrara las opciones con las cuales se puede controlar la plataforma, 3. Botones, uno para buscar el dispositivo con el que se establecerá la conexión (CONECTAR CON), y otro con el que se terminará la conexión (DESCONECTAR),
4. Estado de conexión,
5. Visualización de datos ingresados de posición de los servomotores en cada una de las opciones de control, y
6. Un fragmento donde se visualizará la interfaz gráfica de cada una de las opciones de control seleccionada en el menú.
Fecha de aceptación:
Figura 19. Ventana principal 9.1.2. toolbar.xml
Este archivo solo se crea para modificar la barra donde se visualiza el nombre de la aplicación y donde se coloca el menú de control dentro del archivo Activity_main.xml
Figura 20. Barra de nombre y menú 9.1.3. control.xml
Las opciones de control del menú se configuran en este archivo, colocando el nombre de cada opción definidas en la Figura 21.
Figura 21. Opciones del menú de control
9.1.4. activity_dispositivos_bt.xml
Los dispositivos con comunicación Bluetooth que están vinculados al dispositivo móvil, serán visualizados con esta interfaz desde la clase principal MainActivity.java como un mensaje al seleccionar el Boton “CONECTAR CON” de la interfaz activity_main.xml
Figura 22. Interfaz gráfica activity_dispositivos_bt.xml
Los siguientes archivos xml son fragmentos que modificaran la parte 6 mostrada en la Figura 19, donde se visualizaran los elementos con los que cada opción de control cuenta para el ingreso de datos.[12]
9.1.5. fragment_blank.xml
Esta parte de la interfaz gráfica, es un espacio en blanco que se visualiza al iniciar la aplicación, antes de seleccionar una opción de control y al desconectar la comunicación con la plataforma.
9.1.6. fragment_fragment__test_servos.xml
Esta interfaz gráfica muestra una imagen de la plataforma y 3 botones que permiten activar cada una de las rutinas asignadas para probar el estado de los servomotores.
Fecha de aceptación:
Figura 23. Interfaz gráfica fragment_fragment__test_servos.xml 9.1.7. fragment_fragment__manual.xml
En esta interfaz se visualizan los controles donde el usuario puede seleccionar el servomotor que desea mover, e identificar en una imagen cual servomotor seleccionó sobre la estructura de la plataforma. Adicional a esto, se muestra el valor sobre el cual se encuentra ubicado cada servomotor y un botón para regresar la plataforma a su posición inicial.
a.) b.) c.)
Figura 24. a.) Interfaz gráfica fragment_fragment__manual.xml. b.) Selección del servomotor 3. c.) Selección del servomotor 5
9.1.8. fragment_fragment__programa.xml
Esta interfaz es la encargada de visualizar los elementos de ingreso de datos de la cinemática directa y la cinemática inversa. Para eso muestra dos opciones de selección y un espacio donde se modifica la interfaz de cada cinemática.
Figura 25. Interfaz gráfica fragment_fragment__programa.xml 9.1.9. fragment_fragment__cinematica_d.xml
En la interfaz de la cinemática directa se visualizan los controles y los valores de posición de cada servomotor, un texto con las posiciones guardas, y los botones con los que se enviaran los respectivos datos ingresados.[8]
Fecha de aceptación:
9.1.10. fragment_fragment__cinematica_i.xml
En la interfaz de la cinemática inversa se visualizan los controles y los valores de posición de los 3 primeros servomotores, los campos para ingresar la posición
(
x y z, ,)
, un texto con las posiciones guardas, y los botones con los que se enviaran los respectivos datos ingresados.
Figura 27. Interfaz gráfica fragment_fragment__cinematica_i.xml 9.2. Archivos java
9.2.1. MainActivity.java
Esta es la clase principal en la se ejecuta toda la aplicación. Es decir, el resto de archivos java son clases que se extienden de esta, y que se emplearan para el ingreso y envió de datos.
9.2.2. BluetoothService.java
La clase BluetoothService.java es la que se encarga de configurar y establecer la comunicación Bluetooth en la aplicación, adicionalmente envía y recibe los datos que se transfieran entre los dispositivos conectados.[9]
9.2.3. BlankFragment.java
Esta clase java permite llamar la interfaz del fragment_blank.xml cuando se requiera al ejecutar la aplicación.
9.2.4. Fragment_TestServos.java
Esta clase permite visualizar en la ventana principal la interfaz gráfica
fragment_fragment__test_servos.xml, y así enviar los comandos
" 1"
R
," 2"
R
," 3"
R
9.2.5. Fragment_Manual.javaCon esta clase se visualiza la interfaz gráfica fragment_fragment__manual.xml para asi controlar el envió de los comandos
"
SA
*"
,"
SB
*"
,"
SC
*"
,"
SD
*"
,"
SE
*"
,"
SF
*"
,"
pp
"
en tiempo real cada vez que se modifique el valor de un servomotor seleccionado o seregrese a la posición inicial. 9.2.6. Fragment_Programa.java
Esta clase permite intercambiar entre las 2 interfaces graficas de la cinemática directa y la cinemática inversa.
9.2.7. Fragment_CinematicaD.java
Esta clase visualiza la interfaz gráfica fragment_fragment__cinematica_d.xml, envía los comandos que realizan el proceso y las acciones necesarias para realizar la cinemática directa.
"
SA
*"
,"
SB
*"
,"
SC
*"
,"
SD
*"
,"
SE
*"
,"
SF
*"
,"
pp
"
Fecha de aceptación:
9.2.8. Fragment_CinematicaI.java
Esta clase visualiza la interfaz gráfica fragment_fragment__cinematica_i.xml, envía los comandos que realizan el proceso y las acciones necesarias para realizar la cinemática inversa.
"
SA
*"
,"
SB
*"
,"
SC
*"
,"
SD
*"
,"
SE
*"
,"
SF
*"
,"
pp
"
"
ge
*****"
," $***"
g
," !"
c
,"
bip
"
,"
bir
"
9.3. Permiso comunicación Bluetooth
Para permitir que la aplicación pueda establecer la comunicación Bluetooth, hay que dar los permisos necesarios. Así, en el archivo de nombre AndroidManifest.xml se agregarán las dos líneas mostradas en la figura 28, que permiten configurar la comunicación con otros dispositivos. [10]
Figura 28. Permisos Bluetooth 10. Diagramas de flujo
Se desarrollaron 2 algoritmos de programación, uno para la aplicación móvil mostrado en la Figura 29 y uno para la plataforma R700 mostrado en la Figura 30.
Figura 30. Algoritmo de la plataforma R700 11. Resultados.
Se obtuvo una aplicación en Android S.O. llamada ARM R700 en la cual se tuvieron en cuenta los ángulos máximos y el rango de movimientos de cada servomotor, esto con el fin de limitar el ingreso de datos a la aplicación por parte del usuario. Ahora bien, en esta interfaz se encuentran 4 opciones de menú:
• Test: En esta sección el usuario conocerá el estado y correcto funcionamiento de los servomotores con 3 rutinas ya programadas.
• Manual: Se tienen 6 slider para mover independientemente cada articulación en tiempo real, así el usuario ubicara el efector final en cualquier posición sin afectar el estado de la plataforma
• Cinemático: esta opción permite crear, guardar o modificar una rutina de máximo 10 posiciones. La rutina guardada se borrará una vez se cambie de opción de control. Cinemática Directa.
En la interfaz de la aplicación dedicada a la cinemática directa, se le da al usuario la opción de configurar el valor articular de cada servomotor en tiempo real, conocer la posición del efector final y guardar la posición si así lo desea.
Fecha de aceptación:
Cinemática Inversa.
Esta opción le permite al usuario ingresar la posición
(
x y z, ,)
del punto Pm de la plataforma ylos valores de los 3 servomotores finales, que permitirán calcular la posición final en la cual se desea ubicar el efector final de la plataforma.
12. Conclusiones.
• Al ejecutar el programa realizado para la cinemática se evidencio que la plataforma R700 presenta desgastes en las uniones mecánicas de los servomotores, generando errores al ubicar el efector final en la posición deseada.
• Con el desarrollo de la cinemática directa y cinemática inversa se evidenciaron errores en el movimiento de los servomotores debido a los cálculos internos de la programación, los cuales se desarrollan con números decimales y la librería del movimiento de los servomotores es con números enteros, despreciando los decimales, afectando así la posición del efector final.
• A pesar de que se logró establecer comunicación entre la plataforma R700 y un dispositivo móvil con sistema operativo Android, se tiene que no se puede lograr dicha interacción entre un dispositivo diferente a un teléfono celular.
• Logra optimizar el uso de la plataforma por medio de la aplicación, ya que esta ofrece la opción al usuario de mover el R700 sin programar nada y así se logra la interacción con la misma.
• Al desarrollar la programación con el software WinAVR se encontró, que los programas solo se ejecutan con sistema operativo Windows 7 o anteriores a este.
13. Agradecimientos
Agradecemos a la empresa Nuevos Recursos S.A.S, entidad que patrocina el proyecto.
14. Referencias
[1] JIMÉNEZ Jiovani, OVALLE Demetrio, RAMÍREZ Fernando, Robótica educativa Estrategias activas en ingeniería, no. May 2014. 2010.
[2] C. Angulo, “Usos y beneficios de la robótica en las aulas,” Supl. del boletín Educ., no. 341, 2016.
[3] G. Specialties, “Model : R700 Vector Robotic Arm.” p. 64, 2013.
[4] “WinAVR.” [Online]. Available: http://winavr.sourceforge.net/index.html. [5] K. Ramírez, “CINEMÁTICA DIRECTA,” 2015.
[6] K. Ramirez, “CINEMÁTICA INVERSA,” 2015.
[7] A. Jaramillos, “Cinemática de manipuladores,” in Cinematica de manipuladores, 2010, p. 68.
[8] A. Jaime, A. Fernandez, and J. A. Rodriguez, “DESARROLLO DE SOFTWARE DE SIMULACION QUE PERMITA RECREAR EL MOVIMIENTO DEL MODELO SIMPLIFICADO DEL ROBOT MITSUBISHI MOVEMASTER RVM1 A TRAVES DE ALGORITMOS DE CINEMATICA DIRECTA Y CINEMATICA INVERSA.,” Universidad San Buenaventura-Bogota, 2011.
[9] “Configuración modulo Bluetooth HC 06 - Nueva versión,” 2018. [Online]. Available: http://juangiraldo0.blogspot.com/2018/07/configuracion-modulo-bluetooth-hc-06.html. [10] “Android Socket Example | Examples Java Code Geeks.” [Online]. Available: