GvR (Guido von Robot) to niewątpliwie kolejna alternatywa programowania przy pomocy żółwia analogicznie jak w języku
LOGO. Istnieje jednak banalna różnica, która polega na zawężeniu zastosowania
GvR do pisania algorytmu dla prostego robota wykorzystując składnie języka
Python. Autor zminimalizował ilość zdefiniowanych funkcji, instrukcji oraz logikę do programowania robota. W założeniach programu jest edukacja dzieci i młodzieży - jako wstęp do podstaw programowania banalnych robotów.
O ile chcecie pobawić się w projektowanie algorytmu działania prostego robota oraz podejrzeć działanie algorytmu na własnym torze przeszkód to jest
zabawka dla was.
Do dyspozycji jest pięć prymitywnych instrukcji:
1. move
2. turnleft
3. pickbeeper
4. putbeeper
5. turnoff
Dodatkowo możliwe jest używanie osiemnastu przygotowanych poniższych instrukcji specjalnych:
1. front_is_clear
2. front_is_blocked
3. left_is_clear
4. left_is_blocked
5. right_is_clear
6. right_is_blocked
7. next_to_a_beeper
8. not_next_to_a_beeper
9. any_beepers_in_beeper_bag
10. no_beepers_in_beeper_bag
11. facing_north
12. not_facing_north
13. facing_south
14. not_facing_south
15. facing_east
16. not_facing_east
17. facing_west
18. not_facing_west
Powyższe instrukcje podzielić można na kilka grup:
1. testujące obecność ściany wall
2. testujące obecność znacznika beeper,
3. testujące kierunk położenia (funkcje kompasu)
Możliwe jest wykorzystanie następujących instrukcji warunkowych:
if test:
instrukcje
if test:
instrukcje
else:
instrukcje
if test:
instrukcje
elif test:
instrukcje
...
elif test:
instrukcje
else:
instrukcje
oraz poniższych pętli:
do dodatnia_liczba:
instrukcje
while test:
instrukcje
Co najważniejsze możliwe jest tworzenie własnych funkcji, których nazwy zawerają wyłącznie ltery i podkreślnik:
define nowa_nazwa_funkcji:
instrukcje
Całość oparta jest o dwa edytory tekstowe, w których definiujemy świat dla robota oraz piszemy algorytm jego działania. Interfejs graficzny jest maksymalnie uproszczony i pozwala na podglądanie w pracy krokowej oraz ciągłej działania stworzonego robota w uprzednio zdefiniowanym świecie. Dla wygody istnieje możliwość narysowania swojego świata w trybie graficznym. Chcąc zacząć zabawę musimy zainstalować sobie aplikację GvR np:
sudo apt-get install gvr
Oto przykładowy kod mojego świata oraz algorytm działania prymitywnego robota:
Kod świata:
Robot 4 3 N 0
Beepers 4 7 1
Beepers 4 2 2
Beepers 4 4 3
Beepers 7 2 4
Beepers 2 2 5
Beepers 7 2 6
Wall 2 6 N
Wall 2 4 N
Wall 5 4 N
Wall 5 4 W
Wall 10 4 W
Wall 4 10 W
Wall 4 10 S
Wall 5 10 S
Wall 7 9 S
Wall 7 9 W
Wall 8 8 W
Wall 6 10 S
Wall 5 8 S
Wall 8 1 W
Wall 9 2 W
Wall 8 3 W
Wall 6 4 N
Wall 6 3 N
Wall 8 2 N
Wall 8 4 N
Wall 8 4 S
Wall 8 5 S
Wall 8 2 S
Wall 9 4 S
Wall 1 2 S
Wall 4 2 S
wall 3 10 N
wall 2 10 N
wall 1 10 N
wall 8 6 N
wall 8 7 N
wall 9 7 E
wall 9 8 N
wall 8 9 E
wall 8 9 N
wall 7 10 E
wall 6 10 E
wall 7 10 N
wall 9 8 E
wall 10 6 N
wall 11 6 N
wall 11 6 E
wall 11 5 N
wall 10 5 E
wall 10 5 N
wall 11 5 E
wall 11 4 E
wall 11 3 E
wall 11 2 N
wall 10 3 N
wall 10 1 N
wall 10 1 E
wall 11 2 E
wall 11 1 E
wall 5 6 E
wall 6 5 N
wall 2 8 E
wall 2 7 N
wall 1 10 E
wall 2 10 E
Kod działania robota:
define turn_unblocked:
if front_is_blocked:
while front_is_blocked:
turnleft
define turn_from_while:
if front_is_clear:
if next_to_a_beeper:
turnleft
do 1000:
turn_from_while
if next_to_a_beeper:
pickbeeper
if front_is_blocked:
turn_unblocked
else:
move
if front_is_blocked:
turn_unblocked
else:
if any_beepers_in_beeper_bag:
putbeeper
move
move
turnoff
Tak wygląda zainstalowana i działająca aplikacja
GvR:

Linki:
http://gvr.sourceforge.net/about.php
http://rur-ple.sourceforge.net/en/rur.htm
http://gvr.sourceforge.net/lessons/rfrank/
http://pyrorobotics.org/?page=Robot_20Simulators
http://en.wikipedia.org/wiki/Karel_the_robot
http://en.wikipedia.org/wiki/Robotics
http://www.nebomusic.net/computerhelp.html
http://bricxcc.sourceforge.net/nbc/
http://mindstorms.lego.com/Overview/NXTreme.aspx
http://www.youtube.com/watch?v=uLomAePdPII&NR=1
http://www.eres.alpha.pl/elektronika/articles.php?cat_id=12