Wydział Elektryczny POLITECHNIKI WROCŁAWSKIEJ rok studiów: III rok akademicki : 2009/10 semestr zimowy |
LABORATORIUM PODSTAW ROBOTYKI |
Grzegorz Nowacki 156785
grupa: I, cz/N 17.05 |
ćwiczenie 2 Programowanie robota mobilnego Khepera. |
||
data wykonania: 20.01.2010 r. |
ocena: |
podpis: |
Celem ćwiczenia było zapoznanie się z programowaniem robota mobilnego Khepera.
Programowanie odbywało się w języku Python.
Moduł współpracy z robotem mobilnym Khepera został napisany w wersji obiektowej,
więc wszystkie instrukcje powinny być poprzedzone odpowiednią instancją (np. k.stop()). Jeżeli w opisie nie zaznaczono inaczej wszystkie argumenty instrukcji i wartości zwracane są typu całkowitoliczbowego.
Zadania do wykonania na zajęciach:
1. Narysować kwadrat sterując prędkością (set_speed oraz sleep),
2. Narysować okrąg,
3. Narysować kwadrat używając liczników (set_poscounter, set_pos),
4. Narysować kwadrat bez zaokrąglonych narożników,
5. Narysować okrąg używając liczników (conf_speed_profile),
6. Narysować ósemkę,
7. Napisać program zatrzymujący robota przed przeszkodą (read_proximity).
Ad.1
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_speed(4,4)
k.sleep(2.5)
k.stop()
k.set_speed(0,4)
k.sleep(2.5)
k.stop()
k.set_speed(4,4)
k.sleep(2.5)
k.stop()
k.set_speed(0,4)
k.sleep(2.5)
k.stop()
k.set_speed(4,4)
k.sleep(2.5)
k.stop()
k.set_speed(0,4)
k.sleep(2.5)
k.stop()
k.set_speed(4,4)
k.sleep(2.5)
k.stop()
k.set_speed(0,4)
k.sleep(2.5)
k.stop()
print "Koniec"
go(fun)
Ad.2
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_speed(4,7)
k.sleep(20)
k.stop()
print "Koniec"
go(fun)
Ad.3
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_poscounter(0,0)
k.set_pos(1000,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(0,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(1000,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(0,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(1000,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(0,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(1000,1000)
k.complete()
k.set_poscounter(0,0)
k.set_pos(0,1000)
k.complete()
print "Koniec"
go(fun)
Ad.4
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_speed(4,4)
k.sleep(3)
k.stop()
k.set_speed(-4,4)
k.sleep(1.3)
k.stop()
k.set_speed(4,4)
k.sleep(3)
k.stop()
k.set_speed(-4,4)
k.sleep(1.3)
k.stop()
k.set_speed(4,4)
k.sleep(3)
k.stop()
k.set_speed(-4,4)
k.sleep(1.3)
k.stop()
k.set_speed(4,4)
k.sleep(3)
k.stop()
k.set_speed(-4,4)
k.sleep(1.3)
k.stop()
print "Koniec"
go(fun)
Ad.5
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_poscounter(0,0)
k.set_pos(4000,0)
k.conf_speed_profile(15,15,1,1)
k.complete()
k.stop()
print "Koniec"
go(fun)
Ad.6
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
k.set_poscounter(0,0)
k.set_pos(4000,0)
k.conf_speed_profile(15,15,1,1)
k.complete()
k.stop()
k.set_poscounter(0,0)
k.set_pos(0,4000)
k.conf_speed_profile(15,15,1,1)
k.complete()
k.stop()
print "Koniec"
go(fun)
Ad.7
#!/usr/bin/python
# -*0 coding: latin2 -*-
from khepera import *
def fun(k):
x=k.read_proximity()
k.sleep(4)
print x
while x[3]<50:
k.set_speed(4,4)
k.sleep(0.1)
x=k.read_proximity()
print x
k.stop()
print "Koniec"
go(fun)
Wnioski:
Robot Khepera jest bardzo delikatną konstrukcją. Należy zwracać szczególną uwagę na to aby robot podczas przebiegu ćwiczenia nie wypadł poza wyznaczony obszar. Jak również należy zwracać uwagę na przewód łączący. Przewód nie powinien być za bardzo skręcony podczas wykonywania ćwiczenia, ani nie powinno się za niego podnosić robota.