Práctica+Robonova.pdf

  • Upload
    ga16det

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

  • 7/25/2019 Prctica+Robonova.pdf

    1/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 1

    Departamento de Ingeniera de Sistemas y AutomticaUniversidad Politcnica de Valencia

    ROBTICA

    PRCTICAProgramacin de unRobot Humanoide

    Martin Mellado Arteche

    Diciembre, 2006

    Contenido

    1. Introduccin___________________________________________________ 22. Hardware & Software ___________________________________________ 23. La programacin de los robots Robonova mediante RoboBasic __________ 34. Programacin y ejecucin de un ejemplo sencillo______________________ 55. Programacin de movimientos simples del robot ______________________ 66. Ejercicios prcticos de movimientos del robot_________________________ 77. Programacin de acciones del robot en base a datos sensoriales _________ 88. Control de sensores de proximidad_________________________________ 99. Ejercicios prcticos de navegacin del robot _________________________ 9A.

    Instruction set in RoboBasic _____________________________________ 10

    B. Summary of most significant commands in RoboBasic_________________ 11

  • 7/25/2019 Prctica+Robonova.pdf

    2/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 2

    1. Introduccin

    Este guin pretende ser un punto de inicio para realizar trabajos prcticos de programacin derobots 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 sulenguaje de programacin (extensin del BASIC) denominado RoboBasic. En este guin sedescribe el robot Robonova y una gua bsica de programacin con el objetivo de poderempezar a mover el robot. Finalmente, se explica el uso de los sensores infrarrojos acopladosal robot para desarrollar problemas bsicos de navegacin con el robot.

    2. Hardware & Software

    El robot Robonova-1 de Hiteces un robot humanoide, completamente articulado, de algo msde 30cm de altura que incluye un servomotor digital HSR-8498HB en cada articulacin. Lacinemtica del Robonova se compone de 5 articulaciones por cada pierna y 3 articulacionespor cada brazo, dando un total de 16 articulaciones. Estos servos se pueden controlardesarrollando programas en el lenguaje RoboBasic mediante el programa de desarrollotambin llamado RoboBasic y cargando el programa objeto generado en el controlador MR-C3024 de la tarjeta MiCommediante un cable serie RS232. La posicin de las articulaciones sepuede definir con instrucciones de programa, de forma que cambiando los ngulos de losservos, 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 algunasarticulaciones tienen un rango menos (por ejemplo, los tobillos o las rodillas) por restriccionesfsicas.

    Adicionalmente, el controlador puede gobernar sensores (proximidad, inclinacin, ) y losdatos obtenidos con los sensores se pueden evaluar en los programas RoboBasic mientras seejecutan en el controlador del robot. Por ejemplo, se pueden escribir programas con unainstruccin condicional if then else que dependa de una variable cuyo valor es la inclinacindel robot. Segn la posicin del robot, se puede ejecutar una secuencia correcta deinstrucciones 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 obtenerinformacin del control remoto (por ejemplo, que botn se ha pulsado) y usar este dato in elcdigo 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 sedispone para cada robot de dos juegos de bateras para poder usar el robot mientras que serecarga el otro juego de bateras. La recarga competa de una batera dura dos horas, mientrasque una batera completamente cargada suministra aproximadamente una hora de trabajo delrobot. Obviamente, estos tiempos son aproximados y dependen de los movimientos del robot ode las acciones (por ejemplo, la comunicacin serie consume mucha batera). Por tanto, elahorro de batera es muy importante, principalmente al considerar que cuando la batera noesta completamente cargada, el robot puede trabajar de forma incorrecta.

    RoboBasic es un lenguaje de programacin extensin del BASIC diseado para el control derobots humanoides y exclusivo para los robots Robonova. En RoboBasic se han aadido al

    lenguaje general de programacin BASIC comandos necesarios para controlar los robotsRobonova. Para desarrollar programas y cargarlos en el robot, se suministra con los robotsRobonova el programa de desarrollo denominado RoboBasic (v2.5).

  • 7/25/2019 Prctica+Robonova.pdf

    3/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 3

    3. La programacin de los robots Robonova mediante RoboBasic

    Para programar el Robonova se debeejecutar el programa de desarrolloRobotBasic mediante el accesodisponible en el escritorio.

    La ventana principal del programaRobotBasic que aparece en pantalla1 esla que se muestra en la Figura de laderecha. En la zona de la derecha semostrarn los programas fuentesmientras que a la izquierda se tiene unexplorador y un visualizador de ficheros.Los programas RoboBasic tiene laextensin bas.

    Al arrancar el programa se abre un programa vaco (Untitled1-bas). Cerrar este programa yabrir el programa Blank.bas.que se suministrar en la prctica. El cdigo de este programa esel 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

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

    DIRG6A, 1, 0, 0, 1, 0, 0DIRG6B, 1, 1, 1, 1, 1, 1DIRG6C, 0, 0, 0, 0, 0, 0DIRG6D, 0, 1, 1, 0, 1, 0

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

    GETMOTORSETG6A, 1, 1, 1, 1, 1, 0GETMOTORSETG6B

    , 1, 1, 1, 0, 0, 0GETMOTORSETG6C, 1, 1, 1, 0, 0, 0GETMOTORSETG6D, 1, 1, 1, 1, 1, 0

    SPEED 5

    '== motor power on =============================

    MOTORG24

    GOSUB s t andar d_pose

    '================================================

    'Main procedure

    MAI N:

    '''''''YOUR CODE HERE''''''''''

    '================================================

    '================================================

    st andar d_pose:

    MOVEG6A, 100, 76, 145, 93, 100, 100MOVEG6D, 100, 76, 145, 93, 100, 100MOVEG6B, 100, 30, 80, 100, 100, 100MOVEG6C, 100, 30, 80, 100, 100, 100WAIT

    RETURN

    '================================================

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

  • 7/25/2019 Prctica+Robonova.pdf

    4/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 4

    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.

    DIRG6A, 1, 0, 0, 1, 0, 0DIRG6B, 1, 1, 1, 1, 1, 1DIRG6C, 0, 0, 0, 0, 0, 0DIRG6D, 0, 1, 1, 0, 1, 0

    Las instrucciones DIR fijan el sentido de rotacin de los servos. Los servos se referencian porgrupos en las instrucciones, de forma que el grupo G6A incluye los servos desde el 0 al 5, elgrupo G6B se compone de los servos desde el 6 al 11, etctera. El 1 significa sentido deizquierda a derecha (sentido de las agujas del reloj) mientras que el 0 significa el sentidocontrario. Por ejemplo, en la primera instruccin se fijan los servos n 0 y 3 a rotacin normalmientras 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 unapersona que agarre el robot.

    NUNCA SE DEBE USAR UNA VELOCIDAD MAYOR QUE 10

    MOTORG24

    Con esta instruccin se indica que se va a trabajar con los servos del 0 al 23, activando estosservos (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 simpleque activar de forma individual slo los servos que se usan, lo que se hara con 16instrucciones de la siguiente forma:

    MOTOR0

    MOTOR1

    MOTOR2

    ...

    MOTOR22

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

    GOSUB st andar d_pose

    GOSUB sirve para realizar un salto a una subrituna de la que se volver con la instruccinRETURN. En concreto, la subrutina st andar d_pose lleva el robot a una posicin estndar(posicin de firmes).

    st andar d_pose:

    MOVEG6A, 100, 76, 145, 93, 100, 100MOVEG6D, 100, 76, 145, 93, 100, 100MOVEG6B, 100, 30, 80, 100, 100, 100MOVEG6C, 100, 30, 80, 100, 100, 100WAIT

    RETURN

    La instruccin MOVE mueve los servos a un cierto ngulo. De nuevo se usan grupos parareferenciar 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 posicinfinal. 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.

  • 7/25/2019 Prctica+Robonova.pdf

    5/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 5

    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 delrobot de forma que se aprenda el uso del sistema RoboBasic, incluyendo las etapas deintroduccin de un programa, compilacin, edicin de errores, carga del programa en el robot yejecucin del mismo.

    Primero introduce en el programa la siguiente lnea instruccin:

    MAI N:

    '''''''YOUR CODE HERE''''''''''

    out 52, 1

    '================================================

    Nota que las palabras reservadas reconocidas por RoboBasic se muestran automticamenteen 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 amaysculas al terminar la instruccin. Ahora teclea el siguiente programa tal como aparece enel guin.

    MAI N:

    '''''''YOUR CODE HERE''''''''''

    OUT 52, 1DELAY 500OUT 52, 0DELAY 500

    GOTOMAIN

    '================================================

    El programa se puede compilar con el botn Make Object Codeo la opcin correspondientedel menCompile 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 compilade nuevo hasta que no se detecten errores. Este programa modifica la salida digital del puerto52 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 directoriopersonal.

    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 botnDownload(o la teclaF6o la opcin correspondiente del men Compile).

    EL ROBOT SE VA A MOVER A LA POSICIN ESTNDAR ALENCENDERSE, 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(latecla F9o la opcin correspondiente del men Compile).

    Nada ms se carga un programa en el robot, empieza a ejecutarse (esto puede ser peligrosocuando el robot se mueva). Se dispone de los botones Controller Run Mode yControllerStop Mode (o las opciones correspondientes del men Controller) para ejecutar y parar el

    programa desde RoboBasic.

  • 7/25/2019 Prctica+Robonova.pdf

    6/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 6

    5. Programacin de movimientos simples del robot

    Tras la seccin anterior ya se est listo para hacer movimiento del Robonova. Se empezarmediante la una forma ms simple de realizar secuencias de movimientos en RoboBasic:mover el robot manualmente a diferentes posiciones memorizndolas y ejecutndolas. Paraello, 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 lasiguiente ventana de Control de Motores del Robonova:

    Nota: El botn Closepequeo debera ser un botn Wait

    En la figura del robot se puede observar que los servos, es decir las articulaciones, estnidentificados 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 14El valor que se muestra a la derecha de cada servo indica su posicin angular. Por ejemplo, elservo 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 checkboxmarcado, el servo est activo, por lo que no se puede mover manualmente. Cuando sedesactiva el checkboxde un servo, ste queda libre y la articulacin del robot se puede movercon las manos.

    ES MUY IMPORTANTE NO INTENTAR MOVER A MANO UN SERVOMARCADO 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.

  • 7/25/2019 Prctica+Robonova.pdf

    7/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 7

    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 YOURCODE HERE y pulsa el botn Inserten la ventana de Control de Motores del Robonova. Tieneque haberse aadido una instruccin MOVE que contiene los ngulos de los servos tal comose muestra en dicha ventana.

    Repite el proceso anterior con los brazos del robot alzados por encima de la cabeza en unaposicin prxima a la vertical (tal como en la figura anterior derecha).

    Asegurndote de nuevo de que los servos estn activos, introduce una nueva instruccinMOVE despus de la anterior.

    Con el botn Wait (hay un error en el programa ya que el botn Close pequeo debera serWait) 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 DELAY2000 tras cada movimientopara 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 realizarcon 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).

  • 7/25/2019 Prctica+Robonova.pdf

    8/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 8

    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 similarespara poder evaluarlos en condiciones de los programas que se ejecutan sobre el robot. De estaforma se pueden realizar programas ms flexibles que permitan adaptar el comportamiento delrobot 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 lossensores en los Robonovas usados en las prcticas.

    Sensor #AD portIR de proximidad (pecho) 0

    IR de proximidad (brazo izquierdo) 1IR de proximidad (brazo derecho) 2sensor tilt de inclinacin (espalda) 6

    IR LED (control remoto) 7

    El sensor tilt de inclinacin acoplado al robot es un sensor (basado en lquido capacitivo) conun rango de medidas de 120, una resolucin menor de 0.1 y un tiempo de respuesta menorde medio segundo. Como se conecta al puerto AD #6, se puede obtener su valor en unavariable de tipo BYTE (rango 0~213), o en una variable de tipo INTEGER (rango 0~855) segnse 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 TI LT SENSOR WI TH A BYTE VARI ABLE:DIM BTi l t AS BYTEBTi l t =AD(6) BTi l t var i abl e has t he dat a val ue of t he t i l t sensor The val ue can run f r om0 to 213

    Si se desea controlar con una variable de tipo INTEGER TO CONTROL THE TI LT SENSOR WI TH AN I NTEGER VARI ABLE:DIM I Ti l t AS INTEGERI Ti l t =AD(6) I Ti l t var i abl e has t he dat a val ue of t he t i l t sensor The val ue can run f r om0 to 855

  • 7/25/2019 Prctica+Robonova.pdf

    9/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 9

    EJERCICIO 1:

    Programad el robot para que mueva su hombro izquierdo (servo #6) segn la inclinacinobtenida por el sensor tiltde forma que, independientemente de cunto se incline el robot haciadelante o hacia atrs, el brazo se mantenga siempre en una posicin vertical.

    Implementadlo primero usando una variable BYTE y despus modificadlo para una variableINTEGER, 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 elbrazo 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 unarango de distancia medida de 10~80cm segn la siguiente figura. Fuera de este rango no segarantiza 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 alos puertos AD #0 (pecho), AD #1 (brazo izquierdo) y AD #2 (brazo derecho), los valores delsensor se pueden obtener en variables de tipo INTEGER, dando valores en un rangoaproximado 682~88 (nota el rango decreciente en los valores del sensor) de forma que el valor682 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 elsensor 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 encentmetros 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 nuevosejercicios 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.

  • 7/25/2019 Prctica+Robonova.pdf

    10/14

    DISA UPV ROBTICA

    Programacin 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 bitFlow 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 statementGOTO 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 portCommand 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 numbers3Only incremental4Up to 5 nesting subroutine calls

  • 7/25/2019 Prctica+Robonova.pdf

    11/14

    DISA UPV ROBTICA

    Programacin 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 numberREMARK 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 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

    = 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

  • 7/25/2019 Prctica+Robonova.pdf

    12/14

    DISA UPV ROBTICA

    Programacin de un robot humanoide - 12

    Bit pointing:

    A.3 = IN(1) Read value from port #1 and put this value in third bit of integervariable 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

    'CodeL1: 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

  • 7/25/2019 Prctica+Robonova.pdf

    13/14

    DISA UPV ROBTICA

    Programacin 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

    MOVEOperate 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

  • 7/25/2019 Prctica+Robonova.pdf

    14/14

    DISA UPV ROBTICA

    Programacin 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