Skocz do zawartości

altjordan

Użytkownicy
  • Zawartość

    18
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O altjordan

  • Ranga
    2/10
  • Urodziny 02.12.1984

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    z nienacka
  1. Panowie Admini - przecież zrobione Ciągle prowadzę badania nad tym algorytmem (jest to część mojej pracy magisterskiej). Staram się lepiej dobrać prędkości robotów, żeby szybciej pokonywały wyznaczoną trasę. Pozdrawiam i czekam na komentarze ** Dodano: 2008-06-05, 15:48 ** Zamierzam zmodyfikować program tak, żeby roboty mogły wymieniać się rolami, to znaczy żeby oba miały możliwość śledzenia linii lub drugiego robota
  2. Wygląda to dziwnie przez to, że ultradźwiękowy czujnik odległości z drugiego robota jest bardzo niedokładny przy odczytywaniu odległości z nierównych powierzchni (takich jak tył pierwszego robota). Specjalnie użyłem jeszcze papierowego 'zderzaka' żeby mu trochę ułatwić zadanie. Ale jak pisałem już wyżej, algorytm wymaga poprawienia kilku stałych, takich jak prędkość i zmiana okresu wahnięć przy szukaniu linii lub drugiego robota
  3. To teraz moja kolej żebym się pochwalił swoim "dziełem". Konkretnie jest to algorytm linefollowera i drugiego robota podążającego za nim. Roboty zbudowane są z dwóch zestawów klocków Lego Mindstorms NXT ze standardowym firmwarem język programowania: NXC http://bricxcc.sourceforge.net/nbc/ obsługa modułu Bluetooth - zmodyfikowana wersja (podana na stronie nie działa ze względu na zmianę składni polecenia TextOut) - http://daniele.benedettelli.com/BT_NXC.htm inspiracja linefollowera - http://www.mindstorms.pl/cr_m_blackline.html Taki algorytm pozwala zbadać różne typy komunikacji. Część algorytmu odpowiedzialna za podążanie za linią jest analogiczna z komunikacją domniemaną. Można sobie wyobrazić, że istnieje jeszcze jeden robot znaczący swoją trasę za pomocą linii. Odpowiada to przypadkowi, gdy robot sprawdza na przykład czy jedzie po terenie ze skoszoną trawą lub gdy odczytuje chemiczne ślady pozostawione przez inne roboty (odpowiednik feromonów, por. w Anies Hannawati Purnamadjaja, R. Andrew Russell: „Robotic Pheromones: Using Temperature Modulation in Tin Oxide Gas Sensor to Differentiate Swarm’s Behaviours”. Intelligent Robotics Research Centre, Monash University, Clayton, Australia (2006)). Część algorytmu pozwalająca drugiemu robotowi podążać za pierwszym to ilustracja komunikacji na podstawie stanu. W tym przypadku odczytywanym stanem jest tylko obecność pierwszego robota w zasięgu czujników robota podążającego. Trzeci użyty w algorytmie rodzaj komunikacji to odbywająca się przez bezprzewodowy moduł Bluetooth komunikacja formalna. Przekazywany jest konkretny komunikat o braku zakłóceń w komunikacji na podstawie stanu. Nie jest ona konieczna, ale zastąpienie jej innym typem mogłoby okazać się bardziej pracochłonne i nieefektywne. linefol-jor-v5-mst.nxc // line-follower + robot sledzacy // projekt - Jordan 3.VI.2008r // dla jednego czujnika z obsługą bluetootha (master) #include "BTlib.nxc" #define BT_CONN 1 // linia do ktorej jest podlaczony slave #define MAILBOX 0 // tył tam gdzie czujnik // silnik na porcie A - lewy // silnik na porcie C - prawy string in; bool kierunek; int ciemne = 480, predkosc = -40; unsigned long czas, timer; byte skok=400, cz1 = IN_1; /* cz1 - port do ktorego jest podpiety jest czujnik optyczny */ sub masterBTCheck(int conn){ /****************************/ string cStr; /* sprawdzenie czy */ cStr = NumToStr(conn); /* mozliwa jest komunikacja */ cStr = StrCat("na linii ",cStr); /* przez Bluetooth */ if (!BTCommCheck(conn)){ /****************************/ TextOut(0,LCD_LINE2,"Polacz z robotem",true); TextOut(0,LCD_LINE3,"podazajacym"); TextOut(0,LCD_LINE4,cStr,false); TextOut(0,LCD_LINE5,"w menu NXT",false); until(ButtonPressed(BTNCENTER, false)); Stop(true); } } /*********************** * PROGRAM GLOWNY * ***********************/ task main() { // INICJALIZACJA // masterBTCheck(BT_CONN); // czy jest komunikacja Bluetooth SetSensor(cz1, SENSOR_LIGHT); SetSensorType(cz1,SENSOR_TYPE_LIGHT_ACTIVE); string tekst,out; int czas; // NORMALNA PRACA LIDERA // byte cz2=IN_4; // czujnik swiatla dzialajacy jako lampka kontrolna - nieobowiazkowa while(true) { ClearScreen(); SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); // BTSendMessage(BT_CONN,MAILBOX,out); //wyslanie wiadomosci /****** normalna jazda do przodu ******/ tekst = StrToNum(Sensor(cz1)); TextOut(10, LCD_LINE3,"cz1="+tekst,false); /* A-lewy, C-prawy */ in = BTReceiveMessage(BT_CONN, MAILBOX, TRUE); until (in=="ok") { Off(OUT_AC); in = BTReceiveMessage(BT_CONN, MAILBOX, TRUE); } OnFwd(OUT_AC,predkosc); Wait(50); /****** szukanie linni *****/ czas=0; SetSensorType(cz2,SENSOR_TYPE_LIGHT_INACTIVE); while (Sensor(cz1) > ciemne) { if ((kierunek==false) && (Sensor(cz1) > ciemne)) { SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); Wait(1); /***************************/ SetSensorType(cz2,SENSOR_TYPE_LIGHT_INACTIVE); /* obraca robota w prawo */ OnRev(OUT_A,predkosc); /* i szuka linii */ OnFwd(OUT_C,predkosc); /***************************/ timer=0; until ( (Sensor(cz1) < ciemne) || (timer >= czas) ) {timer++; /* czyli czekaj */ }; if (Sensor(cz1) > ciemne) { kierunek = true; }; czas=czas+skok; } if ((kierunek==true) && (Sensor(cz1) > ciemne)) { SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); Wait(1); /***************************/ SetSensorType(cz2,SENSOR_TYPE_LIGHT_INACTIVE); /* obraca robota w lewo */ OnRev(OUT_C,predkosc); /* i szuka linii */ OnFwd(OUT_A,predkosc); /***************************/ timer=0; until ( (Sensor(cz1) < ciemne) || (timer >= czas) ) {timer++; /* czyli czekaj */ }; if (Sensor(cz1) > ciemne) { kierunek = false; }; czas=czas+skok; } } // skoniec while (Sensor(cz1) > ciemne) /******* linia znaleziona, jedzie dalej ***/ } // koniec glownej petli while(true) } linefol-jor-v5-slv.nxc // line-follower + robot sledzacy // projekt - Jordan 3.VI.2008r // dla jednego czujnika z obsługą bluetootha (slave) #include "BTlib.nxc" #define BT_CONN 0 // linia do ktorej jest podlaczony slave #define MAILBOX 0 // tył tam gdzie czujnik // silnik na porcie A - lewy // silnik na porcie C - prawy bool kierunek; int odl_sledzenia=40; // max odleglosc na ktora moze oddalic sie master unsigned long czas, timer; byte skok=10, cz1 = IN_1; /* cz1 - port do ktorego jest podpiety jest */ /* ultradzwiekowy czujnik odleglosci */ int predkosc() { // dynamiczne przystosowanie predkosci do odleglosci int odl = SensorUS(cz1); if (odl > odl_sledzenia) return (-45); // <- predkosc przy rozgladaniu sie else { if (odl < 8) return (0); // <- dla odleglosci < 6 zatrzymaj robota else return (odl * (-3)/2); // <- normalna predkosc sledzenia } } sub slaveBTCheck(int conn){ string cStr; cStr = NumToStr(conn); cStr = StrCat("na linni ",cStr); if (!BTCommCheck(conn)){ TextOut(0,LCD_LINE2,"Polacz z robotem",true); TextOut(0,LCD_LINE3,"prowadzacym"); TextOut(0,LCD_LINE4,cStr,false); TextOut(0,LCD_LINE5,"w menu NXT",false); until(ButtonPressed(BTNCENTER, false)); // czeka na nacisniecie srodkowego przycisku Stop(true); // konczy dzialanie programu } } /*********************** * PROGRAM GLOWNY * ***********************/ task main() { // INICJALIZACJA // slaveBTCheck(0); // czy jest komunikacja Bluetooth SetSensorLowspeed(cz1); string tekst,out; int czuj; byte cz2=IN_4; // czujnik swiatla dzialajacy jako lampka kontrolna - nieobowiazkowa // NORMALNA PRACA PODOAZAJACEGO // while(true) { ClearScreen(); SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); if (SensorUS(cz1) < odl_sledzenia) BTSendMessage(BT_CONN,MAILBOX,"ok"); //wyslanie wiadomosci // PODAZANIE ZAROBOTEM /* ---------------------- */ tekst = StrToNum(SensorUS(cz1)); TextOut(10, LCD_LINE3,"cz1="+tekst,false); /* A-lewy, C-prawy */ OnFwd(OUT_AC,predkosc()); /****** szukanie linni *****/ czas=0; while (SensorUS(cz1) > odl_sledzenia) { BTSendMessage(BT_CONN,MAILBOX,"nie_ok"); if ((kierunek==false) && (SensorUS(cz1) > odl_sledzenia)) { SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); /* mrygniecie dioda */ Wait(1); SetSensorType(cz2,SENSOR_TYPE_LIGHT_INACTIVE); /***************************/ OnRev(OUT_C,predkosc()); /* obraca robota w prawo */ OnFwd(OUT_A,predkosc()); /* i szuka mastera */ timer=0; /***************************/ until ( (SensorUS(cz1) < odl_sledzenia) || (timer >= czas) ) {timer++; }; if (SensorUS(cz1) > odl_sledzenia) { kierunek = true; }; czas=czas+skok; } if ((kierunek==true) && (SensorUS(cz1) > odl_sledzenia)) { SetSensorType(cz2,SENSOR_TYPE_LIGHT_ACTIVE); /* mrygniecie dioda */ Wait(1); SetSensorType(cz2,SENSOR_TYPE_LIGHT_INACTIVE); /***************************/ OnRev(OUT_A,predkosc()); /* obraca robota w lewo */ OnFwd(OUT_C,predkosc()); /* i szuka mastera */ timer=0; /***************************/ until ( (SensorUS(cz1) < odl_sledzenia) || (timer >= czas) ) {timer++; }; if (SensorUS(cz1) > odl_sledzenia) { kierunek = false; }; czas=czas+skok; } } // skoniec while (SensorUS(cz1) > odl_sledzenia) /******* linia znaleziona, jedzie dalej ***/ } // koniec petli while(true) } Dorzucam też wstępne algorytmy. W programie nie jest uwzględnione znalezienie końca trasy. Algorytm lidera: Algorytm robota śledzącego: Nie działa to jeszcze tak jak trzeba, przydałoby się poprawić niektóre stałe, żeby zachowywał się bardziej płynnie. Efekt jest następujący: http://pl.youtube.com/watch?v=8kV26Pf8Uf8 Kod razem z poprawioną wersja modułu BTLib zamieszczam w załączniku Lego.zip
  4. Fajny projekt, ale nazwa "Mars napada" została, moim zdaniem, dobrana dość niefortunnie. Po pierwsze silnik spalinowy marnie się sprawdzi w niskotlenowej atmosferze, po drugie na Marsie jeszcze nie ma GPS a strona projektu ( http://mars-napada.pl/ ) nie działa
  5. znalazłem prawdziwą kopalnię materiałów o robotach, niestety dla niektórych, dalej po angielsku http://www.dmoz.org/Computers/Robotics/ ** Dodano: 2008-05-20, 11:23 ** References of Multi-Agent Systems ** Dodano: 2008-06-04, 15:21 ** CiteSeerX alpha
  6. Chciałbym podzielić się swoją listą linków do darmowych ebooków Georgia Tech Mobile Robot Lab Mobile Robot Laboratory On-line Publications Boulette's Robotics page Computational Learning and Motor Control Lab James McLurkin MIT Computer Science and Artificial Intelligence Lab Jak macie jakieś podobne strony to rzućcie się linkami
  7. abxyz, dzięki za pomoc. Też mi się wydaje że tak to trzeba rozumieć
  8. Raczej o sens mi chodzi. Google nic nie wyrzucają na temat tych wyrażeń, więc wydaje mi się, że albo jest na to jakieś inne polskie słowo, albo po prostu nikt się tym nie zajmuje. Ale wołałbym się upewnić, na wypadek jakby ktoś pytał co to jest Jakby to pomogło, to wrzucam tłumaczenie reszty:
  9. Chodzi mi konkretnie o wyrażenia abstract communication i situational communication. Wrzucam cały akapit, dla lepszego zrozumienia kontekstu gdzie [6] oznacza K. Stoy "Using Situated Communication in Distributed Autonomous Mobile Robotics" Bardzo proszę o pomoc
  10. wydaje mi się że jest tu za dużo, ale masz http://www.upix.it/esc/ClassNotes/312PID.pdf ** Dodano: 2008-04-28, 00:14 ** http://search.dmoz.org/cgi-bin/search?search=pid&all=no&cs=UTF-8&cat=Science%2FMath%2FApplications%2FControl_Theory
  11. Nie znalazłem na ten temat wiele sensownego, więc sam zabrałem się za środowisko programowania: za klika dni skończę tłumaczyć drugi rozdział podręcznika do języka NXC ze strony http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_Guide.pdf czyli całą składnię. Z pojedynczymi poleceniami nie dam rady. Mam zamiar opisać tylko te ważniejsze dla mnie, czyli podstawowe komendy związane z ruchem i ogarnę co nieco obsługę bluetootha a w międzyczasie znalazłem porównanie środowisk: http://mi007.wikispaces.com/space/showimage/nxt.pdf dalej proszę o jakieś materiały ** Dodano: 2008-02-12, 18:39 ** przy okazji podrzucam materiały o automatyce http://www.itcmp.pwr.wroc.pl/~zape/dydaktyka/automatyka2W1C/ jest tam mnie więcej coś co zamierzam zrobić: http://www.itcmp.pwr.wroc.pl/~zape/dydaktyka/automatyka2W1C/Segbot%20Dance%20Movie.wmv ** Dodano: 2008-03-14, 20:18 ** dorzucam linka na temat różnych typów komunikacji http://www.sfu.ca/~pzebrows/cmpt816/index.htm ** Dodano: 2008-06-29, 10:52 ** Sprawa załatwiona, temat nieaktualny, ale linki warto zostawić
  12. Na razie mam plan żeby jeden robot śledził drugiego, coś w stylu śledzenia linii, taka zabawa w berka. Później może zajmę się przeszukiwaniem terenu. Nawet mam jakiś algorytm na to. Pozostaje tylko implementacja w programie W tej chwili najbardziej brakuje mi teorii EDIT: Teraz siedzę nad tłumaczeniem helpa do języka NXC. Jak znajdzie się chętny na takie coś to niech da znać . A może ktoś ma już gotowe tłumaczenie? ** Dodano: 2008-01-30, 19:25 ** może jeszcze ktoś coś ma?
  13. a co z tylko dwoma kołami http://pl.youtube.com/watch?v=ol9qdjFCO5E już nie mówiąc o jednym http://pl.youtube.com/watch?v=OnRV-ggJmQ4
  14. Wielkie dzięki. Zagadnienie roju robotów też ma być, ale raczej jako część opisowa. Na dzień dzisiejszy Mindstormy NXT można połączyć po 4, z jednym masterem, więc chodzi mi raczej o małe grupy Jakby ktoś jeszcze szukał na ten temat to podaje parę linków: http://www.nxtasy.org/ http://www.mindstorms.pl/nqc.html http://www.elecbrick.com/ http://www.tau.ac.il/~stoledo/lego/ http://www.fll-freak.com/nxt/nxt_index.htm http://www-clmc.usc.edu/Resources/Publications http://www.eas.asu.edu/~tsugar/exec/iserpaper.html http://people.revoledu.com/kardi/tutorial/ReinforcementLearning/index.html http://robotics.usc.edu/~maja/ To szczegółowy plan projektu przejściowego: ANALIZA METOD KOMUNIKACJI I WSPÓŁPRACY ROBOTÓW MOBILNYCH 1. Przeprowadzić analizę metod komunikacji robotów mobilnych 2. Przeanalizować algorytmy współpracy robotów mobilnych 3. Scharakteryzować zagadnienia przywódtwa i rywalizacji w grupie robotów mobilnych 4. Opracować algorytm komunikacji i współpracy pary robotów mobilnych Pozdrawiam i dalej liczę na wsparcie
  15. Witam, jestem to nowy, ale mam nadzieję, że trafiłem do odpowiednich ludzi Piszę pracę magisterską na temat "Badanie algorytmów komunikacji i współpracy robotów mobilnych". Szukam pomocy szczególnie na temat zagadnienia przywództwa w grupie dwóch i więcej robotów. Jakby ktoś znał jakieś materiały na ten temat byłbym wdzięczny Całą pracę mam zamiar zrobić na Lego Mindstorms programowanym w NXC. Komunikacja ma być najlepiej przez Bluetootha. Jak coś z tego wyjdzie to oczywiście podzielę się wynikami badań Na razie mam tylko projekt Segwaya, czyli balansującego robota, zrobiony na podstawie tej strony. Mam zamiar użyć go jako mojego robota mobilnego: Pozdrawiam
×
×
  • Utwórz nowe...