Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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: [email protected] *** 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
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.
Figura 1. Plataforma R700 VECTOR ROBOTIC ARM
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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.
Figura 4. Ubicación de servomotores [3]
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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.
Figura 9. Dimensiones de la plataforma R700
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: Fecha de aceptación:
Luego ubicamos los ejes articulares ( iZ ), 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º Tabla 2. Rango movimiento de los servomotores
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 de movimientoValor maximo Valor minimo
de cada ánguloRango
−= (1)
1:Servo 2190 790
10140
−=
2 :Servo 2180 780
10140
−=
3:Servo 2499 429
11,5180
−=
4 :Servo 2491 536
11,5170
−=
5:Servo 2417 405
11,497175
−=
6 :Servo 2490 420
11,5180
−=
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 , id , ia , i ), que relacionan el
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: Fecha de aceptación:
sistema de referencia i con el sistema de referencia 1i − . Dando como resultado la siguiente
Tabla 3.
Art i id ia 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 ii
i
i i i
a
aA
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 10
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 21
2
cos sin 0 8cos
sin cos 0 8sin
0 0 1 0
0 0 0 1
A
−
=
La tercera articulación con respecto a la segunda se representa con la siguiente matriz.
3 3 3
3 3 32
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 43
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 54
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 6 A 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,40
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 AA
A A A A
A A A A
=
Cada posición de la matriz 0
6A se expresan a continuación:
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: Fecha de aceptación:
( )
( )
( )
( )
( )
4 1 2 3 1 2 30
5 5 16 1,1
4 1 2 3 1 2 3
4 1 2 3 1 2 30
56 2,1
4 1 2 3 1
cos cos cos cos cos ( sin )coscos sin ( sin )
sin cos cos ( sin ) cos ( sin )cos
cos sin cos cos cos ( sin )coscos
sin sin cos ( sin ) sin ( s
A
A
+ − + = + −
− + −
+ − +=
− + −( )
( ) ( ) ( )( )
( )
5 1
2 3
0
5 4 2 3 2 3 4 2 3 2 36 3,1
0
6 4,1
sin cosin )cos
cos cos sin cos cos sin sin sin ( sin ) cos cos
0
A
A
+
= + + − +
=
( )
( )
( )
( )
( )
4 1 2 3 1 2 30
5 5 16 1,2
4 1 2 3 1 2 3
4 1 2 3 1 2 30
56 2,2
4 1 2 3 1
cos cos cos cos cos ( sin )cossin cos ( sin )
sin cos cos ( sin ) cos ( sin )cos
cos sin cos cos cos ( sin )cossin
sin sin cos ( sin ) sin (
A
A
+ − + = − + −
− + −
+ − += −
− +( )
( ) ( ) ( )( )
( )
5 1
2 3
0
5 4 2 3 2 3 4 2 3 2 36 3,2
0
6 4,2
cos cossin )cos
sin cos sin cos cos sin sin sin ( sin ) cos cos
0
A
A
+
−
= − + + − +
=
( )
( )
( )
( )
( )
( )
4 1 2 3 1 2 30
6 1,3
4 1 2 3 1 2 3
4 1 2 3 1 2 30
6 2,3
4 1 2 3 1 2 3
0
6 3
sin 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,3
sin sin cos cos sin cos sin ( sin ) cos cos
0A
= − + + − +
=
( )
( )
( )
( )
( )
1 2 3
1 2 34
1 2 30
1 2 36 1,4
1 2 3
4 1 2
1 2 3
1
4
0
6 2,4
cos cos cos8 cos cos cossin
cos ( sin )cos17 8 cos ( sin )sin
cos cos ( sin )cos 8 cos cos
cos ( sin )cos
sin cossin
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 30
6 3,4
cos8 sin cos cos
cos ( sin )cos8 sin ( sin )sin
sin cos ( sin )cos 8 sin cos
sin ( sin )cos
sin cossin
cos sin17
cos
A
+ + +
− + − + − + −
+ − +
=
( )
( )
( )
2 3
2 3
2 3
24
2 3
0
6 4,4
8 sin cos
8 cos sinsin ( sin )
8sin 9,5cos cos
1A
+
+ + − + +
=
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 34
1 2 30
1 2 36 1,4
1 2 3
4 1 2
1 2 3
cos cos cos8 cos cos cossin
cos ( sin )cos17 8 cos ( sin )sin
cos cos ( sin )cos 8 cos cos
cos ( sin )cos
X A
+ + − +
− = = + − + − + −
(4)
( )
( )
( )
( )
1 2 3
1 2 34
1 2 30
1 2 36 2,4
1 2 3
4 1 2
1 2 3
sin cos cos8 sin cos cossin
cos ( sin )cos17 8 sin ( sin )sin
sin cos ( sin )cos 8 sin cos
sin ( sin )cos
Y A
+ + − +
− = = + − + − + −
(5)
( )
( )
( )
2 3
2 34
2 30
2 36 3,4
2 3
24
2 3
sin cos8 sin cossin
cos sin17 8 cos sin
sin ( sin )8sin 9,5cos
cos cos
Z A
+ + − +
= = + + − + +
(6)
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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 mP 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 mP .
El ángulo 1 representa el giro sobre el plano ( ),X Y y se encuentra con la siguiente
ecuación:
1
1 tany
x − =
(7)
El ángulo 2 como se muestra en la Figura 11, es la suma de los ángulos 1a y 2a . Para
determinar estos ángulos se desarrollan el siguiente procedimiento.
Se encuentra el valor de h que es la distancia entre el punto mP y el origen del Sistema de
referencia 1O .
2 2
1h x z= + (8)
1z es la posición en z menos la distancia entre 0O y 1O
( )1 1 2z z d d= − + (9)
Conociendo el valor de 1z , h y x se determina el valor de 1a
2 2 21 1
1 cos2
h x za
hx
− + −=
(10)
El valor de 2a se determina conociendo 1l , 2l y h
2 2 21 1 2
2
1
cos2
l h la
hl
− + −=
(11)
2 1 2a a = + (12)
El ángulo 3 se determina conociendo el valor de 3a con los valores de 1l , 2l y h
2 2 21 1 2
3
1 2
cos2
l l ha
l l
− + −=
(13)
Así, el valor del ángulo 3 es
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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án
ingresados 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 Tabla 8. Porcentaje de Error.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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 5
• " *"SC : Modifica el valor articular del servomotor 4
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: Fecha 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 la
cinemática directa.
• " *****"ge : Recibe valores ( ), ,x y z de la posición del punto mP en la cinemática
inversa
• " $***"g : Recibe los valores articulares de los servomotores 1, 2 y 3, y guarda los
6 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 directa
• " "bir : Borrar todas las posiciones guardadas en la cinemática inversa
8. 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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.) Figura 15. Creación del nuevo proyecto
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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ú.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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]
Figura 26. Interfaz gráfica fragment_fragment__cinematica_d.xml
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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.java
Con 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 se
regrese 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
" @******"g , " ?"c , " "bdp , " "bdr
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: 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 29. Algoritmo aplicación Android
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.
Preparación de Artículos revista VISIÓN ELECTRÓNICA: algo más que un estado sólido Fecha de envío:
Fecha de recepción: Fecha de aceptación:
Cinemática Inversa.
Esta opción le permite al usuario ingresar la posición ( ), ,x y z del punto mP de la plataforma y
los 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:
https://examples.javacodegeeks.com/android/android-bluetooth-connection-example/.
Top Related