práctica robonova v4 · robot. obviamente, estos tiempos son aproximados y dependen de los...

14
DISA – UPV ROBÓTICA Programación de un robot humanoide - 1 Departamento de Ingeniería de Sistemas y Automática Universidad Politécnica de Valencia ROBÓTICA PRÁCTICA Programación de un Robot Humanoide Martin Mellado Arteche Diciembre, 2006 Contenido 1. Introducción___________________________________________________ 2 2. Hardware & Software ___________________________________________ 2 3. La programación de los robots Robonova mediante RoboBasic __________ 3 4. Programación y ejecución de un ejemplo sencillo______________________ 5 5. Programación de movimientos simples del robot ______________________ 6 6. Ejercicios prácticos de movimientos del robot_________________________ 7 7. Programación de acciones del robot en base a datos sensoriales _________ 8 8. Control de sensores de proximidad_________________________________ 9 9. Ejercicios prácticos de navegación del robot _________________________ 9 A. Instruction set in RoboBasic _____________________________________ 10 B. Summary of most significant commands in RoboBasic_________________ 11

Upload: others

Post on 20-Mar-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 1

Departamento de Ingeniería de Sistemas y Automática Universidad Politécnica de Valencia

ROBÓTICA

PRÁCTICA Programación de un Robot Humanoide

Martin Mellado Arteche

Diciembre, 2006 Contenido

1. Introducción___________________________________________________ 2 2. Hardware & Software ___________________________________________ 2 3. La programación de los robots Robonova mediante RoboBasic __________ 3 4. Programación y ejecución de un ejemplo sencillo______________________ 5 5. Programación de movimientos simples del robot ______________________ 6 6. Ejercicios prácticos de movimientos del robot_________________________ 7 7. Programación de acciones del robot en base a datos sensoriales _________ 8 8. Control de sensores de proximidad_________________________________ 9 9. Ejercicios prácticos de navegación del robot _________________________ 9 A. Instruction set in RoboBasic _____________________________________ 10 B. Summary of most significant commands in RoboBasic_________________ 11

Page 2: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 2

1. Introducción Este guión pretende ser un punto de inicio para realizar trabajos prácticos de programación 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 programación (extensión del BASIC) denominado RoboBasic. En este guión se describe el robot Robonova y una guía básica de programación 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 básicos de navegación con el robot.

2. Hardware & Software El robot Robonova-1 de Hitec es un robot humanoide, completamente articulado, de algo más de 30cm de altura que incluye un servomotor digital HSR-8498HB en cada articulación. La cinemática 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 también llamado RoboBasic y cargando el programa objeto generado en el controlador MR-C3024 de la tarjeta MiCom mediante un cable serie RS232. La posición 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 físicas. Adicionalmente, el controlador puede gobernar sensores (proximidad, inclinación, …) 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 instrucción condicional ‘if then else’ que dependa de una variable cuyo valor es la inclinación del robot. Según la posición del robot, se puede ejecutar una secuencia correcta de instrucciones para que el robot se levante (según esté tumbado boca arriba o boca abajo). Todos los Robonovas que se usan en las prácticas 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 inclinación (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 información del control remoto (por ejemplo, que botón se ha pulsado) y usar este dato in el código fuente como si fuera otro sensor. De esta forma, se pueden ejecutar varios programas o modificar movimientos y acciones del robot según la acción de un usuario en el control remoto. Los Robonova se alimentan con una batería recargable de 5 células NiMH. En las prácticas se dispone para cada robot de dos juegos de baterías para poder usar el robot mientras que se recarga el otro juego de baterías. La recarga competa de una batería dura dos horas, mientras que una batería 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 comunicación serie consume mucha batería). Por tanto, el ahorro de batería es muy importante, principalmente al considerar que cuando la batería no esta completamente cargada, el robot puede trabajar de forma incorrecta. RoboBasic es un lenguaje de programación extensión del BASIC diseñado para el control de robots humanoides y exclusivo para los robots Robonova. En RoboBasic se han añadido al lenguaje general de programación 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).

Page 3: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 3

3. La programación 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 mostrarán los programas fuentes mientras que a la izquierda se tiene un explorador y un visualizador de ficheros. Los programas RoboBasic tiene la extensión “bas”. Al arrancar el programa se abre un programa vacío (“Untitled1-bas”). Cerrar este programa y abrir el programa “Blank.bas”.que se suministrará en la práctica. El código de este programa es el que se muestra y comenta a continuación, no debiendo modificarse esta configuración.

'Configure PTP for using with groups of servos PTP SETON 'Configure PTP for using with all the servos in the robot PTP ALLON '== motor direction setting ===================== DIR G6A,1,0,0,1,0,0 DIR G6B,1,1,1,1,1,1 DIR G6C,0,0,0,0,0,0 DIR 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 G6A,100, 76, 145, 93, 100, 100 MOVE G6D,100, 76, 145, 93, 100, 100 MOVE G6B,100, 30, 80, 100, 100, 100 MOVE G6C,100, 30, 80, 100, 100, 100 WAIT RETURN '================================================

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

Page 4: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 4

El significado de las instrucciones más importantes es el siguiente:

PTP SETON PTP ALLON

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

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

Las instrucciones DIR fijan el sentido de rotación 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, etcétera. 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 instrucción se fijan los servos nº 0 y 3 a rotación normal mientras que los servos 1, 2, 4 y 5 se fijan a rotación inversa.

SPEED 5

La instrucción SPEED define la velocidad de los servos mediante un número del 1 al 15. Se debe tener especial cuidado con las velocidades, ya que pueden dañar el robot o incluso a una persona que agarre el robot.

NUNCA SE DEBE USAR UNA VELOCIDAD MAYOR QUE 10

MOTOR G24

Con esta instrucción 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 instrucción es más simple que activar de forma individual sólo los servos que se usan, lo que se haría con 16 instrucciones de la siguiente forma:

MOTOR 0 MOTOR 1 MOTOR 2 ... MOTOR 22

En una sección posterior se mostrará cuáles 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 instrucción RETURN. En concreto, la subrutina standard_pose lleva el robot a una posición estándar (posición de firmes).

standard_pose: MOVE G6A,100, 76, 145, 93, 100, 100 MOVE G6D,100, 76, 145, 93, 100, 100 MOVE G6B,100, 30, 80, 100, 100, 100 MOVE G6C,100, 30, 80, 100, 100, 100 WAIT RETURN

La instrucción 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 instrucción WAIT realizar una espera hasta que todos los servos han alcanzado su posición final. En este caso, a la vuelta de la rutina se tendrá el robot en su posición estándar preparado para que el programa continúe la ejecución.

Page 5: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 5

4. Programación y ejecución de un ejemplo sencillo En esta sección 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 introducción de un programa, compilación, edición de errores, carga del programa en el robot y ejecución del mismo. Primero introduce en el programa la siguiente línea instrucción:

MAIN: '''''''YOUR CODE HERE'''''''''' out 52,1 '================================================

Nota que las palabras reservadas reconocidas por RoboBasic se muestran automáticamente en azul, mostrándose así mismo una línea de ayuda ‘OUT [Port], [Value]’ sobre la sintaxis de la instrucción OUT. Así mismo, las palabras reservadas se cambian automáticamente a mayúsculas al terminar la instrucción. Ahora teclea el siguiente programa tal como aparece en el guión.

MAIN: '''''''YOUR CODE HERE'''''''''' OUT 52,1 DELAY 500 OUT 52,0 DELAY 500 GOTOMAIN '================================================

El programa se puede compilar con el botón Make Object Code o la opción correspondiente del menú Compile así como con la tecla F2. Compila y observa si se muestra algún error. Obviamente, la instrucción GOTOMAIN produce un error. Cámbiala a GOTO MAIN y compila de nuevo hasta que no se detecten errores. Este programa modifica la salida digital del puerto 52 alternándola entre los valores 0 y 1 cada medio segundo, repitiendo el proceso. Antes de cargar el programa en el robot, sálvalo 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 botón Download (o la tecla F6 o la opción correspondiente del menú Compile).

EL ROBOT SE VA A MOVER A LA POSICIÓN ESTÁNDAR AL ENCENDERSE, POR LO QUE HAY QUE TENER CUIDADO CON EL

MISMO PARA EVITAR POSIBLES DAÑOS O CAÍDAS Un programa se puede compilar y cargar en el robot a la vez mediante el botón Run All (la tecla F9 o la opción correspondiente del menú Compile). Nada más 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.

Page 6: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 6

5. Programación de movimientos simples del robot Tras la sección anterior ya se está listo para hacer movimiento del Robonova. Se empezará mediante la una forma más simple de realizar secuencias de movimientos en RoboBasic: mover el robot manualmente a diferentes posiciones memorizándolas y ejecutándolas. Para ello, con el cable serie conectado al robot y éste encendido, pulsar el botón ROBONOVA (o la opción ROBONOVA Motor Control del menú Controller o la tecla CTRL+F7) para obtener la siguiente ventana de Control de Motores del Robonova:

Nota: El botón Close pequeño debería ser un botón Wait

En la figura del robot se puede observar que los servos, es decir las articulaciones, están identificados con números. 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 posición angular. Por ejemplo, el servo 0 estará según 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 articulación. Modifica de esta forma el servo 7 del robot hasta que el brazo izquierdo esté horizontal. A la izquierda del número 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 articulación 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.

Page 7: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 7

La posición alcanzada debe ser similar a la que se muestra en la figura de la izquierda.

Asegúrate de que todos los servos estén otra vez activos (marcado su checkbox). En la ventana del programa, pon el cursor en la línea siguiente a la línea de comentarios ‘YOUR CODE HERE’ y pulsa el botón Insert en la ventana de Control de Motores del Robonova. Tiene que haberse añadido una instrucción 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 posición próxima a la vertical (tal como en la figura anterior derecha). Asegurándote de nuevo de que los servos estén activos, introduce una nueva instrucción MOVE después de la anterior. Con el botón Wait (hay un error en el programa ya que el botón Close pequeño debería ser Wait) se pueden introducir instrucciones WAIT para forzar la terminación de los movimientos. Cierra la ventana de Control de Motores del Robonova y escribe una instrucción “DELAY 2000” tras cada movimiento para que se realice una espera de dos segundos. Para que el programa se repita cíclicamente, introduce una instrucción “GOTO MAIN”, debiendo quedar el código similar al siguiente:

Para probar el programa, compílalo y cárgalo en el robot con F9 (si se producen errores, tendrás que editar el programa).

6. Ejercicios prácticos de movimientos del robot Tras verificar la ejecución del ejemplo anterior, en la práctica se indicarán 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 atrás. 5. Girar 45º sobre la posición del robot (derecha e izquierda).

Page 8: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 8

7. Programación de acciones del robot en base a datos sensoriales El controlador del robot permite el uso de sensores de proximidad, inclinación, u otros similares para poder evaluarlos en condiciones de los programas que se ejecutan sobre el robot. De esta forma se pueden realizar programas más 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 prácticas 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 inclinación (tilt) en su espalda, • un led infrarrojo en su cabeza para recibir órdenes del control remoto. En la siguiente tabla se muestra los puertos analógico-digital a los que están conectados los sensores en los Robonovas usados en las prácticas.

Sensor #AD port IR de proximidad (pecho) 0

IR de proximidad (brazo izquierdo) 1 IR de proximidad (brazo derecho) 2 sensor tilt de inclinación (espalda) 6

IR LED (control remoto) 7 El sensor tilt de inclinación acoplado al robot es un sensor (basado en líquido capacitivo) con un rango de medidas de 120º, una resolución 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) según se muestra en la siguiente figura.

Por tanto, las posibilidades de controlar el sensor en un programa RoboBasic serán: • 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

Page 9: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 9

EJERCICIO 1: Programad el robot para que mueva su hombro izquierdo (servo #6) según la inclinación obtenida por el sensor tilt de forma que, independientemente de cuánto se incline el robot hacia delante o hacia atrás, el brazo se mantenga siempre en una posición vertical. • Implementadlo primero usando una variable BYTE y después modificadlo para una variable

INTEGER, analizando las diferencias entre ambos casos. Sugerencias: Usad la instrucción SERVO para mover el hombro izquierdo (ver apéndices). 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 atrás y 190º es con el brazo vertical hacia adelante. Un esquema gráfico ayuda a realizar la conversión 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 según 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 centímetros. Sugerencia: Por comodidad en el movimiento del robot, reajusta el rango del servo sumando 55º al valor en centímetros 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 prácticos de navegación del robot Tras verificar la ejecución de los ejercicios anteriores, en la práctica se indicarán nuevos ejercicios a realizar para la navegación del robot. Posibles ejercicios a realizar son: 1. Que el robot ande hasta que el sensor del pecho detecte un obstáculo a menos de 25cm. 2. Determinar con la ayuda del brazo en qué sentido (derecha/izquierda) se evita el obstáculo. 3. Que se evite el obstáculo mediante pasos laterales.

Page 10: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 10

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 3 Only incremental 4 Up to 5 nesting subroutine calls

Page 11: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 11

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 set

Symbol Description Symbol Description

+ Addition symbol - Subtraction symbol

* Multiplication symbol / Division symbol

% Remnant symbol . Bit designation symbol

& Numeral symbol : label symbol

?? Text symbol ?? Character string symbol

= Equal sign or substitution symbol < Inequality symbol

> Inequality symbol << Bit left shift symbol

>> Bit right shift symbol

Arithmetic operators

RoboBasic only supports byte types or integer types, so a decimal point in the

outcome will be ignored

= Equal to X = Y <> Not equal X <> Y

< Less than X < Y > Greater than X > Y

<= Equal or less than X <= Y >= Equal or greater than X >= Y

Variable/Constant

Figure type size Range

BYTE 1 byte (8bit) 0-255

INTEGER 2 byte (16bit) 0-65535

Constants:

CONST OFF = 0

Variables:

DIM left_sensor AS BYTE

Page 12: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 12

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

Page 13: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 13

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 100, 50, 140, 120, 80, 40

MOVE 120, , , 160

MOVE , 70, 100

MOVE , , , , , 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

Page 14: Práctica Robonova v4 · robot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot o de las acciones (por ejemplo, la comunicación serie consume mucha

DISA – UPV ROBÓTICA

Programación de un robot humanoide - 14

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 □□□□□□□□□□