You are on page 1of 4

R para

Informe 1 : Uso de Roboplus y Matlab


control de Servomotores Dynamixel.
Edwin Alexander Ramrez Vargas

Jhoan Sebastian Restrepo Mendoza

Email: earamirezv@unal.edu.co
Codigo: 2548920

Email: jhsrestrepome@unal.edu.co
Codigo: 2548926

ResumenEl trabajo realizado en la practica de laboratorio


correspondio a la conexion adecuada del servomotor Dynamixel,
as como a su manejo desde Roboplus y Matlab, utilizando en

e ste ultimo
el SDK, que contiene todo el paquete de funciones
en lenguaje C, para especificar distintas tareas al servomotor.
Adicionalmente se creo una funcion en Matlab mediante la
cual fuera posible dar la orientacion del servo en grados, en vez

de especificarla en un numero
entero del ADC de 10 bits, para
lo cual se tuvo en cuenta el rango de orientacion del motor.

es el que brinda mas opciones de manejo, pero que al quitarle


algunas opciones es identica a la del AX-12A y MX-28.
II-A1. Motor AX-12.: El motor AX-12 que se puede
apreciar en la Figura 1 tiene un voltaje de operacion entre
9V y 12V, en el cual recomiendan usar 11.1V; otra de sus
caractersticas principales es su rango de accion en grados que
esta entre 0 y 300 , con una resolucion de 0.29 .[1]

Index TermsOrientacion, instruccion, velocidad de transmision, rango operacional.

I.

I NTRODUCCI ON

En el trabajo con sistemas robotizados es muy comun


observar que los movimientos de los mismos son controlados
a partir del uso de servomotores, los cuales se controlan de
manera que sus movimientos sean realizados con rotaciones
especficas y a velocidades determinadas. Para lograr esto es
muy importante conocer las caractersticas de operacion del
servomotor utilizado correspondientes a rangos de alimentacion, orientaciones permitidas, velocidades lmite, velocidades
de transmision de datos, entre otras; mediante lo cual se
realizara un manejo adecuado de estos componentes y se
garantizara el comportamiento deseado.
Debido a la gran importancia de los servomotores en la
construccion de sistemas en Robotica, la practica de laboratorio tiene como fin familiarizar al estudiante con el uso de los
servomotores Dynamixel, por lo tanto se tratan los temas de
caractersticas de dichos servomotores y ademas las interfaces
para su control desde el PC, mediante el uso de herramientas
como Roplus y Matlab con sus correspondientes libreras.
II.

P RE -I NFORME

Figura 1. Motor AX-12.

Algunos datos adicionales para tener en cuenta al momento


de usar estos motores consiste en el maximo torque estatico
aplicable que es de 1.5Nm para 12V y con un consumo en
corriente de 1.5A, mientras que para mantener un movimiento
estable se considera 1/5 del torque estatico, y una velocidad
sin carga de 59rpm igualmente a 12V.
En terminos de control se pueden llevar a cabo sistemas
de realimentacion de posicion, temperatura, carga, entrada de
voltaje, etc.
II-A2. Motor MX-28.: El voltaje de alimentacion recomendado para el motor MX-28 (Figura 2) es de 12V, aunque
tambien garantizan un buen funcionamiento entre 10 y 14.8V;
referente a su rango de accion se encuentra entre 0 y 360 ,
a diferencia del motor AX-12, y respecto a su resolucion de
0.088 [2].

Al momento de llevar a cabo un manejo de brazos robots


se debe tener conocimiento sobre algunas especificaciones
de los materiales a controlar, por lo tanto se realiza una
consulta de los motores Dynamixel que se pueden utilizar y
su respectivo dispositivo para controlarlos directamente desde
el computador, correspondiente al USB2Dynamixel.
II-A.

Motores

En esta parte se hablara sobre las caractersticas basicas de


tres tipos de motores Dynamixel que son AX-12A, MX-28 y
MX-64, y tambien sobre la tabla de control del MX-64 que

Figura 2. Motor MX-28.

Su maximo torque estatico esta entre 2.3Nm y 3.1Nm


dependiendo del voltaje aplicado y respecto a la corriente

mantiene un margen entre 1.3A y 1.7A para este caso. Sin


carga este motor puede llegar a una velocidad entre 50 y 67rpm
nuevamente dependiendo del voltaje.
Aunque en terminos de control se pueden llevar a cabo sistemas de realimentacion como lo son de posicion, temperatura,
carga, entrada de voltaje, etc, tiene incorporado un algoritmo
de control PID.
II-A3. Motor MX-64.: En el caso del motor MX-64 que
se puede apreciar en la Figura 3, tiene muchas caractersticas
iguales al motor MX-28, como lo es el voltaje de operacion
entre 10 y 14.8V, recomendando el uso de 12V y el rango de
accion entre 0 y 360 , con una resolucion de 0.088 [3].

encuentran en la memoria RAM al reiniciar el motor vuelven


a un valor inicial.

Figura 3. Motor MX-64.

Las diferencias se encuentran en su maximo torque estatico


en un rango de 5.5Nm a 7.3Nm, con un consumo en corriente
maximo entre 3.9A y 5.2A. Referente a la velocidad sin carga
esta en un rango de 58 a 78rpm.
En terminos de control tambien trae incorporado el algoritmo de PID y puede hacer control por realimentacion de
estados.
II-A4. Tabla de control.: La tabla control sirve para saber
los datos relativos y de funcionamiento actual del motor, estas
direcciones se encuentran en dos memorias la EEPROM se
observa en la figura 4 y la RAM figura 5.

Figura 5. Tabla de control, memoria RAM.

II-B.

USBDynamixel

Este dispositivo es el encargado de hacer la conexion entre


los motores y el PC, por lo tanto en la figura 6 se puede
observar las partes que lo componen.[4]

Figura 6. Partes del USB2Dynamixel.

Figura 4. Tabla de control, memoria EEPROM.

Los datos que se encuentran en la memoria EEPROM no


se borrar al apagar el motor, mientras que los datos que se

El led de indicador de estado nos indica si esta transmitiendo


o recibiendo informacion, luego el switch de la figura 7 que
nos permite seleccionar el tipo de conexion que se desea
realizar como lo es TTL (1), RS-485 (2) y RS-232 (3). Segun
la conexion del Dynamixel puede ser de 3P del protocolo TTL
o 4P del protocolo RS-485, y tambien esta el conector serial,
cambia una conexion de puerto USB a una serial del protocolo
RS-232.

Posteriormente se establecen los lmites de los a ngulos


y se leen y guardan los valores de posicion y velocidad
inicial. Tambien se llaman las funciones para establecer
la posicion final y velocidad final del Servo.
Finalmente se cierra la conexion con el Dynamixel y se
libera la librera llamada al inicio del programa.

Figura 7. Interruptor para modo de comunicacion.

III.

PROCEDIMIENTO

El procedimiento llevado a cabo en la practica de laboratorio


puede describirse como sigue:
Inicialmente se realizaron las conexiones correspondientes
entre el Servomotor AX-12 y el USB2Dynamixel, de manera
que ambos tuvieran conexion al controlador y al mismo tiempo
e ste alimentara el servo.
Posteriormente se conecto el USB2Dynamixel al puerto del
computador y se ejecuto Roboplus. Una vez en el programa se
ingreso a la pestana Expert y se selecciono Dynamixel Wizard,
con el objetivo de abrir el puerto de conexion y buscar el
Dynamixel previamente conectado.
Con el Dynamixel reconocido en Roboplus, se utilizo el
dial para mover el motor manualmente desde la aplicacion y
comprobar la correcta identificacion del mismo.

Luego de ejecutar la funcion en Matlab y verificar el comportamiento adecuado del servomotor, se procedio a realizar
una funcion para convertir un valor de a ngulo a un valor digital
que se enva al motor, esto teniendo en cuenta los lmites del
mismo.
IV.

DE PREGUNTAS
AN ALISIS
Y SOLUCI ON

Para crear la funcion mencionada en la seccion de Procedimiento se realizo el siguiente analisis:


El servomotor trabajado en la practica de laboratorio corresponda a la referencia AX-12A, de manera que segun la
pagina del fabricante (vease [1]) posee un rango operacional
en grados de 0 a 300 y ademas un bus de conversion de
10bits, es decir se pueden establecer valores entre 0 y 1024
para especificar una orientacion del motor. Por lo tanto, si se
quiere convertir un valor ingresado en grados a un valor entero
de 0 a 1024, debe multiplicarse dicho valor por un factor de
3.41, que resulta del cociente entre 1024 y 300.
De esta manera la funcion en Matlab quedo establecida tal
como se muestra en la Figura 8:

Con las pruebas realizadas en Roboplus, lo siguiente fue


establecer comunicacion desde Matlab al servo, para ello se
libero previamente el puerto en Roboplus, de manera que no
hubieran errores de conexion en Matlab.
Una vez hecho esto, se ejecuto el codigo dado en la gua
de laboratorio, que a grandes rasgos haca lo siguiente:
Inicialmente cargaba la librera previamente agregada al
paquete de Matlab y luego de ello mostraba la lista de
funciones disponibles.
Posteriormente se establecan las variables de conexion,
correspondientes al puerto y a la velocidad de transmision, para este caso se establecio el puerto COM3 y una
velocidad de 1Mbps.
Luego de ello, se establecieron los valores de registro de
las variables principales, como lo son: posicion objetivo,
velocidad angular, velocidad actual, lmite de a ngulo en
contra y en sentido de las manecillas del reloj, entre otras.
Se declaro el ID del Dynamixel, que es una variable
tanto de lectura como de escritura. Ademas se crearon
las variables para almacenar posicion y velocidad y se
definieron los valores finales de las mismas.
Despues de establecer toda la configuracion inicial, se
enva el comando de inicializacion del Dynamixel, con
el cual se reconoce el ID correspondiente, as como el
puerto y velocidad de transmision. Ademas se comprueba
que se efectue la conexion dependiendo del valor retornado por la funcion de inicializacion.

Figura 8. Funcion implementada en Matlab.

Esta funcion tiene como parametro de salida el valor res,


que es el valor retornado correspondiente al valor enviado al
servo y como parametro de entrada el valor posFinal que es
el valor en grados ingresado. En el programa se observa que
res es el resultado de multiplicar el valor de posicion final por
el factor 3.41, lo cual se encuentra condicionado al rango de
grados del motor, esto es cualquier valor por encima de 300
no es permitido y por lo tanto no podra ser convertido, en
cuyo caso se muestra un mensaje de Valor incorrecto.
El rango de posicion del motor se puede limitar a partir de
la funcion:

En la cual se establece en vez del valor de 300 el valor


con el cual se requiera limitar, para el caso de la practica el
valor utilizado fue de 200 .

Una vez limitado este valor se probo estableciendo la


posicion final del motor en 300 , de manera que lo que
sucedio fue que el motor no ejecuto la orden (no se presento
el movimiento del rotor), debido a que se superaba el lmite
superior establecido, a pesar de que era una posicion valida
dentro de las especificaciones del motor.
Los datos del servomotor se encuentran en dos tipos de
memorias: EEPROM y RAM; segun las especificaciones de
los motores la diferencia entre ellas es que los datos en la
memoria RAM se restablecen al valor inicial siempre que la
alimentacion se vuelve a conectar, mientras que los datos en el
a rea de la EEPROM se mantienen una vez que se establecen,
incluso si la alimentacion se ha retirado.
Dentro de los registros existentes en el Servomotor, se
encuentra uno llamado Lock el cual sirve para especificar si
el a rea de la EEPROM puede ser o no modificada, es decir
establece si los valores de los registros contenidos en dicha
memoria pueden ser modificados (en caso de que sean de
escritura).
Este registro podra ser empleado en el caso de que se quieran mantener todos los parametros por defecto del servomotor,
de manera que no se puedan modificar los lmites de posicion,
el ID y demas valores.
Los datos ID y MOVING del motor son importantes
debido a que permiten reconocer el Dynamixel que esta siendo
controlado y saber si la posicion objetivo ha sido alcanzada,
respectivamente.
El ID le permite al Dynamixel tener un u nico identificador y
ademas poder conectar multiples Dynamixel a un bus singular,
de manera que el controlador principal puede manejar los
servomotores mediante los paquetes de instrucciones. Debe
garantizarse que cada Dynamixel tenga un ID diferente para
evitar problemas de control.
En cuanto al registro MOVING, puede decirse que es de
lectura y posee un valor de retorno, correspondiente a 1 si el
comando de posicion objetivo esta en progreso o 0 si ya se
completo.

V.

C ONCLUSIONES

1. Al momento de hacer uso de alguno de los servomotores,


se tiene que tener en cuenta las caractersticas de voltaje
de funcionamiento, rango de accion, resolucion, torque
estatico y dinamico, para poder obtener el comportamiento deseado.
2. Es muy importante reconocer el puerto al cual ha sido
asignado el Dynamixel una vez se conecta al PC, para
evitar problemas de conexion desde Matlab.
3. Debido a que la comunicacion establecida con el servomotor es de tipo serial, es importante que los valores
enteros enviados sean partidos en bits, por lo cual se
utiliza la funcion int32 disponible en Matlab.

R EFERENCIAS
[1] ROBOTIS e-Manual v1.25.00. Disponible en lnea:
http : //support.robotis.com/en/product/dynamixel/ax series/
dxl ax actuator.htm
[2] ROBOTIS e-Manual v1.27.00. Disponible en lnea:
http : //support.robotis.com/en/product/dynamixel/mx series/
mx 28.htm
[3] ROBOTIS e-Manual v1.27.00. Disponible en lnea en:
http : //support.robotis.com/en/product/dynamixel/mx series/
mx 64.htm
[4] ROBOTIS e-Manual v1.27.00. Disponible en lnea en:
http : //support.robotis.com/en/product/auxdevice/interf ace/
usb2dxl manual.htm