basicBra!nz - Pathfinder

wpisany przez data: 24/10/2010

24/10/2010 basicBra!nz - Pathfinder

Pathfinder - wzorowany na marsjańskim roverze robot o holonomicznym układzie jezdnym. Robot posiada napęd na 4 koła, zastosowano silniki 6V z wbudowaną redukcja. Dodatkowo w czerwonym robocie testuje enkoder :)

O konstrukcji

Dość oczywistą inspiracją przy tworzeniu tej konstrukcji był robot NASA Sojuner i Pathfinder przeznaczony do eksploracji powieszchni Marsa. Roboty dotarły na planetę w 1997 roku i wysłały ponad 550 zdjęć planety.

Moja konstrukcja jest odpowiednio uproszczona, nie nadaje się do jazdy po piachu i kamieniach a radio ma zdecydowanie mniejszy zasięg :)

Najważniejsze cechy robota:

  • Pełna holonomia, robot może pojechać w dowolnym kierunku w dowolnym momencie
  • 360o pola widzenia czujników odległości(mapy)
  • Niski pobór prądu, możliwość wyłączenia zdalnie kamery, latarki itp.
  • Komunikacja Bluetooth, RS232, Serial TTL
  • Dostępne złącza ADC, SPI, I2C, dod. serwo
  • bezprzewodowa kolorowa kamera
  • dwa wejścia przerwań INT0 i INT1
  • realizacja enkodera czujnikiem refleksyjnym

Holonomia w przypadku tego projektu została zrealizowana na zasadzie modyfikowanego synchro-drive (koła maja taką samą predkość jednak nie są ze soba połączone). Ruch serw nie jet w żaden sposób zależny, mamy możliwość dowolnego ustawienia koła w zakresie 180o. Dla wygody użytkownika są gotowe funkcje takie jak “right” czy “left” skręcające napęd o podany kat w jedna bądź druga stronę. Cala komunikacja odbywa sie przez Bluetooth co czyni robota bardzo przyjaznego w interakcji. Zastosowano specjalnie kamerę 1,2GHz by nie zakłócała linku radiowego 2,4GHz.

Kamera

Kamery przekazują obraz w standardzie MJPEG dzieki czemu nie wymagamy specjalnego oprogramowania do wyświetlania stream’u.

Komunikacja

roboty wykorzystują łącze Bluetooth, aby się z nimi połączyć wystarczy posiadać komputer z dzialającym stosem i adapterem. Należy wyszukać urządzenia i wybrać “basicBRA!NZ” lub “sentinel” do sparowania w systemie Windows wymagane jest hasło, w obu przypadkach bedize to “default”.

Parametry portu do komunikacji:

  • Baud 115200
  • 8 Bit
  • bez kontroli parzystości
  • 1 Bit stop’u
  • bez CTS/RTS

Polecenia

Aby inicjalizować połączenie musimy mieć robota w znanym nam stanie, zatem zaczynamy od wykonania poleceń:

  • reboot
  • reboot
  • init

Wszystkie polecenia musza byc terminowane znakiem /n czyli ASCII 13

Po poprawnym wykonaniu “init” robot zwróci “Hello at basicBRA!NZ.” od tego momentu możemy zacząć wydawać polecenia:

  • "dir": zmień kierunek obrotu kół
  • "reset": resetuj ustawienia serw I predokosci, zatrzymaj robota
  • "go": jedz z zadana prędkością
  • "stop": stop
  • "back": jedz do tylu
  • "ff": jedz do przodu
  • "cam": wlacz kamere
  • "ir": włącz LED
  • "left": skręć koła w lewo o zadany kąt (1-90)
  • "right": skręć koła w prawo o zadany kąt (1-90)
  • "llturn": ustaw kola jazdy po łuku w lewo (1-24)
  • "rlturn": ustaw kola jazdy po łuku w prawo (1-24)
  • "zero": resetuje serwa do pozycji jazdy
  • "scan": skanuj Sharpem otoczenie
  • "reboot": restart
  • "x": stop robot
  • "sh": przestaw serwo i odczytaj Sharp’a (30-120)
  • “speed”: ustaw predkość (1000 -> wolno, 1 -> szybko)
  • “ssize” : ustaw ilość skanów
  • “dir”: zmień kierunek jazdy bądź obrotu
  • “adcdump”: zwraca wartości ADC0-3 co 50mS do momentu wysłania nowej komendy do robota

W przypadku błędnej komendy uzyskamy odpowiedź “ERR”.

sonarView

sonarView jest programem realizującym “Remote presence”. Mamy możliwość sterowania wszystkimi zachowaniami robota.

Program pozwala na:

  • włączanie/wyłączanie kamery
  • włączanie/wyłączanie latarki
  • wizualizacje odczytów z czujnika odległości Sharp
  • obsługę jazdy emulujacej zachowanie układu Ackermana, dyferencyjnego i metody “obróć się i jedź”
  • możliwość wykonania manualnej komendy na robocie
  • wizualizacje obrazu z kamery

 

Aby ściągnąć program, kliknij menu po prawej stronie. SonarView wymaga instalacji .NET 3.0

Nie ma żadnych przeciwskazań do zastosowania innego środowiska jak Pyro, Player itp.

Podłączenie do robota

sonarView został napisany jako aplikacja .NET, jednak nie ma żadnych przeciwskazań do pisania oprogramowania np. w Pythonie lub Javie.

Przykład komunikacji w Pythonie wymaga instalacji (dla Linux’a nie potrzeba pywin32):

 

Po instalacji mozemy wykonać przykładowy kod inicjalizujący robota:

import serial
import time
 
ser = serial.Serial('com5',115200, timeout=1)  #change COM5 to actual port
#where Pathfinder is located
#creating ser object automatically opens the port
 
while 1:
    ser.write('reboot%s' % (chr(13))) #reboot robot
    ser.write('init%s' % (chr(13)))    #initialize and sync robot
    print ">>> Robot >>> %s" % (ser.readline()) #get response
    time.sleep(1)
    ser.write('reboot%s' % (chr(13)))
    time.sleep(1)

Pathfinder i swbStick

Do testowania programu można używać swbStick z odpowiednim oprogramowaniem które emuluje zachowanie Pathfinder’a.

Należy wgrać plik HEX oprogramowaniem MCS Electronics Bootloader.

Pobierz: