You are on page 1of 14

DISA UPV

ROBTICA

Departamento de Ingeniera de Sistemas y Automtica


Universidad Politcnica de Valencia

ROBTICA

PRCTICA
Programacin de un
Robot Humanoide
Martin Mellado Arteche
Diciembre, 2006
Contenido
1.
2.
3.
4.
5.
6.
7.
8.
9.
A.
B.

Introduccin___________________________________________________ 2
Hardware & Software ___________________________________________ 2
La programacin de los robots Robonova mediante RoboBasic __________ 3
Programacin y ejecucin de un ejemplo sencillo______________________ 5
Programacin de movimientos simples del robot ______________________ 6
Ejercicios prcticos de movimientos del robot_________________________ 7
Programacin de acciones del robot en base a datos sensoriales _________ 8
Control de sensores de proximidad_________________________________ 9
Ejercicios prcticos de navegacin del robot _________________________ 9
Instruction set in RoboBasic _____________________________________ 10
Summary of most significant commands in RoboBasic_________________ 11

Programacin de un robot humanoide - 1

DISA UPV

ROBTICA

1. Introduccin
Este guin pretende ser un punto de inicio para realizar trabajos prcticos de programacin de
robots humanoides con el uso del kit de robot humanoide Robonova-1, para introducir este
robot a usuarios y programadores que nunca han tenido un contacto previo con este robot o su
lenguaje de programacin (extensin del BASIC) denominado RoboBasic. En este guin se
describe el robot Robonova y una gua bsica de programacin con el objetivo de poder
empezar a mover el robot. Finalmente, se explica el uso de los sensores infrarrojos acoplados
al robot para desarrollar problemas bsicos de navegacin con el robot.
2. Hardware & Software
El robot Robonova-1 de Hitec es un robot humanoide, completamente articulado, de algo ms
de 30cm de altura que incluye un servomotor digital HSR-8498HB en cada articulacin. La
cinemtica del Robonova se compone de 5 articulaciones por cada pierna y 3 articulaciones
por cada brazo, dando un total de 16 articulaciones. Estos servos se pueden controlar
desarrollando programas en el lenguaje RoboBasic mediante el programa de desarrollo
tambin llamado RoboBasic y cargando el programa objeto generado en el controlador MRC3024 de la tarjeta MiCom mediante un cable serie RS232. La posicin de las articulaciones se
puede definir con instrucciones de programa, de forma que cambiando los ngulos de los
servos, el robot pueda hacer movimientos como andar, correr, bailar, etc.
Los servos se pueden modificar en un rango de grados (de 10 a 190), aunque algunas
articulaciones tienen un rango menos (por ejemplo, los tobillos o las rodillas) por restricciones
fsicas.
Adicionalmente, el controlador puede gobernar sensores (proximidad, inclinacin, ) y los
datos obtenidos con los sensores se pueden evaluar en los programas RoboBasic mientras se
ejecutan en el controlador del robot. Por ejemplo, se pueden escribir programas con una
instruccin condicional if then else que dependa de una variable cuyo valor es la inclinacin
del robot. Segn la posicin del robot, se puede ejecutar una secuencia correcta de
instrucciones para que el robot se levante (segn est tumbado boca arriba o boca abajo).
Todos los Robonovas que se usan en las prcticas incluyen los siguientes sensores instalados:
un sensor infrarrojo de proximidad sensor en su pecho,
un sensor infrarrojo de proximidad en cada uno de sus brazos,
un sensor de inclinacin (tilt) en su espalda,
un led infrarrojo en su cabeza para recibir rdenes del control remoto.
Los Robonova incluyen un control remoto. Los programas del robot pueden obtener
informacin del control remoto (por ejemplo, que botn se ha pulsado) y usar este dato in el
cdigo fuente como si fuera otro sensor. De esta forma, se pueden ejecutar varios programas o
modificar movimientos y acciones del robot segn la accin de un usuario en el control remoto.
Los Robonova se alimentan con una batera recargable de 5 clulas NiMH. En las prcticas se
dispone para cada robot de dos juegos de bateras para poder usar el robot mientras que se
recarga el otro juego de bateras. La recarga competa de una batera dura dos horas, mientras
que una batera completamente cargada suministra aproximadamente una hora de trabajo del
robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o
de las acciones (por ejemplo, la comunicacin serie consume mucha batera). Por tanto, el
ahorro de batera es muy importante, principalmente al considerar que cuando la batera no
esta completamente cargada, el robot puede trabajar de forma incorrecta.
RoboBasic es un lenguaje de programacin extensin del BASIC diseado para el control de
robots humanoides y exclusivo para los robots Robonova. En RoboBasic se han aadido al
lenguaje general de programacin BASIC comandos necesarios para controlar los robots
Robonova. Para desarrollar programas y cargarlos en el robot, se suministra con los robots
Robonova el programa de desarrollo denominado RoboBasic (v2.5).

Programacin de un robot humanoide - 2

DISA UPV

ROBTICA

3. La programacin de los robots Robonova mediante RoboBasic


Para programar el Robonova se debe
ejecutar el programa de desarrollo
RobotBasic
mediante
el
acceso
disponible en el escritorio.
La ventana principal del programa
RobotBasic que aparece en pantalla1 es
la que se muestra en la Figura de la
derecha. En la zona de la derecha se
mostrarn
los
programas
fuentes
mientras que a la izquierda se tiene un
explorador y un visualizador de ficheros.
Los programas RoboBasic tiene la
extensin bas.
Al arrancar el programa se abre un programa vaco (Untitled1-bas). Cerrar este programa y
abrir el programa Blank.bas.que se suministrar en la prctica. El cdigo de este programa es
el que se muestra y comenta a continuacin, no debiendo modificarse esta configuracin.
'Configure PTP for using with groups of servos
PTP SETON
'Configure PTP for using with all the servos in the robot
PTP ALLON
'==
DIR
DIR
DIR
DIR

motor direction setting =====================


G6A,1,0,0,1,0,0
G6B,1,1,1,1,1,1
G6C,0,0,0,0,0,0
G6D,0,1,1,0,1,0

'== motor start position read ===================


GETMOTORSET G6A,1,1,1,1,1,0
GETMOTORSET G6B,1,1,1,0,0,0
GETMOTORSET G6C,1,1,1,0,0,0
GETMOTORSET G6D,1,1,1,1,1,0
SPEED 5
'== motor power on
MOTOR G24

=============================

GOSUB standard_pose
'================================================
'Main procedure
MAIN:
'''''''YOUR CODE HERE''''''''''
'================================================
'================================================
standard_pose:
MOVE
MOVE
MOVE
MOVE
WAIT

G6A,100,
G6D,100,
G6B,100,
G6C,100,

76, 145, 93, 100,


76, 145, 93, 100,
30, 80, 100, 100,
30, 80, 100, 100,

100
100
100
100

RETURN
'================================================

Al ejecutar por primera vez el programa en un PC, se solicita una configuracin en la que se debe seleccionar el
controlador MR-C3024 Serie y aceptar el resto de pantallas.

Programacin de un robot humanoide - 3

DISA UPV

ROBTICA

El significado de las instrucciones ms importantes es el siguiente:


PTP SETON
PTP ALLON

Activa el modo de movimiento punto a punto para el robot.


DIR
DIR
DIR
DIR

G6A,1,0,0,1,0,0
G6B,1,1,1,1,1,1
G6C,0,0,0,0,0,0
G6D,0,1,1,0,1,0

Las instrucciones DIR fijan el sentido de rotacin de los servos. Los servos se referencian por
grupos en las instrucciones, de forma que el grupo G6A incluye los servos desde el 0 al 5, el
grupo G6B se compone de los servos desde el 6 al 11, etctera. El 1 significa sentido de
izquierda a derecha (sentido de las agujas del reloj) mientras que el 0 significa el sentido
contrario. Por ejemplo, en la primera instruccin se fijan los servos n 0 y 3 a rotacin normal
mientras que los servos 1, 2, 4 y 5 se fijan a rotacin inversa.
SPEED 5

La instruccin SPEED define la velocidad de los servos mediante un nmero del 1 al 15. Se
debe tener especial cuidado con las velocidades, ya que pueden daar el robot o incluso a una
persona que agarre el robot.
NUNCA SE DEBE USAR UNA VELOCIDAD MAYOR QUE 10
MOTOR G24

Con esta instruccin se indica que se va a trabajar con los servos del 0 al 23, activando estos
servos (los servos que se van a utilizar se deben activar siempre al principio de un programa).
Realmente con el Robonova no se usan 24 servos sino 16, pero esta instruccin es ms simple
que activar de forma individual slo los servos que se usan, lo que se hara con 16
instrucciones de la siguiente forma:
MOTOR
MOTOR
MOTOR
...
MOTOR

0
1
2
22

En una seccin posterior se mostrar cules son los 16 servos del robot que se utilizan.
GOSUB standard_pose

GOSUB sirve para realizar un salto a una subrituna de la que se volver con la instruccin
RETURN. En concreto, la subrutina standard_pose lleva el robot a una posicin estndar
(posicin de firmes).
standard_pose:
MOVE
MOVE
MOVE
MOVE
WAIT

G6A,100,
G6D,100,
G6B,100,
G6C,100,

76, 145, 93, 100,


76, 145, 93, 100,
30, 80, 100, 100,
30, 80, 100, 100,

100
100
100
100

RETURN

La instruccin MOVE mueve los servos a un cierto ngulo. De nuevo se usan grupos para
referenciar a los servos. En el primer MOVE se fijan los ngulos para los seis primeros servos
(del 0 al 5) y as sucesivamente hasta definir 4 grupos, es decir, 24 servos (del 0 al 23).
La instruccin WAIT realizar una espera hasta que todos los servos han alcanzado su posicin
final. En este caso, a la vuelta de la rutina se tendr el robot en su posicin estndar preparado
para que el programa contine la ejecucin.

Programacin de un robot humanoide - 4

DISA UPV

ROBTICA

4. Programacin y ejecucin de un ejemplo sencillo


En esta seccin se va a probar un programa muy simple para manejar la luz de la cabeza del
robot de forma que se aprenda el uso del sistema RoboBasic, incluyendo las etapas de
introduccin de un programa, compilacin, edicin de errores, carga del programa en el robot y
ejecucin del mismo.
Primero introduce en el programa la siguiente lnea instruccin:
MAIN:
'''''''YOUR CODE HERE''''''''''
out 52,1
'================================================

Nota que las palabras reservadas reconocidas por RoboBasic se muestran automticamente
en azul, mostrndose as mismo una lnea de ayuda OUT [Port], [Value] sobre la sintaxis de la
instruccin OUT. As mismo, las palabras reservadas se cambian automticamente a
maysculas al terminar la instruccin. Ahora teclea el siguiente programa tal como aparece en
el guin.
MAIN:
'''''''YOUR CODE HERE''''''''''
OUT 52,1
DELAY 500
OUT 52,0
DELAY 500
GOTOMAIN
'================================================

El programa se puede compilar con el botn Make Object Code o la opcin correspondiente
del men Compile as como con la tecla F2. Compila y observa si se muestra algn error.
Obviamente, la instruccin GOTOMAIN produce un error. Cmbiala a GOTO MAIN y compila
de nuevo hasta que no se detecten errores. Este programa modifica la salida digital del puerto
52 alternndola entre los valores 0 y 1 cada medio segundo, repitiendo el proceso.
Antes de cargar el programa en el robot, slvalo con tu propio nombre en tu directorio
personal.
Verifica que el robot se encuentra conectado al ordenador mediante el cable serie y que el
robot est encendido (interruptor situado a su espalda). Pulsa el botn Download (o la tecla
F6 o la opcin correspondiente del men Compile).
EL ROBOT SE VA A MOVER A LA POSICIN ESTNDAR AL
ENCENDERSE, POR LO QUE HAY QUE TENER CUIDADO CON EL
MISMO PARA EVITAR POSIBLES DAOS O CADAS
Un programa se puede compilar y cargar en el robot a la vez mediante el botn Run All (la
tecla F9 o la opcin correspondiente del men Compile).
Nada ms se carga un programa en el robot, empieza a ejecutarse (esto puede ser peligroso
cuando el robot se mueva). Se dispone de los botones Controller Run Mode y Controller
Stop Mode (o las opciones correspondientes del men Controller) para ejecutar y parar el
programa desde RoboBasic.

Programacin de un robot humanoide - 5

DISA UPV

ROBTICA

5. Programacin de movimientos simples del robot


Tras la seccin anterior ya se est listo para hacer movimiento del Robonova. Se empezar
mediante la una forma ms simple de realizar secuencias de movimientos en RoboBasic:
mover el robot manualmente a diferentes posiciones memorizndolas y ejecutndolas. Para
ello, con el cable serie conectado al robot y ste encendido, pulsar el botn ROBONOVA (o la
opcin ROBONOVA Motor Control del men Controller o la tecla CTRL+F7) para obtener la
siguiente ventana de Control de Motores del Robonova:

Nota: El botn Close pequeo debera ser un botn Wait


En la figura del robot se puede observar que los servos, es decir las articulaciones, estn
identificados con nmeros. Los 16 servos usados en el robot son los siguientes:
Pierna izquierda: servos 0, 1, 2, 3 y 4
Pierna derecha: servos 18, 19, 20, 21 y 22
Brazo izquierdo: servos 6, 7 y 8
Brazo derecho: servos 12, 13 y 14
El valor que se muestra a la derecha de cada servo indica su posicin angular. Por ejemplo, el
servo 0 estar segn la figura anterior girado 100, mientras que el servo 1 estar girado 76.
Pinchando sobre un servo que est activo aparece un control que permite mover la articulacin.
Modifica de esta forma el servo 7 del robot hasta que el brazo izquierdo est horizontal.
A la izquierda del nmero de cada servo hay un checkbox. Si el servo tiene su checkbox
marcado, el servo est activo, por lo que no se puede mover manualmente. Cuando se
desactiva el checkbox de un servo, ste queda libre y la articulacin del robot se puede mover
con las manos.
ES MUY IMPORTANTE NO INTENTAR MOVER A MANO UN SERVO
MARCADO CON EL CHECKBOX PORQUE ESTROPEAR EL SERVO
AL MOVER EL ROBOT CON LA MANO SE DEBE HACER SUAVEMENTE
Modifica de esta forma el servo 13 del robot hasta que el brazo derecho est horizontal.

Programacin de un robot humanoide - 6

DISA UPV

ROBTICA

La posicin alcanzada debe ser similar a la que se muestra en la figura de la izquierda.

Asegrate de que todos los servos estn otra vez activos (marcado su checkbox).
En la ventana del programa, pon el cursor en la lnea siguiente a la lnea de comentarios YOUR
CODE HERE y pulsa el botn Insert en la ventana de Control de Motores del Robonova. Tiene
que haberse aadido una instruccin MOVE que contiene los ngulos de los servos tal como
se muestra en dicha ventana.
Repite el proceso anterior con los brazos del robot alzados por encima de la cabeza en una
posicin prxima a la vertical (tal como en la figura anterior derecha).
Asegurndote de nuevo de que los servos estn activos, introduce una nueva instruccin
MOVE despus de la anterior.
Con el botn Wait (hay un error en el programa ya que el botn Close pequeo debera ser
Wait) se pueden introducir instrucciones WAIT para forzar la terminacin de los movimientos.
Cierra la ventana de Control de Motores del Robonova y escribe una instruccin DELAY
2000 tras cada movimiento para que se realice una espera de dos segundos.
Para que el programa se repita cclicamente, introduce una instruccin GOTO MAIN,
debiendo quedar el cdigo similar al siguiente:

Para probar el programa, complalo y crgalo en el robot con F9 (si se producen errores,
tendrs que editar el programa).
6. Ejercicios prcticos de movimientos del robot
Tras verificar la ejecucin del ejemplo anterior, en la prctica se indicarn ejercicios a realizar
con movimientos del robot.
Posibles ejercicios a realizar son:
1. Mantener el equilibrio del robot sobre una pierna.
2. Realizar un paso hacia delante.
3. Realizar un paso lateralmente (derecha e izquierda).
4. Realizar un paso hacia atrs.
5. Girar 45 sobre la posicin del robot (derecha e izquierda).

Programacin de un robot humanoide - 7

DISA UPV

ROBTICA

7. Programacin de acciones del robot en base a datos sensoriales


El controlador del robot permite el uso de sensores de proximidad, inclinacin, u otros similares
para poder evaluarlos en condiciones de los programas que se ejecutan sobre el robot. De esta
forma se pueden realizar programas ms flexibles que permitan adaptar el comportamiento del
robot a su entorno, por ejemplo, navegando por el mismo.
Todos los Robonovas que se usan en las prcticas incluyen los siguientes sensores instalados:
un sensor infrarrojo de proximidad sensor en su pecho,
un sensor infrarrojo de proximidad en cada uno de sus brazos,
un sensor de inclinacin (tilt) en su espalda,
un led infrarrojo en su cabeza para recibir rdenes del control remoto.
En la siguiente tabla se muestra los puertos analgico-digital a los que estn conectados los
sensores en los Robonovas usados en las prcticas.
Sensor
IR de proximidad (pecho)
IR de proximidad (brazo izquierdo)
IR de proximidad (brazo derecho)
sensor tilt de inclinacin (espalda)
IR LED (control remoto)

#AD port
0
1
2
6
7

El sensor tilt de inclinacin acoplado al robot es un sensor (basado en lquido capacitivo) con
un rango de medidas de 120, una resolucin menor de 0.1 y un tiempo de respuesta menor
de medio segundo. Como se conecta al puerto AD #6, se puede obtener su valor en una
variable de tipo BYTE (rango 0~213), o en una variable de tipo INTEGER (rango 0~855) segn
se muestra en la siguiente figura.

Por tanto, las posibilidades de controlar el sensor en un programa RoboBasic sern:


Si se desea controlar con una variable de tipo BYTE
TO CONTROL THE TILT SENSOR WITH A BYTE VARIABLE:
DIM BTilt AS BYTE
BTilt = AD(6)
BTilt variable has the data value of the tilt sensor
The value can run from 0 to 213

Si se desea controlar con una variable de tipo INTEGER


TO CONTROL THE TILT SENSOR WITH AN INTEGER VARIABLE:
DIM ITilt AS INTEGER
ITilt = AD(6)
ITilt variable has the data value of the tilt sensor
The value can run from 0 to 855

Programacin de un robot humanoide - 8

DISA UPV

ROBTICA

EJERCICIO 1:
Programad el robot para que mueva su hombro izquierdo (servo #6) segn la inclinacin
obtenida por el sensor tilt de forma que, independientemente de cunto se incline el robot hacia
delante o hacia atrs, el brazo se mantenga siempre en una posicin vertical.
Implementadlo primero usando una variable BYTE y despus modificadlo para una variable
INTEGER, analizando las diferencias entre ambos casos.
Sugerencias:
Usad la instruccin SERVO para mover el hombro izquierdo (ver apndices).
Los servos se pueden mover solo en un rango de grados desde 10 a 190.
Para el hombro izquierdo, 100 representa tener el brazo vertical hacia abajo, 10 es con el
brazo vertical hacia atrs y 190 es con el brazo vertical hacia adelante.
Un esquema grfico ayuda a realizar la conversin adecuada.
8. Control de sensores de proximidad
Los sensores infrarrojos acoplados al robot se basan en el sensor Sharp GP2D12 con una
rango de distancia medida de 10~80cm segn la siguiente figura. Fuera de este rango no se
garantiza la validez de los valores obtenidos: por ejemplo, para una distancia menor que 10cm,
el sensor devuelve un valor impredecible (es decir, basura). Como los sensores se conectan a
los puertos AD #0 (pecho), AD #1 (brazo izquierdo) y AD #2 (brazo derecho), los valores del
sensor se pueden obtener en variables de tipo INTEGER, dando valores en un rango
aproximado 682~88 (nota el rango decreciente en los valores del sensor) de forma que el valor
682 equivale a 10cm mientras que el valor 88 equivale a 80cm.

EJERCICIO 2:
Programad el robot para que mueva su hombro izquierdo de acuerdo al valor obtenido por el
sensor de proximidad del pecho una vez convertido a centmetros.
Sugerencia:
Por comodidad en el movimiento del robot, reajusta el rango del servo sumando 55 al valor en
centmetros de la distancia: Por ejemplo, para 10cm, el servo 6 debe moverse a valor 65
mientras que para distancias de 80cm se debe ir a valor 135.

9. Ejercicios prcticos de navegacin del robot


Tras verificar la ejecucin de los ejercicios anteriores, en la prctica se indicarn nuevos
ejercicios a realizar para la navegacin del robot.
Posibles ejercicios a realizar son:
1. Que el robot ande hasta que el sensor del pecho detecte un obstculo a menos de 25cm.
2. Determinar con la ayuda del brazo en qu sentido (derecha/izquierda) se evita el obstculo.
3. Que se evite el obstculo mediante pasos laterales.

Programacin de un robot humanoide - 9

DISA UPV

ROBTICA

A. Instruction set in RoboBasic


This appendix lists the most significant commands used in RoboBasic. As the grammar
of RoboBasic is based on the general BASIC programming language, most of RoboBasic is
similar to or the same as BASIC.
Commands related with declaration/ definition
DIM
Declare variable
AS
Assign variable when declaring variable
CONST
Declare constant
BYTE
Assign as byte type when declaring variable
INTEGER
Assign as integer type when declaring variable2
Operand related operation
AND
Use the logical AND conditional expression
OR
Use the logical OR conditional expression
MOD
Calculating module for arithmetic operation
XOR
Use the logical XOR conditional expression
NOT
Reversing all bit
Flow control commands
IF
Begin conditional statement
THEN
Execute the next statement when condition of conditional statement
is true
ELSEIF
Begin another conditional statement
ELSE
Execute the next statement when condition of conditional statement
is false
ENDIF
Finish conditional statement
FOR
Begin loop statement3
TO
Assign the repetitive range for a loop statement
NEXT
End loop statement
GOTO
Split the flow of the program
ON...GOTO
Skip according to the value of a variable
GOSUB
Call up a sub routine4
RETURN
Return from a sub routine
END
Finish the execution of the program
STOP
Stop the execution of program
RUN
Run program continuously
WAIT
Wait until program or robot motion has completed
DELAY
Delay execution of program for set period of time (in ms)
Digital signal input and output command
IN
Read signal from input port
OUT
Send signal to output port
Command for motor control
MOVE
Operate several servos at the same time
SPEED
Set the servo speed
SERVO
Control a servo
MOVEPOS
Move servo group declared by POS
POS
Set a specific pose for the robot
Parameter assigning motor group
G6A
Assign #0~#5 servos to group A
G6B
Assign #6~#11 servos to group B
2

RoboBasic does not support negative numbers


Only incremental
4
Up to 5 nesting subroutine calls
3

Programacin de un robot humanoide - 10

DISA UPV

ROBTICA

G6C
Assign #12~#17 servos to group C
G6D
Assign #18~#23 servos to group D
G6E
Assign #24~#29 servos to group E
G8A
Assign #0~#7 servos to group A
G8B
Assign #8~#15 servos to group B
G8C
Assign #16~#23 servos to group C
G8D
Assign #24~#31 servos to group D
G12
Assign #0~#11 servos
G16
Assign #0~#15 servos
G24
Assign #0~#23 servos
G32
Assign #0~#31 servos
Command for sound controlling
MUSIC
Play music with PIEZO
Commands for analogical signal processing
AD
Read analogical signal from the AD port
REMOCON
Read a key value from an infrared remote control
Other commands
RND
Create a random number
REMARK or ()
Make a comment in code

B. Summary of most significant commands in RoboBasic


Character
Symbol
+
*
%
&
??
=
>
>>

set
Description
Addition symbol
Multiplication symbol
Remnant symbol
Numeral symbol
Text symbol
Equal sign or substitution symbol
Inequality symbol
Bit right shift symbol

Arithmetic operators
RoboBasic only supports
outcome will be ignored
=
Equal to
<
Less than
<= Equal or less than

Symbol
/
.
:
??
<
<<

Description
Subtraction symbol
Division symbol
Bit designation symbol
label symbol
Character string symbol
Inequality symbol
Bit left shift symbol

byte types or integer types, so a decimal point in the


X = Y
X < Y
X <= Y

Variable/Constant
Figure type
size
BYTE
1 byte (8bit)
INTEGER
2 byte (16bit)

<>
>
>=

Not equal
Greater than
Equal or greater than

X <> Y
X > Y
X >= Y

Range
0-255
0-65535

Constants:
CONST OFF = 0
Variables:
DIM left_sensor AS BYTE

Programacin de un robot humanoide - 11

DISA UPV

ROBTICA

Bit pointing:
A.3 = IN(1)
Read value from port #1 and put this value in third bit of integer
variable A
Line label
A Line label is used for pointing to a location within the program
The label symbol (:) must be attached after the character label
GOTO
GOTO [Line label]
Example:
I = 7
IF I = 6 THEN GOTO L1
'Code
L1: J = 1
'Code
IF ... THEN ...
IF [condition] THEN
[statement when condition is true]
IF [condition1] THEN
[Statement when condition1 is true]
ELSEIF [condition 2] THEN
[Statement when condition2 is true]
ELSE
[Statement when condition 1 and condition2 are false]
ENDIF
FOR ... NEXT
FOR [Loop variable] = [Start] TO [End]
[Loop statement]
NEXT [Loop variable]
GOSUB ... RETURN
GOSUB [line label]
'Code
[line label]:
'Code
RETURN
WAIT
Wait until command (a motion for example) is finished
When one command is executed, the next command will be executed at the same time
without stopping the previous command. If the next command is required to run only
after the current command has finished, then the WAIT command is used
Example:
MOVE 120, 100, 140, 90, 70, 150
WAIT

Programacin de un robot humanoide - 12

DISA UPV

ROBTICA

DELAY
Delay the execution of the program for a set time (in milliseconds)
DELAY [Delay time]
IN()
Read digital signal value from port
IN([Pot number])
OUT
Send digital signal to a port
OUT [port number], [output value]
Example:
OUT 52,0

'Send 0 value to port #52

MOTOR
Set the servo to be used
MOTOR [motor number] / [Specifying group]
Example:
MOTOR 0 '#0 servo will be used
MOTOR G6A 'servo group 6A (#0~#5) will be used
MOTOR G6C 'servo group 6C (#12~#17) will be used
MOVE
Operate several servos at the same time
MOVE [group pointing], [motor n angle], ...
The range of the [motor angle] is between 10~190
Examples:
MOVE
MOVE
MOVE
MOVE

100, 50, 140, 120, 80, 40


120, , , 160
, 70, 100
, , , , , 100

MOVE G6A, 85, 113, 72, 117, 115, 100


MOVE G6C, 75, , 96, 123, , 122
MOVE G8A, 85, 113, 72, 117, 115, 100, 95, 45
SPEED
Set the speed of a servo. A value between 1 and 15 is required
SPEED [motor speed]
SERVO
One servo is operated

Programacin de un robot humanoide - 13

DISA UPV

ROBTICA

SERVO [motor No.],[motor Angle]


The range of the [motor angle] is between 10~190
AD()
Analogue signal from the AD Port is converted into a Digital signal
AD ([AD Port])
REMOCON()
Read infrared remote controller values from AD Transformation Port #7
REMOCON ([Remocon(#)])

mrtn.isa.upv.es

Programacin de un robot humanoide - 14

You might also like