Fórum témák
» Több friss téma |
Fórum » Robotika kezdőknek
Ha egy függőleges lézer csík van, akkor valóban csak egy szűk sávban érzékeli a vevő. Ekkor is számolni kell azzal, hogy ameddig látja az adót, azalatt lemenjen n db periódus a jelből, amit már érzékel a vevő, illetve az esetleges visszaverődő jelekkel is. Léptetőmotorral hajtva még az is baj lehet, hogy nem egyenletesen forog az adó, és "átugorja" a vevőt, legalábbis nagyon rövid ideig világít rá.
(Plusz lézer esetén arra is vigyázni kell, hogy ne nézzünk bele közvetlenül...) Szerintem a nagyobb frekvenciáktól nem kell félni, semmivel nem bonyolultabb, csak más értékű alkatrészek kellenek a szűrőbe. Szkóp szerintem mindenképpen fog kelleni, de ha van egy 10MHz szkópod például, akkor 1MHz-ig felviheted a modulációt, azt még meg tudod figyelni szkópon simán. Az elektro-optikai alkatrészeknek ennyi meg sem szokott kottyanni (lásd adatlap). És az már százszor gyorsabb, mint a 10KHz, annyival pontosabbat lehet mérni vele annyival gyorsabban! Mondom ezt úgy, hogy sosem csináltam ilyet
Léptető motorral sincs gond, microstep is használható. Az a4988 is tud x16-ot, folyamatos forgás mellett eléggé stabil volt amikor próbáltam. Tehát már tizedfokon belül vagyunk ami a pásztázást illeti. A lézertől nem kell félni, ekkora teljesítmény mellett nem okoz bajt. Mondjuk én lezerpointer használatával gondoltam megoldani (ezt nem írtam).
Akkor ez a része már megvan. Kell egy áram generátoros meghajtó fokozat a lézernek, amit modulálunk a MHz-es vivővel. Ez készen megtalálható a neten. Akkor nézzük a szűrőt!
Szia!
Nem biztos, hogy jól értem az elképzelésedet, de nagyon emlékeztet a 2011-es Magyarok a Marson versen pályán lehetséges egyik pozicionálási megoldásra. Bővebben: Link Ott infra fények voltak, amiket különböző frekvenciákkal moduláltak. Lehetett ott is léptetőmotorral forgatni a vevőt, hogy tudd az irányt, de sokan fix vevőket használtak, és az intenzitásból matekozták ki az irányt. Létezik olyan kamera megoldás, ami egy síkban képezi le a helységet (Omnidirectional camera), és azzal még egyszerűbben meg tudod határozni a pozíciódat különféle színek vagy moduláció használatával.
Az a bajom a kamerákkal, hogy egyfelől szoftver kell hozzá ami kezeli a képet, ehhez egy pc jellegű számítógép (most már ugye egy rpi is akár), fel kell mászni a plafonra a telepítéshez, és központi vezérlő kell ami összefogja az egész rendszert. Ehhez képest ha működik a gondolatmenet, akkor elég kitenni pár bólyát, és máris tetszőleges számú független entitás tudja használni.
szerk: Idézet: „intenzitásból matekozták ki az irányt.” Felmerült itt is a gondolat fentebb, csak a lassúsága illetve a pontatlansága miatt elvetettük ezt a megoldást. A hozzászólás módosítva: Jan 1, 2024
Egy ötlet, nem próbáltam ki!!!
Elhelyezel 3 db adót, amik egymás után kiadnak egy-egy hang-impulzust, konkrétan kattanást, vagy csippanást. A robotban van egy mikrofon, ami ezeket a kattanásokat észleli. Természetesen kell egy referencia-pont, amitől kezdve mérni kell az időt, ez lehet egy rádiójel vagy fényimpulzus. Pl. 4 ms-onként jön a rádiójel. Ezt az értéket alaposan át kell gondolni, a 4ms-ot csak a szemléltetés kedvéért írtam! Ez után 1ms-mal jön az első adó kattanása, 2ms múlva a másodiké, 3ms múlva a harmadiké. A robot érzékeli a kattanásokat mondjuk 1.1ms, 2.4ms és 3.6ms időpontokban. Akkor tudja, hogy a hang az elsőtől 0.1ms, a másodiktól 0.4ms, a harmadiktól 0.6ms alatt ért oda. A hang terjedési sebességével ki lehet számolni a távolságokat az egyes adóktól. A többi már matematika... - Természetesen a terem méretétől függ, hogy mekkora a lehetséges maximális úthossz, vagyis a késleltetés, amikor valamelyik adótól a lehető legmesszebb van a robot. A példában szereplő 1ms-os lépésközt ehhez kell igazítani: Az előző impulzus biztosan megérkezzen és a visszhangok is lecsengjenek, mielőtt a következő adó megszólalna. - A csipogás vagy kattogás eléggé zavaró lehet, ezért mindenképpen az ultrahang tartományban kellene dolgozni. Ha van kutya, macska vagy egyéb állat (pl. denevér ) a helyiségben, akkor az komoly probléma lehet, mert hallják és szenvedhetnek tőle! (Viszont talán a szúnyogok is elmenekülnek onnan... ) - Természetesen a megfelelő frekvencián érzékenynek kell lennie a mikrofonnak, és irányfüggetlennek. - A falak, a teremben lévő tárgyak, és a robot is visszaverődéseket fog okozni! De mindenképpen az első impulzus éle lesz a mérvadó, mert mindig a direkt hullám érkezik a rövidebb úton, a visszaverődések útja hosszabb. Kivéve, ha takarásban van a robot és a direkt impulzus nem éri el. - Gyakorlatilag korlátlan számú robot működhet egymástól függetlenül, mert mindegyik a saját pozícióját határozza meg, nem kell egy központból lekérdeznie. - Jelfeldolgozás, zajszűrés lehet analóg, az időmérésre pedig a legegyszerűbb uC is megfelelő (30 éve digitális számlálókkal oldottam volna meg... ). - A pontosságát az időmérés felbontása adja leginkább. Ha szabad téren is használnád, akkor a páratartalom, a levegő hőmérséklete és a szél iránya és mértéke is beleszólhat. Az irány vagy szögmérésen alapuló módszerekkel szemben a pontosság kevésbé változik az adott adótól való távolsággal, mert nincs nyaláb, aminek a széttartását figyelembe kell venni. - Ha van egy 4. adó, azzal javítani lehet a pontosságot. Mielőtt bárki azt mondaná, hogy az 1ms túl sok / túl kevés: Csak az elv szemléltetésére, hasraütésre írtam ezt az értéket!
Hasonlót javasoltam én is, szerintem is működhet. De az ördög mindig a részletekben rejlik, lehetnek benne buktatók azért.
Lényegében elvében ez is Time of Flight, mint a GPS, csak mivel hangról van szó és nem rádiójelről vagy fényről, ezért más nagyságrendben kell az időt pontosan mérni. Hogy mik a számok? Egy 3m-es szobát kb 0.01s alatt szel át a hang, 1mm-nek 2.9us felel meg. 44000-es mintavétellel (standard hangkártya) számolva 1 minta ideje alatt 7mm-t tesz meg a hang. Én örülök, ha a posztoló megvalósítja és beszámol az eredményeiről, de én ha egyetlen szobában akarnék egy robotot irányítani, akkor tuti hogy kamerás megoldással indulnék el, mert sokkal egyszerűbbnek tűnik, gyorsabban lehet eredményre jutni.
Igen, pontosan ez volt ebben a versenyben. Én is ezért rágtam végig már ilyen részletességgel, hogy milyen gyorsan foroghat a vevő, hogy meg tudjuk különböztetni a frekvenciákat és stb...
Amit tudni érdemes, hogy a verseny résztvevői közül olyan sokan jelezték a szervezőnek, hogy nem tudnak működő megoldást csinálni, hogy végül inkább a plafonon elhelyezett kamera alapján is lehetett tájékozódni. Mivel ezt sokkal egyszerűbb volt megvalósítani, ezért tudommal senki nem használta az infra forrásokat végül.
Utólag én is átgondoltam az időket...
Egy 3 m-es szobából kiindulva: - A robot az adóval szemközti falnál van (most egy pillanatra feledkezzünk el az átlóról...), a hang ideje 10ms. - A robot az adó mellett van, a szemközti falról jövő visszhang ideje 20ms. -> Két adó közötti idő legalább 25ms legyen. A három adó + szünet -> 0.1s-onként lehet mérni a pozíciót. 16 bites számlálóval és 500kHz-es időalappal 130ms-ig tudunk mérni (ebbe belefér egy 4. adó is...) 2us-os, vagyis kb. 0.7mm-es felbontással. Én kihagynám a hangkártyát... Ahhoz számítógép kell (laptop, PI, stb...) . Helyette: - Egy erősítő, ami csak az ultrahang tartományban működik és a mikrofon jelét felerősíti. - Egy komparátor az erősítő kimenetén, ami detektálja a jel felfutó élét. - A pilotjel mutatja a 0 időpontot, ekkor elindul egy számláló (0-ról) - Az első időablakban (25-40ms) beérkezett első impulzusra letároljuk a számláló értékét: "A" - A második időablakban (50-65ms) beérkezett első impulzusra letároljuk a számláló értékét: "B" - A harmadik időablakban (75-90ms) beérkezett első impulzusra letároljuk a számláló értékét: "C" - A negyedi időablakban, ha van olyan (100-115ms) beérkezett első impulzusra letároljuk a számláló értékét: "D" Nagyobb szoba esetén természetesen az időket arányosan növelni kell.
Magam részéről nem vettem részt a versenyben, a helyszínen sem voltam, csak a közvetítést követtem, illetve csak kíváncsiságból gondoltam végig, hogy hogyan oldanám meg, és ezért jutott eszembe.
Ahogy emlékszem, Fourier szűréssel gondoltam a frekvenciákat szétválasztani. Ahhoz hogy ez hatékony legyen, kb. 2msec ideig kell ennek tartania (600Hz-es különbséggel voltak a frekvenciák), azaz egy-egy irányba (szögtartományba)ennyi ideig kell nézni. Ha 1 sec alatt "nézünk körbe", akkor elvileg jobb mint 1°-os lenne a felbontás, de oda ez nem feltétlenül kellett volna. Ha nagyobb a frekvenciakülönbség, akkor lényegesen rövidebb idő is elég a hatékony szűréshez. A mintavételeznek nem kellett volna túl nagynak lennie, kb. 50ksmpl már elég lehetett volna. A kivitelezésre olyan ötletem volt még, hogy nem a fotószenzort forgattam volna, hanem egy tükröt fölötte.
lazarbibi/technikatörténet alatt van egy nagyon jó cikksorozat az Elektronikus navigáció története címekkel.
Ekkora távolságon már számolni kell a hangsebesség hőfokfüggésével (is).
Innen vettem en is az alapötletet: Bővebben: Link Rögtön a második bekezdes.
Csak áttettem fenyre a gondolatmenetet, mert azt gondolom ekkora meretekben könnyebb használni. A hozzászólás módosítva: Jan 2, 2024
Sziasztok!
Van egy félhumanoid robot projektem. PIC18LF4550-el vezérlem a szervó motrokat. Sajnos nem tudom miért a szervó motorok közül négy nem akar működni, de a többi hiba nélkül működik. Elvileg a jó portokra kötöttem, és a programja is a megfelelő portokat kezeli, mégsem történik semmi. Az RA4 és RA5-ös portokon van két szervó, amik nem működnek, de az RA0-tól RA3-ig minden szervó a rendeltetésének megfelelően működik. A Másik két szervó ami nem működik az a RE1-en és RC1-en vannak. Felmerült bennem, hogy átkötöm a kérdéses szervókat a PORTB-re, de nem tudom lenne ennek eredménye. Létezik, hogy van egy limit amit a pic tud kezelni? A robotban 13 szervó motor van, ebből 4 nem működik. Esetleg a PORTE-nek van valami speciális beállítása, bár a PE0-n lévő szervó motor szintén működik. A 4 szervó, ami nem működik azok FR5113M dupplakaros szervó. Van ötletetek? Segítségeteket előre is köszönöm! Üdv.: ssdroon30
Próbáltad cserélgetni a motorokat a különböző, működő és nem működő, kimenetek között? Honnan van a PIC programja? Oszcilloszkóppal/logikai analizátorral ellenőrizet a kimeneteket? A PIC hogyan/honnan/miből állítja elő a motoroknak szükséges jeleket?
Hibalehetőség van bőven.
Szia!
A program lényege, hogy a vezérléshez szükséges időzítéseket a Portok közvetlen írásával valósítom meg pl.: void JobbKarBehajlit(int time){ while(time--){ PORTCbits.RC1 = 1; __delay_ms(0.5); PORTCbits.RC1 = 0; __delay_ms(19.5); } } Érdekes, de amikor segítettem a szervóknak pozícióba álllni, akkor el is indultak a megfelelő irányba, de utána pl.: kar felemelésnél csak egy pillanatig tartotta a pozícióját. KB 1 hónapja töltöttem az akkukat. Megpróbálom feltölteni, és meglátom. A PIC portját megvizsgálom oszcilloszkóppal. Köszönöm a gyors választ! ssdroon30
Még annyit, hogy az imént teszteltem le a szervo motorokat 4db 1.5V-os galvánelemekkel, és működnek.
Az XC8 fordító ezt a függvényt unsigned long paraméterrel definiálja. Kérdés, hogy kijön-e a 20ms periódusidő.
Szia még egyszer!
Leellenőriztem a PIC portjait oszcilloszkóppal, és meg vannak a vezérlőjelek. Akkor marad az akku kérdés...
Ezzel nem volt problémám, a többi szervónál is így működik, de most, hogy írod leellenőrzöm.
Szia Bakman, Hp41C!
Köszönöm a segítséget! Szerencsére csak az akkumulátor volt túlságosan lemerülve. Ma reggel frissen töltve újrapróbáltam a programot, és működött. Nagy kő esett le a szívemről! Üdv.: ssdroon30 |
Bejelentkezés
Hirdetés |