Datoteka: Robotika 1 - LABORATORIJSKE VAJE
 

Robotika 1 - LABORATORIJSKE VAJE

Vaja št.: 1

Datum: 20.12.2001

Besedilo naloge:

         Za mobilnega šest-nogega robota ( robotsko mravljo ) zapiši program za hojo robota v Basic-u, programskem jeziku.

1.)Oglejte si gibanje robota (predvsem premikanje vseh šestih nog ) pri

     delovanju ( gibanje naprej, gibanje nazaj, levo, desno ) !

2.)>Natančno si oglejta obstoječi program: mravlja.bas in ugotovite niz 

     ukazov, ki povzroči gibanje naprej!

3.)Dodate program, ki bo omogočal gibanje nazaj, po tistem, ko je ena 

     izmed tipk zaznala dotik z okoljem ( oviro ).

4.) Dodajte program, ki bo po pritisku na levo tipko šel 5 korakov nazaj, nato

     se zasukal za 90° v desno in nadaljeval z gibanjem naprej do naslednje  

     ovire.

5.)Dodajte program, ki bo po pritisku na desno tipko šel 5 korakov nazaj,

     nato se zasukal za 90° v levo in nadaljeval z gibanjem naprej do naslednje  

     ovire.

6.) Naredite kaj kompliciranega!

'MRAVLJA.BAS

'Stamp Bug Program -modificiran za projekt iz Robotike 1 VIS 3. letnik Avtomatika

'Milford Instruments; England

'+44-1977-683665; Fax +44-1977-681465

'E-Mail- Info@Milinst.demon.co.uk

'This version for use with board bug41.pcb and4.2: March 1998

' lokacija variabel:

Symbol dotaknjeno=bit0          'zastavica, ki kaze ce je bila tipalka dotaknjena

Symbol stevec=b2       'stevec v zanki v >korak< delu programa

Symbol stevec2=b3     'stevec v zanki za druge dele programa

Symbol Center_pos=b4           'polozaj centralne noge

Symbol Right_pos=b8 'polozaj desne noge

Symbol Left_pos=b9   'polozaj leve noge

if pin0=1 then skok      'selektiraj mode za delovanje na preprogi ali na gladki povrsini

b10=165:b11=135      'preproga-mode (visji dvig nog)- jumper nataknjen

goto start

skok:

b10=157:b11=143      'gladka_povrsina-mode (manjsi dvig nog)- jumper ni montiran

start:

' Konstante

Symbol Rleg_max=185           'maksimalni odklon v smeri naprej za desni nogi

Symbol Rleg_min=130 'maksimalni odklon v smeri nazaj za desni nogi

Symbol Lleg_max=185            'maksimalni odklon v smeri naprej za levi nogi

Symbol Lleg_min=130 'maksimalni odklon v smeri nazaj za levi nogi

Symbol cleg_max=b10            'maksimalni odklon centralni nogi

Symbol cleg_min =b11            'minimalni odklon centralni nogi

Symbol pulses=20       'stevilo pulzov za vsak korak

Symbol pulses1=3       'st pulzov za nazaj

Symbol pulses2=3       'st pulzov za obrat

Symbol zakasnitev=10    'Pavza ned pulzi za vse servo-pogone v ms

Symbol center=150

 

'Lokacija pin-ov

Symbol Left_servo=5    'Levi servo na pinu 5

Symbol Center_servo=6            'Centralni servo na pinu 6

Symbol Right_servo=7   'Desni servo na pinu 7

Symbol Levo_oko=3     'Levo oko na pinu 3

Symbol Desno_oko=1   'Desno oko na pinu 1

Symbol Desna_tipalka=pin2 'Desna tipalka na pinu 2

Symbol Leva_tipalka=pin4  'Leva tipalka na pinu 4

'Inicializacija

            dirs=%11101010

            pins=%00001000        'levo oko prizgano, desno oko ugasnjeno

'Preveri, ce je leva tipalka pritisnjena, ce je izvedi servo

'set-up podprogram... uporabi samo med sestavljanjem robotske mravlje

            if leva_tipalka=0 then kalibriraj

Main:

            toggle levo_oko

            toggle desno_oko

            center_pos=cleg_min   'desna stran gor

            left_pos=Lleg_max      'pojdi naprej

            right_pos=Rleg_max   

            gosub korak

            toggle levo_oko

            toggle desno_oko

            center_pos=cleg_max  'desna stran dol

            left_pos=Lleg_min

            right_pos=Rleg_min     'pojdi naprej

            gosub korak

            goto main

tipalke: 'Del programa, kjer se testira, ce se je katera od tipalk dotaknila ovire

            if dotaknjeno=1 then preskoci

            if leva_tipalka=0 then levo

            if desna_tipalka=0 then desno

            preskoci:

            return

levo:    

                                               'Del programa, ce se je desna tipalka dotaknila ovire

            gosub nazaj     'najprej izvedi nekaj korakov nazaj

for stevec2=1 to 4       ' stevilo korakov

            center_pos=cleg_min   'desna stran gor

            left_pos=Lleg_max      'pojdi desno

            right_pos=Rleg_min    

            gosub korak

            center_pos=cleg_max  'desna stran dol

            left_pos=Lleg_min

            right_pos=Rleg_max    'pojdi desno

            gosub korak

            next

            goto main

                                   'Del programa, ce je leva tipalka se dotaknila ovire

desno: 

                                               'Del programa, ce se je desna tipalka dotaknila ovire

            gosub nazaj                   'najprej izvedi nekaj korakov nazaj

for stevec2=1 to 4       'stevilo korakov

            center_pos=cleg_min   'desna stran gor

            left_pos=Lleg_min       'pojdi levo

            right_pos=Rleg_max 

            gosub korak

            center_pos=cleg_max  'desna stran dol

            left_pos=Lleg_max

            right_pos=Rleg_min     'pojdi levo

            gosub korak

            next

            goto main

korak:                                                 'Podprogram za izvajanje samo enega koraka

            for stevec=1 to pulses              'stevilo pulzov

                        pulsout center_servo,center_pos         

                        gosub tipalke               'preveri tipalke

                        pause zakasnitev          'pavza med pulzi

            next

            for stevec=1 to pulses

                        pulsout right_servo,right_pos   

                        pulsout left_servo,left_pos                  

                        pulsout center_servo,center_pos

                        gosub tipalke               'preveri tipalke            

                        pause zakasnitev

            next

return

nazaj:                     'podprogram za hojo nazaj

            dotaknjeno=1        'postavi zastavico (ne citas tipalk!)

for stevec2=1 to 5       'stevilo korakov          

            center_pos=cleg_max  'leva stran gor

            left_pos=Lleg_max      'pojdi nazaj

            right_pos=Rleg_max   

            gosub korak

            center_pos=cleg_min   'leva stran dol

            left_pos=Lleg_min

            right_pos=Rleg_min     'pojdi nazaj

            gosub korak

                        next

                        dotaknjeno=0        'zbrisi zastavico

            return

kalibriraj:                                             'Za pomoc pri nastavitvi nog

                        pulsout right_servo,center       

                        pulsout left_servo,center

                        pause zakasnitev

                        goto kalibriraj

Avtor: Štumberger Andrej


V kolikor želite sodelovati z nami, vas vljudno vabimo, da se nam pridružite, pošljete članke, ali pa samo izrazite vaša mnenja.