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.