Le robot parcourt un circuit d'hippodrome, il évite un premier objet en passant par sa gauche. Un deuxième objet est placé à l'opposé sur le circuit il l'évite encore en passant par la gauche.
Le code en Pygmy Forth
( primitives )
" MotorAV.fth" LOAD ( moteur avance )
" MotorAR.fth" LOAD ( moteur recule )
" MotorStop.fth" LOAD ( moteur s'arrête )
" initlf1.fth" LOAD ( capteur suiveur centre gauche )
" initlf2.fth" LOAD ( capteur suiveur centre droit )
" initlf3.fth" LOAD ( capteur suiveur droite )
" initlf4.fth" LOAD ( capteur suiveur gauche )
" TurnD.fth" LOAD ( tourne à gauche )
" TurnG.fth" LOAD ( tourne à droite )
" TurnGC.fth" LOAD ( tourne à gauche 90° dans le contournement )
" TurnDC.fth" LOAD ( tourne à droite 90° dans le contournement )
" SurfC.fth" LOAD ( capteur de surface central )
" SurfDW.fth" LOAD ( capteur de surface gauche )
Saute l'obstacle sur la ligne.
: TO> 8 FOR MOTORAV NEXT ; ( déplacement de base )
: TO3 3 FOR TO> NEXT ; ( premier genre de déplacement )
: TO5 5 FOR TO> NEXT ; ( deuxième genre de déplacement )
: CONTOURN ( -- ) ( module de contournement )
TURNGC (commence le contournement en tournant à gauche de 90° )
TO3 ( avance de 24 pas )
TURNDC ( tourne à droite de 90° )
TO5 ( avance de 40 pas )
TURNDC ( tourne à droite de 90° )
TO3 ( avance de 24 pas )
TURNGC ( tourne à droite de 90° et reprend sa ligne )
; ( fin du code de contournement )
: C ( -- ) CONTOURN ; ( C, raccourci )
: SLLF ( -- ) ( code principal )
BEGIN ( début de la boucle )
( cette partie du code correspond au code HIPPODROME )
INITLF1 INITLF2 AND 0= IF MOTORAV THEN INITLF1 0= IF TURND MOTORAV ELSE MOTORAV THEN INITLF2 0= NOT IF TURNG MOTORAV ELSE MOTORAV THEN
SURFC 0= NOT ( le capteur de surface détecte l'objet )
IF MOTORAR C ( si l'objet est detecté branchement sur le contournement )
THEN ( fin du branchement conditionnel )
AGAIN ( retour sur la boucle )
; ( fin de programme )
Le code en Pygmy Forth
( primitives )
" MotorAV.fth" LOAD ( moteur avance )
" MotorAR.fth" LOAD ( moteur recule )
" MotorStop.fth" LOAD ( moteur s'arrête )
" initlf1.fth" LOAD ( capteur suiveur centre gauche )
" initlf2.fth" LOAD ( capteur suiveur centre droit )
" initlf3.fth" LOAD ( capteur suiveur droite )
" initlf4.fth" LOAD ( capteur suiveur gauche )
" TurnD.fth" LOAD ( tourne à gauche )
" TurnG.fth" LOAD ( tourne à droite )
" TurnGC.fth" LOAD ( tourne à gauche 90° dans le contournement )
" TurnDC.fth" LOAD ( tourne à droite 90° dans le contournement )
" SurfC.fth" LOAD ( capteur de surface central )
" SurfDW.fth" LOAD ( capteur de surface gauche )
Saute l'obstacle sur la ligne.
: TO> 8 FOR MOTORAV NEXT ; ( déplacement de base )
: TO3 3 FOR TO> NEXT ; ( premier genre de déplacement )
: TO5 5 FOR TO> NEXT ; ( deuxième genre de déplacement )
: CONTOURN ( -- ) ( module de contournement )
TURNGC (commence le contournement en tournant à gauche de 90° )
TO3 ( avance de 24 pas )
TURNDC ( tourne à droite de 90° )
TO5 ( avance de 40 pas )
TURNDC ( tourne à droite de 90° )
TO3 ( avance de 24 pas )
TURNGC ( tourne à droite de 90° et reprend sa ligne )
; ( fin du code de contournement )
: C ( -- ) CONTOURN ; ( C, raccourci )
: SLLF ( -- ) ( code principal )
BEGIN ( début de la boucle )
( cette partie du code correspond au code HIPPODROME )
INITLF1 INITLF2 AND 0= IF MOTORAV THEN INITLF1 0= IF TURND MOTORAV ELSE MOTORAV THEN INITLF2 0= NOT IF TURNG MOTORAV ELSE MOTORAV THEN
SURFC 0= NOT ( le capteur de surface détecte l'objet )
IF MOTORAR C ( si l'objet est detecté branchement sur le contournement )
THEN ( fin du branchement conditionnel )
AGAIN ( retour sur la boucle )
; ( fin de programme )
Category
🤖
Technologie