Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Program dla robota

thomas_191 24 Nov 2007 22:18 11047 37
IGE-XAO
  • #1
    thomas_191
    Level 11  
    Witma
    Przymierzam sie do pisania mgr... chcialbym zrobić robota(maszyne kroczącą 4-nożną)... Chce ją zrobić na ARM-ach... Jestem w posiadaniu materiałów dotyczących tego mikrokontrolera(m.in kursy Ep orazdokumentacja no i oczywiscie materialy z netu) lecz poszukuje przykładowych gotowych programów dla robotów??? Najlepiej w C++. Jeżeli ktoś miałby i mógłby udostępnić jakiś przykładowy program lub link to będę wdzięczny...
    Jedyną konkretną stronkę którą udło mi sie znaleść to

    http://www.lynxmotion.com/ViewPage.aspx?ContentCode=Home

    Robot ten ma ogłlnie chodzić i omijać przeszkody. Myślałem jeszcze o zamontowaniu kamerki ale słyszałem że ciężko jest to zrobić na ARM-ach?

    Jeszcze raz proszę o przykładowe programy

    Pozdrawiam[/code]
  • IGE-XAO
  • #2
    bogdan_p
    Level 39  
    raczej nie znajdziesz całego gotowego programu , bardzo ogólnie cały program to zbiór kilku podprogramów odpowiedzialnych za poszczególne funkcje danego bloku w każdym robocie masz przynajmniej dwa takie bloki
    - napędowy
    - wejściowy ( czujniki )
    tak więc najpierw muszą prawidłowo być sterowane , obsługiwane te bloki aby można było tworzyć stosowny algorytm pracy całego robota
    zawsze pracę zaczyna się od części mechanicznej potem układy wej/wyj a na końcu program sterujący , masz literaturę o danym uC ale czy masz doświadczenie w pisaniu programów na ten uC bo teoria to nie wszystko bez praktycznego doświadczenia w programowaniu będziesz miał problemy i nie ma znaczenia rodzaj mikrokontrolera
    przy Twoich założeniach układ może być napędzany 2 - 4 serwami do tego czujniki ultradźwiękowe lub na podczerwień , powinieneś zacząć od zapoznania się z zasadami pracy i sterowania tego typu urządzeń , spróbować napisać programy sterujące i zobaczyć jak ma się teoria do praktyki
  • #3
    thomas_191
    Level 11  
    no właśnie tu jest problem ze nie posiadam za dużego doświadczenia(JESTEM POCZąTKUJąCY W TEJ DZIEDZINIE) ale lobię stawiać sobie w życiu wyzwania :) całe życie się kształcimy ...co do napędu to myślałem o 3 serwach wtedy ruch nogi będzie zbliżony do rzeczywistości w tym tygodniu planuje już zakupić serwa... myślałem też o sterowaniu go przez bluetooth przez tel ale jeszcze nie opracowałem szczegółów... poszukuje przykładowych programów (podprogramów)(np sterowanie napędem robota) wiec jakby ktoś miał teki to proszę o przesłanie (np na e-mail'a)...
    Pozdrawiam i czekam na pomoc
  • IGE-XAO
  • #4
    bogdan_p
    Level 39  
    nie będę namawiał Cię do zmiany uC to Twój wybór , ale znacznie więcej znajdziesz gotowych rozwiązań na AVR , MSC 51 czy PIC
    co do Twojego pomysłu z zdalnym sterowaniem to możesz przykładowo wykorzystać gotowy moduł
    sterownika serw do tego moduł komunikacyjny i masz zdalnie sterowany pojazd , proponuje zajrzyj na forum robotyka zapoznaj sie z podstawowymi elementami konstrukcyjnymi takich rozwiązań jak również nad rozwiązaniami układów elektronicznych stosowanych w robotach i tak jak wspomniałem wcześniej zacznij od mechaniki elektronikę zawsze dopasujesz odwrotnie jest znacznie trudniej
  • #6
    thomas_191
    Level 11  
    ok dzieki za pomoc
    sorki ze tak poxno ale troszkę zajęć na uczelni
    Zdaje sobie sprawe ze projektowanie taich mikorkontrolerow jak pic avr itp jest prostsze niz Arm'ow ale mysle ze Arm maja szerszy zakres zastosowania .... juz wybralem mikrokontroler ARM Cortex-M3 chodź myslalem tez o ARM7TDMI-S... a Wy jak sadzicie??
    Co do http://www.nordelektronikplus.pl/oferta_det.asp?show=0&g=31&pg=0&sg=1&id=239&los=0,3656702
    to mam pytanko czy nie ma jakiegos "zamiennika" tylko tańszego:) ???
  • #7
    Halftheman
    Level 16  
    Wrzuce swoje 3 grosze.

    Maszyna krocząca 4 nożna o 3ch stopniach swobody na noge. W sumie 12 serw. Do tego potrzebujesz 12 PWM, które sam będziesz musiał wygenerować. Najlepsi np lynxmotion robia to na atmega8 + chyba transmisja po rs232? tak? (nie wglebialem sie az tak bardzo ;) ).

    Do tego, żeby to miało sens musisz wyliczyc równania do kinematyki prostej i odwrotnej. Nastepnię zrobić jakąś symulacje tego, żeby sprawdzić czy taki model ma sens. Następnie zrobić wstępny projekt jednej nogi, którą obciążysz hipotetyczną wagą robota, tylko po to, żeby wybrać odpowiednie serwa. (Generalnie można to wszystko wyliczyć jak się ma pojęcie o mechanice). Jest to istotne, bo na ogół serwa są za słabe, żeby w ogóle podnieść takiego robota (tutaj przewage mają maszyny 6cio nożne!).

    Teraz po co ARM? Jak będzie to robot autonomiczny to ma to troche sens, bo wyliczanie trajektorii kończyń będzie trzeba wyliczyć. Można to robić łopatologicznie zadając pozycje dla każdego serwa jednak jest to troche banalne imho.

    Na przesyłaniu obrazu sie nie znam, generalnie jednak będzie do tego potrzebował jakiegos uC Linuxa, albo FreeRTOS'a. Próbowałem się w to bawić jednak nie jest to zbyt proste niestety więc projekt porzuciłem. ARM odpoczywa ;).

    Niemniej jednak, z tego co wiem BT jest za słabe do przesyłania obrazu (nigdy nie spotkałem się z takim projektem), więc będziesz potrzebował WIFI, a żeby mieć WIFI to na ARMie musisz zrobic stos TCP/IP, a to już takie banalne nie jest (bynajmniej dla mnie ;) ).

    Generalnie w skrócie jak chcesz kamerkę to powinieneś pomyśleć o czymś co pociągnie LINUXa. Jest to najprostsze rozwiązanie.

    Aha no i logika w ARMach jest 3.3V, a to może być za słabe, żeby bezpośrednio podawać sygnał na serwo tj ma to miejsce w AVR, PIC etc. Wtedy trzeba dorzucić jakieś buforki np z serii 74xxx244.

    thomas_191 wrote:

    Co do http://www.nordelektronikplus.pl/oferta_det.asp?show=0&g=31&pg=0&sg=1&id=239&los=0,3656702
    to mam pytanko czy nie ma jakiegos "zamiennika" tylko tańszego:) ???


    Jest zamiennik. Zrobisz go sobie sam jak przeczytasz dokumentacje Atmegi8 i MAX232.

    Ten schemat jest prosty jak... wiadomo co.

    Atmega8 + MAX 232 z kondensatorami, złącze RS232, stabilizator 7805, jedna wtyczna, jeden kwarc prwo 8Mhz. Ten jeden mały układzik koło przycisku nie wiem po co ;)

    Za elementy zapłacisz max 20zł + wytrawić płytke i masz satysfakcje z wlasnego projektu!!

    Banalne prawda? :D

    I to chyba tyle na razie ;) Jak gdzieś się pomyliłem prosze o sprostowanie. Pozdrawiam.
  • #8
    thomas_191
    Level 11  
    Witam
    Halftheman dzieki za wskazówki napewno sie przydadzą ale oczywiscie mam kilka pytań..
    Quote:
    Do tego, żeby to miało sens musisz wyliczyc równania do kinematyki prostej i odwrotnej.

    a jak moglbys podać wiecej szczegolów bo szczerze to z mechaniki nie jestem za dobry(niestety)....
    Quote:
    Teraz po co ARM?

    moj promotor raczej sie upiera aby to byly ARM'y wiec sie nie kluce :D
    Quote:
    Ten schemat jest prosty jak... wiadomo co.

    a mozna jakis schemacik:) rzucić... i jak mozesz zrobić jasies zdjęcie jak to w rzeczywistości wygląda ???
    z gory dzieki

    Dodano po 2 [minuty]:

    a mam jeszcze pytanie czy ktos zna sie na przesyłaniu obrazu ??? wiem ze to nie jest za latwe ale moze kilka wskazówek (chetnieby się przydało w miare proste wyjasnienie)
    ?????
  • #9
    jaqbw
    Level 13  
    skoro już mają być ARM'y to wybierz Cortex M3 są tańsze i imho lepsze (obsługa przerwań) od ARM7TDMI (ale np. STR710FR2 można dostać dość tanio - jako próbki :-)
  • #10
    Halftheman
    Level 16  
    thomas_191 wrote:

    a mozna jakis schemacik:) rzucić... i jak mozesz zrobić jasies zdjęcie jak to w rzeczywistości wygląda ???
    z gory dzieki


    Niedługo powinno pojawić się coś na forum ;) Niestety prace nad takimi projektami idą wolno :|

    jaqbw wrote:
    skoro już mają być ARM'y to wybierz Cortex M3 są tańsze i imho lepsze (obsługa przerwań) od ARM7TDMI (ale np. STR710FR2 można dostać dość tanio - jako próbki :-)


    Tzn dlaczego ta obsługa przerwań jest lepsza w M3? Nie miałem z nimi do czynienia ale z checia sie dowiem :D
  • #11
    jaqbw
    Level 13  
    "kontroler przerwań" nazywa się NVIC, ma coś takiego jak tail-chain przydatne gdy dwa przerwania przychodzą blisko siebie.

    Thumb2 - lepszy DMIPS/MHz i DMIPS/mW

    architektura harvard

    sprzętowe mnożenie i dzielenie

    dla procesorów ST teoretycznie pozwala na prace z prędkością 2x większą niż pamięć flash (u innych producentów pewnie też)

    dodatkowo u ST (u innych producentów to nie musi się sprawdzi)
    - możliwość pracy z dowolną prędkością gdy korzystamy z USB
    - dedykowany timer SysTick dla systemu operacyjnego (np.: freeRTOS)
    - specjalny obszar pamięci do którego jest dostęp bitowy - upraszcza ustawianie kasowanie bitów (jest atomowe)

    jest też kilka innych usprawnień, wg. ludzi z ST Cortex'y mają w dłuższej perspektywie zastąpić ARM7

    trochę w tym marketingu, ale akurat bylem na warsztatach z Corex'ów sponsorowany przez ST :-) a jak porównałem to co może STR710, a STM32 (odpowiednio 7TDMI i Cortex), to nie ma porównania
  • #12
    farmazon3000
    Level 15  
    thomas_191 wrote:
    Witam
    Halftheman dzieki za wskazówki napewno sie przydadzą ale oczywiscie mam kilka pytań..
    Quote:
    Do tego, żeby to miało sens musisz wyliczyc równania do kinematyki prostej i odwrotnej.

    a jak moglbys podać wiecej szczegolów bo szczerze to z mechaniki nie jestem za dobry(niestety)....
    Quote:
    Teraz po co ARM?

    moj promotor raczej sie upiera aby to byly ARM'y wiec sie nie kluce :D
    Quote:
    Ten schemat jest prosty jak... wiadomo co.

    a mozna jakis schemacik:) rzucić... i jak mozesz zrobić jasies zdjęcie jak to w rzeczywistości wygląda ???
    z gory dzieki

    Dodano po 2 [minuty]:

    a mam jeszcze pytanie czy ktos zna sie na przesyłaniu obrazu ??? wiem ze to nie jest za latwe ale moze kilka wskazówek (chetnieby się przydało w miare proste wyjasnienie)
    ?????



    piszesz prace mgr a nie wiesz co to jest kinematyka prosta i odwrotna? to co ty jestes z wydziału chemii?
  • #13
    Halftheman
    Level 16  
    jaqbw wrote:

    trochę w tym marketingu, ale akurat bylem na warsztatach z Corex'ów sponsorowany przez ST :-) a jak porównałem to co może STR710, a STM32 (odpowiednio 7TDMI i Cortex), to nie ma porównania


    Jak sie dostac na takie warsztaty? :D (moze jest jakis sposob). I skoro jestes tak obcykany w ARMach to moze, wiesz skad czerpać źródło dot ARMów (fora? cokolwiek), bo póki co to tylko dokumentacja techniczna mi została :( (nie ukrywajmy jest średnia dla NXP :/ )
  • #14
    jaqbw
    Level 13  
    Halftheman wrote:

    Jak sie dostac na takie warsztaty? :D (moze jest jakis sposob). I skoro jestes tak obcykany w ARMach to moze, wiesz skad czerpać źródło dot ARMów (fora? cokolwiek), bo póki co to tylko dokumentacja techniczna mi została :( (nie ukrywajmy jest średnia dla NXP :/ )

    dostać się jest łatwo, wystarczy pracować w firmie której pracownikom zaproponują na takie warsztaty :-)
    wiedzę czerpię z google, elektroda.pl :-), dokumentacji i znajomych którzy od kilku lat programują nie tylko ARM'y, albo chcą obronić dyplom na ARM'ach do końca roku :-)
    btw. polecają Atmel'e AT91SAM7S (to nie Cotrex, a 7TDMI), tylko problem jest z zegarem, bo procek zamiast 60 (czy tam nawet 72) chodzi na 48 MHz ... bo USB. dokumentacja (podobno) tak dobra jak do AVR'ów. Otwierasz pdf'a i zaczynasz programować.
  • #15
    Halftheman
    Level 16  
    Ja akurat mam LPC2148 i dokumentacja jest średnia, a zmieniać teraz na Atmela średnio mi sie uśmiecha :( Do firmy raczej sie nie dostane teraz za szybko :) Trzeba coś pomyśleć..
  • #16
    Michlis
    Level 11  
    farmazon3000 wrote:
    piszesz prace mgr a nie wiesz co to jest kinematyka prosta i odwrotna? to co ty jestes z wydziału chemii?

    Podstawy robotyki zawsze się przydadzą, ale w tym przypadku chyba nie jest konieczne rozwiązywane problemu odwrotnego kinematyki. Może wystarczy znaleźć wartości serw tylko dla kilku pozycji nogi (góra/dół, przód/tył) a niekoniecznie równania na dowolną pozycję?

    Co do sterowania serwami polecam SSC-32 http://www.lynxmotion.com/Product.aspx?productID=395&CategoryID=52
    Dosyć drogi, ale obsługuje do 32 kanałów i można się wygodnie komunikować po RS. Już niedługo będę korzystał z tego układu do sterowania hexapodem.
  • #17
    Halftheman
    Level 16  
    Przecież SSC-32 można zrobić samemu. Może nie 32, ale 16 lekko. Przy większym wysiłku można więcej wyciągnąć :)
  • #18
    thomas_191
    Level 11  
    Witam
    dzieki wszystkim za odpowiedzi i jak mielibyście jeszcze jakies pomysly to piszcie.... no może poza tekstami
    Quote:
    piszesz prace mgr a nie wiesz co to jest kinematyka prosta i odwrotna? to co ty jestes z wydziału chemii?
    Pana farmazon3000 każdy ma jakieś problemy lub czegoś nie rozumie. Podobno całe życie sie uczymy. A co do kinematyka prostej i odwrotnej to wiem co to jest i do czego sie stosuje. Juz doczytalem:), może zamiast uwag napisałbyś cos pożytecznego?????.....
    wracając do robota to praca idzie powoli do przodu (części już zakupione ) lecz moj promotar wymaga aby przed realizacja fizyczną stworzy symujacje przy pomocy pythona cos na wzór
    http://ka1943.pe.kr/ka1943_lib.html (można pobrać i zobaczyć filmik)oczywiście z wykorzystaniem bibliotek (np.ode lub innych) i tu mam problem bo nigdy nic takiego nie pisałem. Powiem wiecej nigdy nie mialem doczynienia z pythonem no ale trzeba sie w życiu rozwijać :D... wiec mam pytanie czy ktoś robił taką symulację i mógłby ją udostępnić (jakiś przykładowy kod)....?????
    A co do ARM to w elektronice praktycznej ukazywały sie kursy dla ARM'ów mogę je udostępnic dla potrzebujących (jak coś to proszę pisac na mojego e-mail'a)możemy sie powymieniać ....

    Pozdrawiam
  • #19
    jaqbw
    Level 13  
    Zakładam, ze wygooglałeś już PyODE - nie pomogło ?

    Jakby Ci się coś udało z tym ODE w C/C++ to daj znać.
  • #20
    thomas_191
    Level 11  
    Witam

    Quote:
    Zakładam, ze wygooglałeś już PyODE - nie pomogło ?

    Jakby Ci się coś udało z tym ODE w C/C++ to daj znać.


    tak widziałem ta stronkę ...
    troszkę teraz czytam o tym pythonie ale ciężko idzie bo po ang...
    nie ma ktoś linka lub pdf do jakieś polskiej książki (wiadomo najlepiej sie czyta w ojczystym języku)...???
    Planuje tak po świętach sie przyłożyć ...
  • #21
    thomas_191
    Level 11  
    Witam
    po dość długiej nieobecności ... prace and robotem idą powoli ale do przodu... i stanołem na kolejnym problemem... zrobiłem tester(na Atmega8) serw 8(po 2 na nogę), wysterowłem serwem i wszystko jest ok (ładnie idzie do zadanej pozycji i ma moc). Problem zaczyna sie dopiero przy podłączeniu wiekszej liczby serw (przy 5 i więcej) co prawda serwa dochodza do zadanej pozycji lecz skokami i nie maja odpowiedniej mocy... przypuszczam ze jest tu problem z zasilaniem(mogę sie mylić) w załaczniku płytka, a może atmega nie wyrabia bo sam juz nie wiem...
    Może ktoś spotkał się z takim problemem...
    Z gory dzieki za pomoc
  • #22
    Fyszo
    Level 37  
    Kolego a czym zasilasz te 8 serw? I czym zasilasz logike?
  • #23
    thomas_191
    Level 11  
    serwa są zasilone stabilizowanym napięciem 6V, procek stabilizowanym 5V
  • #24
    Fyszo
    Level 37  
    'Ja pytam jak wisła szeroka a ty mi że głeboka...' Jakie wydajności prądowe ma twoje zasilanie. Policz sobie pobory mocy i przekalkuluj czy z tych 6V przypadkiem się 4V nie robi.
  • #25
    McRancor
    VIP Meritorious for electroda.pl
    thomas_191 wrote:
    a może atmega nie wyrabia bo sam juz nie wiem...
    Może ktoś spotkał się z takim problemem...


    Nie ma takiej możliwości żeby to procek nie wyrabiał. Takie problemy to wina zasilania. Porządne zasilanie i kondensatory filtrujące załatwią sprawę.
  • #26
    thomas_191
    Level 11  
    Quote:
    Porządne zasilanie i kondensatory filtrujące załatwią sprawę.
    a moze ktos ma taki schemacik (przykladowy) jak to powinno wygladac aby bylo ok...
  • #27
    thomas_191
    Level 11  
    chyba problem jest jednak z programem bo:
    1. programuje jeden port, podlaczam jedno serwo - jest wszystko OK
    2. programuje kilka portów - podłączam JEDNO serwo - jest lipa (skacze).
    3. jesli programuję wszystkie serwa z PORTD i conajmniej jedno z PORTB to nic nie działa, na symulatorze rónież cuda się dzieją
    4. po podłączeniu kilku serw jednocześnie, sytuacja pogarsza się (nieznacznie), być może przy kazdym trzebaby zastosować kondensator

    dodam ze serwa byly zasilane ze zrodla o wydajności do 40A (teraz mam pewnosc ze to nie problem zasilania :) )
    jutro pomysle jeszcze nad programikiem i zobaczymy...
  • #28
    McRancor
    VIP Meritorious for electroda.pl
    No fakt. Chyba masz jednak problem z programem.
  • #29
    thomas_191
    Level 11  
    chodź sam już nie wiem tu ludzie piszą https://www.elektroda.pl/rtvforum/topic672855.html ze to jednak nie problem programu lecz kondensatorów odsprzęgających
    Quote:
    kondensatory odsprzęgające przy procesorze (dosłownie przy - odległość jest ważna) oczywiście zasilanie serw z innego źródła niż uC (o ile to możliwe, jeśli nie, to chociaż kondensator 100n przy każdym) do tego kilka większych pojemności.

    Quote:
    podłącz przez rezystor 1K do plusa


    sądzicie że to może być wina braku kondensatorów?? i są spadki napięć... chodź jak zaprogramuje 8 serw to skacze ale nie na ostatnich (tzn nie widać kumulacji spadku napięcia) skacze np. serwo2, serwo 4, serwo 5, serwo7 a reszta chodzi bez problemów... a może to wina tego(teraz myśl przyszła) że wszystkim zadaje od razu określoną pozycje(tzn nie steruje sekwencyjnie) i w tym samym czasie chce aby wszystkie doszły do danej pozycji. Może trzeba sekwencyjnie sterować, chociaż w czasie chodu każde serwo będzie musiało utrzymywać określoną pozycje(dostawać sygnał)... chyba już zaczynam "szukać dziury w całym":cry:

    Dodano po 1 [minuty]:

    a może wogóle płytka jest do bani??
  • #30
    McRancor
    VIP Meritorious for electroda.pl
    Na płytce przecież nie ma żadnych kondensatorów filtrujących zasilanie, dołożyć nie zaszkodzi. Co do kodu - póki go nie pokażesz póty możemy dywagować...