Strona Główna
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy RegulaminRegulamin  GrupyGrupy
RejestracjaRejestracja  ZalogujZaloguj




Kurs AVR-GCC

Przyszłość jest w naszych rękach...
...bo przyszłość to robotyka.





Poprzedni temat «» Następny temat
Algorytmy mapowania
Autor Wiadomość
devonport 


Posty: 10
Skąd: sky
Wysłany: 20 Lis 08 08:39   Algorytmy mapowania

Szukam jakichś prostych algorytmów mapowania, jakies proste programy poruszania się robota po szachownicy np. mała tablica 4X4 z wiadomym rozmieszczeniem przeszkód. Najbardziej interesują mnie proste przykłady kodów źródłowych na początek które mógłbym przeanalizować i pogłębić swoją wiedzę. Bo A* to narazie dla mnie zbyt trudne :-( . Jak macie coś takiego to podrzucie proszę.
Postaw piwo autorowi tego posta
 
 
McRancor


Pomógł: 5 razy
Posty: 76
Otrzymał 9 piw(a)
Skąd: ze wsi
Wysłany: 21 Lis 08 05:35   

Jeżeli chcesz zastosować to w robocie mobilnym to najpierw trzeba zdać sobie sprawę z innych problemów. Algorytm A z gwiazdką jest jednym z najprostszych. Podobne algorytmy:
- algorytm propagacji fali
- metoda gradientowa
- metoda elastycznej wstęgi
- diagram woronoja
- metody grafu widoczności
- metoda sztucznych pól potencjałowych

Kod źródłowy niewiele da bez znajomości teoretycznej zagadnienia. W załączniku moja prezentacja odnośnie algorytmu A* - powinieneś wykumać o co chodzi.

Chcesz symulować robota na komputerze czy stworzyć fizyczny model? Generalnie o ile same algorytmy nie są trudne, to implementacja w rzeczywistym otoczeniu jest moim zdaniem dobrym tematem na pracę dyplomową...

new.pdf
Prezentacja dotycząca algorytmu A* (A star, A z gwiazdką)
Pobierz Plik ściągnięto 94 raz(y) 1019,8 KB

Postaw piwo autorowi tego posta
 
 
Wyświetl szczegóły
devonport 


Posty: 10
Skąd: sky
Wysłany: 23 Lis 08 07:17   

No tak przejrzałem sieć no jets tego trochę ale ja myślę żeby zmodyfikować algorytmy szukania drogi wykorzystywane w grach, podpiąć funkcje ruchu robota pod poszczególne kroki np: lewo, prawo, przód. Narazie to tak raczej sie przyglądam a jaki będzie efekt i czy w ogóle jakiś będzie zobaczymy?
Chcę to zastosować w robocie mobilnym, o jakich problemach mianowicie wspominasz?
Może ktoś już wykorzystuje te algorytmy w swoim robocie??
Postaw piwo autorowi tego posta
 
 
McRancor


Pomógł: 5 razy
Posty: 76
Otrzymał 9 piw(a)
Skąd: ze wsi
Wysłany: 28 Lis 08 07:34   

Problem polega na konieczności lokalizacji robota w przestrzeni. Potrzebowałbyś robota który potrafi sam się zlokalizować, albo posiada czujniki umożliwiające dokładny pomiar drogi. Baaaardzo dokładny. No i znajomość sceny (robot musi mieć mapę otoczenia). Nie wiem jak chcesz rozwiązać tego typu problemy.

W grach (tych starszych typu civilization) w większości przypadków korzysta się z A*
Postaw piwo autorowi tego posta
 
 
devonport 


Posty: 10
Skąd: sky
Wysłany: 29 Lis 08 09:03   Program mapujący wersja beta

[ Dodano: 30 Lis 08 10:45 ]
devonport napisał/a:
Oto po tygodniu pracy napisałem prosty program mapujący, coś już potrafi ale brakuje np: funkcji cofnij w przypadku dotarcia w ślepy zaułek. Ważne że odczyta z tablicy drogę i potrafi się zatrzymać na punkcie końcowym. Wszystko robione na NXT, z dokładnoscią jest tak sobie ale nie oto tu tak naprawdę chodziło.
Mapa jest podzielona na kwadraty 30x30 cm mniej-więcej tyle potrzeba aby robot swobodnie wykonał manewr na danym polu. Ważne, że robot jezdzi w realnym swiecie przechodzi plansze tak jak ma zapisane w tablicy. Postaram się wrzucić niebawem jakiś filmik z testu robota.
Trzon programu wygląda tak:

Kod:
  int x;
    int i=5,j=2;// pozycja startowa robota robot powinien stac na srodku kwadratu  zawsze przodem

int tab[6][6]=   //tablica musi zawierac na krancach zera zeby robot nie wyszedl poza tablice
 {{0,0,0,0,0,0}, //i=0 nr wiersza
   {0,1,2,1,0,0}, //cyfra 2 poz i=1,j=2 oznacza pole kocowe, robot sie zatrzyma na tym polu
   {0,1,0,1,0,0},//obszar manewrowy dla robota to wlasciwie tablica 4x4
   {0,1,1,1,0,0}, // zera oznaczaja przeszkody
  {0,0,1,0,0,0},
  {0,0,0,0,0,0}};//i=5 nr wiersza, tylko przy starcie robot moze stac na pozycji-"0"
//j=0,1,2,3,4 5 nr kolumny
task main()
                //petla 30 razy jak dojdzie do "2" szybciej to i tak sie zatrzyma
for(x=0;x<30;x++) // gorzej gdy nie wyrobi sie w 30 krokach
    {
        if(tab[i-1][j]>0&&tab[i][j]!=2) {//jesli wolna droga"1" i nie jest to pole koncowe"2" wykonuje sie funkcja prosto
prosto();                  //wywolanie funkcji
 i--;}

 else{
    if(tab[i][j+1]>0 && tab[i][j-1]>0&&tab[i][j]!=2){
     if(random(100) > 50 ){
      lewo();
      j--;}
 else{ prawo();
 j++;}
}

  else{                            //ten warunek wykonuje sie gdy jest  mozliwosc w prawo
   if(tab[i][j+1]>0&&tab[i][j]!=2){ // robot najpierw czyta pozycje a dopiero skreca
   prawo();
j++;}

else{
    if(tab[i][j-1]>0&&tab[i][j]!=2){
  lewo();
  j--;
 }}}}}} 

robot jezdzi tak


i tak
[youtube] http://www.youtube.com/watch?v=UeMTvjzpzQc

[ Dodano: 19 Gru 08 05:28 ]

[ Dodano: 19 Gru 08 05:51 ]
Mały programik
To nie jest symulacja komputerowa ruchu robota a wręcz odwrotnie ten program jest produktem ubocznym programu sterującego robotem. Powstał bo nie bardzo mogłem znalezć coś w sieci, są prace teoretyczne, symulacje komputerowe(nie przydatne zbytnio do zastosowania w realu), ale kodu zródłowego jakoś nikt nie udostępnia. Ja też nie udostępnię, ma słabe strony ale można się pobawić programem.






http://wrzutnik.pl/651labirynt.exe
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  


website uptime

Powered by phpBB modified by Przemo © 2003 phpBB Group
REKLAMAPorównywarka cen elektronikiLove and Lighttaniec z gwiazdamitaniec nowoczesny Warszawakredyt przez internetneroBearShare