Najważniejsze, że ma kase na ten projekt a przynajmniej tak deklaruje i częściowo można to wydedukować z jego postów. Rosjanie wydali miliony na loty na księżyc a nigdy nie polecieli ale dzięki temu mają Bajkonur i stacje kosmiczną. Także kto czuje się na siłach sprostać wyzwaniu szalonego naukowca do dzieła! A tak na marginesie twórca Zepelina nazywany był Szalonym Baronem do czasu gdy...
Jak zmierzyć współrzędne, zlokalizowac obiekt poruszający się po płaskiej powierzchni np. człowiek wykrycie go i określenie współrzędnych(xyz) położenia. Czy czujnik ADIS16350 może znalezc tutaj zastosowanie. Może ktoś zechce podzielić się wiedzą.
Oto roboty które znalazły praktyczne zastosowanie i odniosły sukces rynkowy a przy tym proste w budowie i myślę, że większość konstruktorów wystawiających swoje roboty na tym portalu poradziła by sobie z taką konstrukcją. Jeszcze raz potwierdza się, że najważniejszy to dobry pomysł. Cóż roboty konstruują wszyscy ale zawsze wygrywają niemcy hi,hi.
Chcę napisać program który by po dojechaniu robota do przeszkody skręcał losow w lewo bądz w prawo, poprostu był nieprzewidywalny i losowy to szkielet programu w RobotC czyli faktycznie C
Kod:
for(i=0; ;i++) //petla nieskączona
{
?????? //brakuje funkcji losowej
?????? //brakuje przełącznika
while(SensorValue[sonarSensors] > 25)
{
motor[motorA] = 55; //motor A jedzie do przodu
motor[motorB] = 55; //motor B jedzie do przodu
}
motor[motorA] = 50; //sensor<25 cm wykonuje sie instrukcja skret
motor[motorB] = -50; //sensor<25 cm wykonuje sie instrukcja skret
wait1Msec(600);
Jak zastosować funkcje losową dla alternatywnej instrukcji?
Mam to zrobione w NXT-G tak:
Pętla for
funkcja losowa random
switch z dwoma altyernatywnymi wyborami
zamkniecie pętli for.
Działa perfekcyjnie
Czekam na wszelkie sugestie
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ę.
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??
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{ //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++;}
[ 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.
Twój pomysł jest kapitalny i nowatorski(jak na polskie realia), szczególnie interesująco dla mnie zapowiada się budowanie mapy trasy. Czy masz już jakieś pierwsze pomysły? Będe cię dopingował, nie odpuszczaj zbyt łatwo. Tak trzymać.