Fórum témák

» Több friss téma
Fórum » Robotika kezdőknek
 
Témaindító: mspike, idő: Júl 18, 2005
Lapozás: OK   82 / 82
(#) asch válasza sargarigo hozzászólására (») Dec 30, 2023 /
 
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
(#) sargarigo válasza asch hozzászólására (») Dec 31, 2023 /
 
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!
(#) Peter65 válasza sargarigo hozzászólására (») Dec 31, 2023 /
 
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.
(#) sargarigo válasza Peter65 hozzászólására (») Jan 1, 2024 /
 
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
(#) lazsi válasza sargarigo hozzászólására (») 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!
(#) asch válasza lazsi hozzászólására (») Jan 2, 2024 /
 
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.
(#) asch válasza Peter65 hozzászólására (») Jan 2, 2024 /
 
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.
(#) lazsi válasza asch hozzászólására (») Jan 2, 2024 /
 
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.
(#) Peter65 válasza asch hozzászólására (») Jan 2, 2024 /
 
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.
(#) Gafly válasza lazsi hozzászólására (») Jan 2, 2024 /
 
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).
(#) sargarigo válasza Gafly hozzászólására (») Jan 2, 2024 /
 
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
(#) ssdroon30 hozzászólása Júl 11, 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
(#) Bakman válasza ssdroon30 hozzászólására (») Júl 11, 2024 /
 
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.
(#) ssdroon30 válasza Bakman hozzászólására (») Júl 11, 2024 /
 
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
(#) ssdroon30 válasza Bakman hozzászólására (») Júl 11, 2024 /
 
Még annyit, hogy az imént teszteltem le a szervo motorokat 4db 1.5V-os galvánelemekkel, és működnek.
(#) Hp41C válasza ssdroon30 hozzászólására (») Júl 11, 2024 /
 
  1. xc8: __delay(0.5); __delay(19.5)

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ő.
(#) ssdroon30 válasza Bakman hozzászólására (») Júl 11, 2024 /
 
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...
(#) ssdroon30 válasza Hp41C hozzászólására (») Júl 11, 2024 /
 
Ezzel nem volt problémám, a többi szervónál is így működik, de most, hogy írod leellenőrzöm.
(#) ssdroon30 válasza Bakman hozzászólására (») Júl 12, 2024 / 1
 
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
Következő: »»   82 / 82
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem