ultimo aggiornamento 29 aprile 2011



 

Per programmare il RoboZak VR Module è disponibile un apposito programma denominato VRbot GUI ora nella versione 1.1.5
Una volta istallato il programma occorre connettere il PC a al robot utilizzando il cavo che normalmente si utilizza per il trasferimento dei programmi, selezionando poi la porta seriale per il collegamento, la stessa usata in RoboBASIC..    Si dovrà ora cliccare sull'icona connessione per realizzare il collegamento

Il robot risponderà con dei suoni e si porterà in posizione per attendere gli ordini.


VRbot_base
(programma di prova per Penguin)

Come prima prova ho memorizzato quattro comandi (comandi tipo SD - Speaker Dependent): canta (emette una sequenza musicale), destra (muove il braccio destro), sinistra ( muove il braccio sinistro), ciao (muove entrambe le braccia simulando un abbraccio).
Al robot sono collegato solamente i servo delle braccia.   Ecco il filmato che mostra il risultato ottenuto

homotix

PCBA

Segnalazione della pagina come argomento caldo del FORUM
nella NEWSLETTER ROBOZAK n° 67 del 22/04/2009

 

 

'======================================
' RoboPenguin - VRbot_base.bas
'======================================
' VRbot definitions and routines

DIM rr AS BYTE
DIM B AS BYTE
DIM LED_status AS BYTE
LED_status = 0
'================================================
' VRbot definitions and routines

CONST RES_ERROR = 255
CONST RES_TIMEOUT = 254
CONST RES_WAITING = 253
CONST RES_BUILTIN = 32

' VRA = protocol command/status byte
' VRA1 = first in/out argument
DIM VRA AS BYTE, VRA1 AS BYTE

' VRLED = temporary led status for blinking
' VRBLINK = blinking half-period (in ms, 0 = no blink)
DIM VRLED AS BYTE, VRBLINK AS BYTE
VRBLINK = 0 'still
VRLED = 1 'off

' main program begins at Startup label
GOTO Startup


CONST CMD_BREAK = &H62 ' abort recog or ping
CONST CMD_SLEEP = &H73 ' go to power down
CONST CMD_KNOB = &H6B ' set si knob <1>
CONST CMD_LEVEL = &H76 ' set sd level <1>
CONST CMD_LANGUAGE = &H6C ' set language <1>
CONST CMD_TIMEOUT = &H6F ' set timeout <1>
CONST CMD_RECOG_SI = &H69 ' do si recog from ws <1>
CONST CMD_RECOG_SD = &H64 ' do sd recog at group <1> (0 = trigger mixed si/sd)

CONST STS_AWAKEN = &H77 ' back from power down mode
CONST STS_ERROR = &H65 ' signal error code <1-2>
CONST STS_INVALID = &H76 ' invalid command or argument
CONST STS_TIMEOUT = &H74 ' timeout expired
CONST STS_INTERR = &H69 ' back from aborted recognition (see 'break')
CONST STS_SUCCESS = &H6F ' no errors status
CONST STS_RESULT = &H72 ' recognised sd command <1> - training similar to sd <1>
CONST STS_SIMILAR = &H73 ' recognised si <1> (in mixed si/sd) - training similar to si <1>

CONST ARG_ACK = &H20

' protocol arguments are IN the range 0x40 (-1) TO 0x60 (+31) inclusive
CONST ARG_MIN = &H40
CONST ARG_MAX = &H60
CONST ARG_ZERO = &H41
CONST ARG_ONE = &H42


' ===== VR routines
' Inputs:
' NONE
VR_Wakeup:
VRA = CMD_BREAK
ETX 9600, VRA
VR_Wakeup1:
ERX 9600, VRA, VR_Wakeup1
IF VRA <> STS_SUCCESS THEN GOTO VR_Wakeup
RETURN

' Inputs:
' VRA1 = timeout (in ms, 0=forever, 255=default)
VR_SetTimeout:
VRA = CMD_TIMEOUT
ETX 9600, VRA
VRA1 = VRA1 + ARG_ZERO
ETX 9600, VRA1
VR_SetTimeout1:
ERX 9600, VRA, VR_SetTimeout1
'IF VRA <> STS_SUCCESS THEN GOTO VR_Wakeup
RETURN

' Inputs:
' VRA1 = language index (0 = english, ...)
VR_SetLanguage:
VRA = CMD_LANGUAGE
ETX 9600, VRA
VRA1 = VRA1 + ARG_ZERO
ETX 9600, VRA1
VR_SetLanguage1:
ERX 9600, VRA, VR_SetLanguage1
'IF VRA <> STS_SUCCESS THEN GOTO VR_Wakeup
RETURN

' Inputs:
' VRA1 = sd strictness level (1=easy ... 5=hard)
VR_SetLevel:
VRA = CMD_LEVEL
ETX 9600, VRA
'VRA1 = VRA1 + ARG_ZERO
VRA1=1
ETX 9600, VRA1
VR_SetLevel1:
ERX 9600, VRA, VR_SetLevel1
'IF VRA <> STS_SUCCESS THEN GOTO VR_Wakeup
RETURN

' Inputs:
' VRA1 = si confidence knob (2=typical, 0=loosest ... 4=tightest)
VR_SetKnob:
VRA = CMD_KNOB
ETX 9600, VRA
'VRA1 = VRA1 + ARG_ZERO
VRA1=0
ETX 9600, VRA1
VR_SetKnob1:
ERX 9600, VRA, VR_SetKnob1
'IF VRA <> STS_SUCCESS THEN GOTO VR_Wakeup
RETURN

' Inputs:
' VRA1 = wordset (0=trigger)
' Ouputs:
' VRA1 = result (0-31=word, 32..=builtin, 254=timeout, 255=error)
' for trigger N>1 are custom words
VR_RecognizeSI:
VRA = CMD_RECOG_SI
GOTO VR_Recognize0
VR_RecognizeSD:
VRA = CMD_RECOG_SD
VR_Recognize0:
ETX 9600, VRA
VRA1 = VRA1 + ARG_ZERO
ETX 9600, VRA1
VRLED = 0
VR_Recognize1:
OUT 52, VRLED
VRA1 = RES_WAITING
RETURN
VR_CheckRecognition:
IF VRBLINK <> 0 THEN
IF VRLED = 0 THEN
VRLED = 1
ELSE
VRLED = 0
ENDIF
DELAY VRBLINK
ENDIF
ERX 9600, VRA, VR_Recognize1
VRLED = 1
OUT 52, VRLED
IF VRA = STS_RESULT THEN
VRA = ARG_ACK
ETX 9600, VRA
VR_Recognize2:
ERX 9600, VRA1, VR_Recognize2
VRA1 = VRA1 - ARG_ZERO
ELSEIF VRA = STS_SIMILAR THEN
VRA = ARG_ACK
ETX 9600, VRA
VR_Recognize3:
ERX 9600, VRA1, VR_Recognize3
VRA1 = VRA1 - ARG_ZERO + RES_BUILTIN
ELSEIF VRA = STS_TIMEOUT THEN
VRA1 = RES_TIMEOUT
ELSE
VRA1 = RES_ERROR
ENDIF
RETURN

'================================================
' Main Program

Startup:


PTP SETON
PTP ALLON
'== motor diretion setting ======================
DIR G6A,1,1,1,0,0,0
DIR G6B,1,1,0,0,0,0
DIR G6C,0,0,0,0,0,0
DIR G6D,0,0,0,0,0,0
' Settaggio degli ZERO point
ZERO G6A,116,105,101,100,100,100
ZERO G6B,100,100,100,100,100,100
ZERO G6C,100,100,100,100,100,100
ZERO G6D,98,98,96,100,100,100
GETMOTORSET G6A,1,1,1,0,0,0
GETMOTORSET G6B,1,1,0,0,0,0
GETMOTORSET G6C,1,1,0,0,0,0
GETMOTORSET G6D,1,1,1,0,0,0
MOTOR G24
SPEED 10
TEMPO 230
MUSIC "CDE"
GOSUB standard_position
'================================================
DIM VRGROUP AS BYTE
DIM VRCOMMAND AS BYTE

'start with trigger command group
VRGROUP = 1
VRBLINK = 0 'still

'================================================
MAIN:

'sync with VRbot
GOSUB VR_Wakeup

'start Voice Recognition in current group
VRA1 = VRGROUP
GOSUB VR_RecognizeSD

MAIN1:
'listen to VR commands
GOSUB VR_CheckRecognition
'nothing heard?
IF VRA1 = RES_WAITING THEN

'otherwise keep listening
GOTO MAIN1
ENDIF
'unexpected reply?
IF VRA1 = RES_ERROR THEN
MUSIC "AG"
'try again in the same group
GOTO MAIN
ENDIF
'timed out?
IF VRA1 = RES_TIMEOUT THEN
VRGROUP = 1 ' back to trigger
VRBLINK = 0 'still
GOTO MAIN
ENDIF
'we have a VR command!
VRCOMMAND = VRA1

'<--- implement actions based on VRGROUP and VRCOMMAND
'example:
IF VRGROUP = 0 THEN
VRGROUP = 1 ' activate command group
VRBLINK = 1 'blink
ELSE
VRGROUP = 0 ' back to trigger
VRBLINK = 0 'still
'do command
ON VRCOMMAND GOTO K1,K2,K3,K4
ENDIF
GOTO MAIN

main_exit:
IF RR > 50 THEN RETURN
RR = 0
GOTO MAIN

'================================================
k1:
GOSUB SUONO
GOTO main_exit

k2:
GOSUB PUGNO_DX
GOTO main_exit

k3:
GOSUB PUGNO_SX
GOTO main_exit

k4:
GOSUB CIAO
GOTO main_exit

' Attiva breve sequenza musicale
SUONO:
MUSIC "cdeccdec efgefg gagfecgagfec edcedc p,,"
RETURN

' Pugno destro
PUGNO_DX:
HIGHSPEED SETON
MOVE G6C,180,30,,,,
MOVE G6A,100,100,85,,,
MOVE G6D,100,100,115,,,
HIGHSPEED SETOFF
DELAY 1000
GOSUB standard_position
RETURN

' Pugno sinistro
PUGNO_SX:
HIGHSPEED SETON
MOVE G6B,180,30,,,,
MOVE G6D,100,100,85,,,
MOVE G6A,100,100,115,,,
HIGHSPEED SETOFF
DELAY 1000
GOSUB standard_position
RETURN

' GINNASTICA
CIAO:
DIM C AS BYTE
MOVE G6A,100,100,100,,,
MOVE G6B,188,10,,,,
MOVE G6C,188,10,,,,
MOVE G6D,100,100,100,,,
SPEED 10
FOR C = 1 TO 5
MOVE G6B,188,10,,,,
MOVE G6C,188,10,,,,
MOVE G6B,188,70,,,,
MOVE G6C,188,70,,,,
WAIT
NEXT C
DELAY 1000
GOSUB standard_position
RETURN

' Posizione standard
standard_position:
MOVE G6A,100,100,100,,,
MOVE G6D,100,100,100,,,
MOVE G6B,100,10,,,,
MOVE G6C,100,10,,,,
RETURN


VRbotGUI versione 1.1.5
(programma "bridge")

Schema di collegamento

Robozak_VR-module_connettore_lato-robot.jpg

Utilizzo del programma VRbotGUI

Messaggio che appare prima della connessione con il robot

Probabilmente i cavi di ETX e ERX sono invertiti
o il robot è spento

Gli 8 comandi già memorizzati nel Wordset 1

I 6 comandi già memorizzati nel Wordset 2

Gli 11 comandi già memorizzati nel Wordset 3

Se si utilizza il comando "Controller Information"
del programma roboBASIC si ottiengono questi dati


Per maggiori informazioni

Elenco revisioni
29/04/2011 Aggiornato pagina
22/07/2009 Inserito pdf presentazione in italiano, aggiornato versione programma
20/07/2009 Inserito segnalazione sito vendita e filmato
05/05/2009 Inserito segnalazione della pagina nella NEWSLETTER ROBOZAK n° 67 del 22/04/2009
20/04/2009 Emissione preliminare
Private Policy Cookie Policy