Zhromažďujeme a sily spustiť rozpočtu heksapoda

  Vynechanie rozkazni o tom, ako som prišiel na myšlienku postaviť heksapoda (to bolo ton videí na YouTube), ísť priamo na podrobnosti výberového konania. Bolo januára 2012. Ja len viem, čo chcem od svojej práce a to, čo - no. Páči sa:

  že každá noha je 3 stupne voľnosti - 3dof (3 rozmery slobody), je jednoduchší variant 2DOF - robí taký pocit hmyzu a 4dof - raz, 3dof, a tak umožňuje voľný pohyb špičky nôh v 3D priestore;
  6 ft. Opäť platí, že toto nie je 4 (ak ťažkopádny robot skoky), ale nie 8 ako pavúky, ktoré sú nadmerne;
  malá veľkosť;
  lacné obstarávacou cenou;
  s minimom dosiek a prípojok.

  Krok 1 , Po prvé, samozrejme, mal zvoliť základnú dosku pre dieťa. Mnoho dobrý a zlý čas na čítanie do doby Arduino. Ale na neho a sledoval, ako sa hlavné možnosti. Solder regulátor sám - nebol čas a vziať pokročilejšie doska s ARM procesor, napríklad - je to drahé, a pochopiť, ako svoje programy, ako pracovať s nálezmi PWM, atď - dlhé. Arduyna: IDE zahájený napedalyl kód, nahrávanie lisované - a ahoj, máš to blikať. Krása! ;)
  Najprv som začal hľadať na Arduino mega a klonov, takže PWM výstupy, ktoré je možné ovládať servo mali dosť. Pamätajte si, že 3dof heksapoda potrebovať 3 * 6 = 18 nevoľníkov a riadenie komponentov kanálov. Ale potom som našiel naozajstnú Yazz medzi Arduino mega, obvinenia z DAGUE, zavolajte Red Back Spider Controller. Tu je to na eBay.
  Ponúka všetky výstupy, ako skončil 3-pin (pozemky, jedlo, tón), a riešenie potravín. Sila Controller stabilizoval, a konektor je dvyhlov ako je (UPD: nie je ako, ale tiež stabilizovaný 5 voltov A zrejme vyriešiť Power regulátorom za zasahovanie s regulátorom 18 súbežných nevoľníci nedávajú.). To umožňuje súbor na termináli 7-30 voltov potravín dostatok energie (EEE PC dotazník od 901 do 12V a 3A - bolo dosť pre všetkých 18 servo bzučanie), a nie klamanie so samostatným napájaním a logiky dvyhlov. Tiež to bude v budúcnosti, je ľahké dať na to monštrum balenie Li-Po batérie 7.4 voltov. A s tým všetkým, programový názor - to je bežný arduyinov mega-kompatibilný softvér a lybamy a železa (iného ako shyldov, namontované priamo na pôvodných mega - nebudú fungovať). Avšak cena je vyššia ako aj pôvodný Mega, ale aj všetky ostatné výhody prevažujú nad to.
  Stupeň 2 , Ďalšie serva. Na eBay mikro serva Spýtajte sa ich dosť odlišné. Vzal som najsilnejší z najmenších a najlacnejších, 9 g váhy, plastové zariadenia. Ak budete mať veľa, kde sú posielanie dávok - je lacnejší. Vzal som si 3 balenia po 6 Zdá sa, že sa stalo menej ako 2 doláre za kus. Poviem vám, že ľutovať, strávil viac a vziať servo s kovovými prevodmi a guličkovými ložiskami. Tieto plasty boli pomerne znateľný odpor, a charakteristické chrupnutie, keď pri nadmernej sily preskočí kolesá. Vzhľadom k odporu - kinematika veľmi ťažké nastaviť presne (ako je všeobecne najťažšie ukázalo).
  To je všetko, čo som si objednal, dodávka robil to asi 100 dolárov. Batérie a vysielače / prijímače pre sledovanie a radyoupravlyaemosty - odišiel na neskôr. Vzhľadom k tomu, Rádiom riadené stroje mám, a nie premýšľať, čo ma naozaj zaujíma - je to nohy! Videá hladko heksapodov na YouTube - som sa pozerala fascinovalo ho, pozrel sa, a zakaždým, keď slzy stekali po lícach, a dusil som sa sipot "chcem! ". Ja by som požiadať o hotový kus, a ja chcem, aby si väčšina je všetko!
  Pri čakaní na objednávku znieť vzdelaných ľudí animáciu svoje výtvory. Samozrejme, okamžite vynorila inverzný kinematiky. Keď poviete, jednoducho a priamo o sharnytnыe "končatín", priame kinematiky - to je miesto, kde vstupné predložila rohy kĺby, a výstup máme model končatiny v priestore, súradnice krajných bodov končatiny. Inverzný kinematika je - samozrejme v rozpore - informácie získané súradnice krajných bodov končatiny, kde potrebujeme dosiahnuť, a výstup dostaneme uhly, ktoré je potrebné sa obrátiť závesmi, ako to dosiahnuť. Servo len dostať vstupné uhlovej polohy, v ktorej potrebujú k návratu (jeden vodič signálu kódovaný PWM / PWM).
  Krok 3 , Začal som sa, ktorý čítal, myslím, že prostredníctvom realizácie IC. Ale čoskoro prišiel pocit, že môj prípad je príliš zložitá. A ako ťažkopádne realizovať a výpočtovo veľmi ťažké - výpočet je iteratívny. A ja mám 6 nohy, pričom každý z nich by mali byť považované za IC, a jednoducho nie je moc šikovný 16Mhts Architecture AVR. Ale len 3 stupne voľnosti. A ľahko odhadnúť, že ľubovoľný bod v dotyahuvannya "môže dosiahnuť iba jedným spôsobom. Rozhodnutie dozrievalo v mojej hlave.
  Ale potom prišiel februára a pozemky - jeden z Číny, ďalšie UK. Prvá vec, ktorú zvyčajne len som pohravsya Pay arduyinov - pomorhal popylykal LED a reproduktor tam pripojený. Potom sa začalo skutočné vykonávanie IC, v žľaze. To, čo postavil prototyp stôp od šrotu materiálov (miernejší plastmasska, ktorá sa ľahko strihať nožnicami, skrutky a príslušenstvo - to všetko súprav pohonov). Tento terminátor noha pripevnený priamo na palube arduynы. Môžete zvážiť, ako rozpočet z kĺbov.
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  Pomyluvavsya tento prípad, a pomriyav, že keď som na základe tejto práce v budúcnosti spayayu terminátora, ktorý vyhlasuje vojnu ľudstvo, neskôr sa John Connor Schwarzenegger sa vráti ku mne tu v minulosti, a vyberie tento prototyp a jeho rasplavyat v Orodruyne. Ale nikto sa vrátil, nič vzali, a ja som šiel na ticho.
  Krok 4 , Bolo zistené, že IR nemusia báť, v mojom prípade to prišlo až na banálne geometria, trigonometria. Ľahšie aplikovať na kĺby, sa obrátil na Wikipédii a ctil hmyzu. Majú zvláštne mená pre končatiny:
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  Rus má tiež svoje veľmi zaujímavé mená pre to, ale "misa", "vertluh", "noha", atď., Kým v kóde nedovolil mi spať. Tak som 3 končatiny a príslušné meno servo dovolenku Coxa, kosti stehennej, holennej. Od prototypu nôh vyššie uvedeného vyplýva, že nemám ani na Coxa samostatné časti. Je to len dva servomotory spojený gumičky. Stehennej - realizovaný prúžok plastu, ktorý obe strany sú namontované páčky nevoľníkmi. To znamená, že posledné zostávajúce servodvyzhok - začiatok tíbie, rozšíriť, ku ktorému je priskrutkovaný kus plastu.
  Krok 5 , Začala editor, nie mudstvuya vytvorený súbor Leg.h, a v ňom triede nohe. A partia pomocného Muti. Predpokladajme, že bod v priestore A (ax, ay, az), ktorý by mal dosiahnuť. V pohľade zhora vyzerá takto:
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  Obrázok I okamžite ukázal spôsob výpočtu prvý uhol - uhol otáčania serva, ovládať Coxa, ktorý sa otáča celej končatiny v horizontálnej rovine. Diagram okamžite označený červené premenné použité v (nie všetci) kódu. Nie moc matematicky, ale pohodlné. Je zrejmé, že máme záujem roh je elementárne. Prvá primaryCoxaAngle - je len uhol (0,), na osi X (ekvivalent k rohový bod v polárnych súradniciach). Ale diagram ukazuje, že zatiaľ čo samotná noha - nie raspalozhena v tomto bode. Dôvodom je to, že os otáčania Coxa nie je "Line up" - neviem, ako to správne povedať. Nie je v rovine, v ktorej rotačný kĺb a druhý je 2ft tip, tu. To možno ľahko kompenzovať, s ohľadom na additionalCoxaAngle (ako sa domnievala - a to aj utruzhdayus zastaviť, pretože bol ešte v škole, nie?).
  Spoločne máme prvý kus kódu, je táto metóda vnútornosti REACH (point & dest):

  float hDist = sqrt (sqr (dest.x - _cStart.x) + sqr (dest.y - _cStart.y));
  float additionalCoxaAngle = hDist == 0.0? DONT_MOVE
  : Asin (_cFemurOffset / hDist);
  float primaryCoxaAngle = polarAngle (dest.x - _cStart.x, dest.y - _cStart.y, _thirdQuarterFix);
  float cAngle = hDist == 0.0? DONT_MOVE
  : PrimaryCoxaAngle - additionalCoxaAngle - _cStartAngle;

  Tu dest - to je miesto, kde nazho drag, _cStart - súradnice hardvéru (a stred otáčania) Coxa v hDist zvážiť vzdialenosť od _cStart dest v horizontálnej rovine. DONT_MOVE - je to len príznak, čo znamená, že coxa nemusíte nikde sa otočiť a odísť aktuálnu polohu (ako dest - niekde priamo na osi rotácie Coxa - zriedka, ale to sa stáva). Tu cAngle - to je kútik, kde chcete, servo sa odchýlila od svojho pôvodného uhla (čo je v strede svojho pracovného rozsahu). Je vidieť, že za yuzaetsya _cStartAngle - je uhol v priestore, ktorý je vrátená devoltu serva, počas inštalácie. O _thirdQuarterFix ti neskôr, ak nechcete zabudnúť.
  Krok 6 , Potom sa veci ešte jednoduchšie. Proste je potrebné sa pozrieť na vyššie uvedené lietadlo "Line up":
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  To znamená, že problém sa náhle zníži na nájdenie priesečník 2 kruhov. One - do okamihu, kedy "rastú" náš stehennú kosť, druhý - miesto, kde sa musíme dostať (2d miestnej súradnice). Polomery kružníc - dĺžka stehná a holene, resp. V prípade, že kruhy sa pretínajú v jednom z bodov 2 môže byť umiestnený kĺb. Vždy volíme dosku do "koleno" v monštrá boli ohnuté nahor, nie nadol. Ak sa neprekrývajú - nie dotyanemsya do cieľového bodu. Trochu kód, prepnite na rovinu, je proste len pár nástrah sa berie do úvahy a zdokumentovaná v poznámkach, ktoré som sa nechápavo a potom skúmať kód. Pre jednoduchosť, v tomto miestnom súradnicovom "lietadlo up" Vybral som si počiatočný bod, kde rastie stehno:
   // Presun na miestnej Coxa-stehennej kosti-cieľ súradnicovom systéme
 
  // Poznámka: v prípade, kedy hDist <= _cfemuroffset.="" this="" is="" for="" the="" blind="">
  // Nikdy nemôže dosiahnuť bodu, ktorý je bližšie k _cStart potom
  Offset // stehenný (_fStartFarOffset)
  float localDestX = hDist sqr (_fLength + _tLenght))
  {
  log ("nemôže dosiahnuť!");
  return false;
}

  Krok 7 , Teraz localDestX a localDestY - súradnice cieľového bodu. Všetko, čo zostáva - nájsť križovatka kruhy sa stredom v (00) a (localDestX, localDestY), a polomery _fLength a _tLength (respektíve dĺžka a dĺžka stehennej holennej kosti). S týmto študentom tiež zlyhať, ale pripúšťam, že je veľa chýb pozrieť sami, a každý môže urobiť pre to, preveriť, aké hlúpych vzorcov, takže odkaz, ktorý je jasný razzhovana tento základné geometrické problém:
   // Nachádzať spoločná ako kruh pretínali (rovnica od http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection)
 
  float = -2 * localDestX;
  float B = -2 * localDestY;
  float C = sqr (localDestX) + sqr (localDestY) + sqr (_fLength) - sqr (_tLenght);
  plavák X0 = -A * C / (sqr (A) + sqr (B));
  float Y0 = -B * C / (sqr (A) + sqr (B));
  float D = sqrt (sqr (_fLength) - (sqr (C) / (sqr (A) + sqr (B))));
  float mult = sqrt (sqr (D) / (sqr (A) + sqr (B)));
  float ax, ay, bx, by;
  ax = X0 + B * mult;
  BX = X0 - B * mult;
  ay = Y0 - * mult;
  by = Y0 + A * mult;
  // Select riešenie na vrchol ako joint
  float jointLocalX = (ax & gt; bx)? ax: bx;
  float jointLocalY = (ax & gt; bx)? ay podľa;


  Všetko tam je ešte trochu prijatých súradníc pre výpočet správnej uhly pre stehna a predkolenia nevoľníkov:
   float primaryFemurAngle = polarAngle (jointLocalX, jointLocalY, false);
 
  float Fangli = primaryFemurAngle - _fStartAngle;
  float primaryTibiaAngle = polarAngle (localDestX - jointLocalX, localDestY - jointLocalY, false);
  float Tangle = (primaryTibiaAngle - Fangli) - _tStartAngle;

  Krok 8 , Opäť эlementarschyna - uhlové súradnice všetko. Dúfam, že pomenovanie premenné by mali už byť jasné, napríklad, _fStartAngle - to stehennej počiatočný uhol, uhol, pod ktorým je stehenná kosť v réžii v predvolenom nastavení. A posledný riadok metóda dosah () (povedal, že išiel a zamával):
   presunúť (cAngle, Fangli, zamotať);
  

  Metóda ťah je priamo zadaním servo. V skutočnosti to ani vtedy museli pridať celý rad vecí pre ochranu od zlých uhlov (ktoré servo sa nemôžu vrátiť, ale budú sa snažiť), rovnako ako ďalšie nohy, ktoré sú zarkalno a / alebo zaslať na druhej strane. Ale tak dlho, ako budeme pracovať iba s jednou labou.
  Krok 9 , Tieto kusy - to je konečný kód, ktorý má ďaleko k dokonalosti, a to iste môže byť výrazne zlepšiť. Ale funguje to! Nikdy odchádzajú do geometrie na strednej škole, trigonometria, sme zaviedli polnofunktsyonalnuyu ynversnuyu kinematiky pre 3dof nohy! Áno, a dostaneme riešenie hneď, v jednom priechodu. Ak chcete, aby to všetko fungovalo, noha musela byť starostlivo merať a konfigurovať triedy získané dáta. vrátane uhla, že najťažšie pre meranie v hotovom výrobku. Možno, že keby avtokad projekt a urobiť niektoré pekné robí - to by bolo jednoduchšie, s meraním uhlov, ale nemal som čas ani chuť zaoberať sa touto emócií.
  Februára len začala, a videá noha už hotovo. Ak chcete otestovať IC, urobil som nohu popísať všetky druhy postáv v priestore (musíte dôsledne spustenie dosah, aby sa zabránilo bod na obdĺžnika alebo kruhu kód hlúpy a nudný, takže sa nemusíte citát (a hotových experimenty s cieľom sledovať primitív, mám Všeobecne vypylyav)):

  Krok 10 , Potom musel dokončiť hru s týmto produktom na jednej nohe, nie uprыhaesh (aj keď to robot by naozaj zaujímavé). Ale potrebujem heksapod. Išiel som sa pozrieť na najbližšie blší trh plexiskla. Nájdených 2 rôzne kusy - jeden 3 mm hrubý (len pre telo, myslel som si), ďalšie 2 mm a modrej (iné končatiny, aby zodpovedali servo). Za pár týždňov som si vybojoval večer niečo urobiť s ním. On robil náčrtky na papieri. Snažil on - ako by všetko v poriadku, potom sa veci na lebku.
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  Krok 11 , A je to tu, v zámorí monštrum shestylapoe. Keď som sa otestovať jednu nohu, mal som to, čo nejako nechal dotazníky na vonkajších skrutiek. Dosť. Ale živí 6ft od neho bolo príliš desivé. Takže chvíľu som zavesil ruky, myslieť si, že musím získať vhodnejšie dotazník. Ale ukázalo sa, oveľa jednoduchšie, som sa zmienil vyššie - prišiel z dotazníkového Eee PC 901. No, dobre.
  Krok 12 , Zriadiť prácu 6ft ukázalo ťažšie ako napísať jednu nohu motor. Polovica nohy boli zrkadlové obrazy na strane druhej. Okrem toho to všetko za účelom v rôznych smeroch. Všeobecne konfyhuryroval nalashtovuvav a ja sme veľmi dlho, a to nebolo moc inšpirujúce, takže peniaze neboli pohodlné nastavenie, maximum som mohol očakávať, že - v závere Losa seriáli. A to fungovalo v pohode základnej * .ino súboru, pripojený Leg.h - nevidel položky. Taktovaný barle pre losa (facepalm). Nakoniec otrefaktoryu. A tu je jar prišlo velosezon bol otvorený v plnej sile, a dal som vášho domáceho maznáčika v prípade shestylapoho. Takže prešiel v lete a na jeseň tepla.
  Krok 13 , Ale dážď prišiel, bola zima a heksapod sa extrahuje. Nohy boli založené, vrátane rovnakej bola zavedená _thirdQuarterFix výpočtu funkcie polarAngle. Problém bol v tom, že 2 stôp (ľavý stred a zadné ľavé), presunie tak, aby väčšinu času boli v III štvrťroku:
 Zhromažďujeme a sily spustiť rozpočtu heksapoda

  PolarAngle Bol som naivný - to ukázalo rohy pi-pi do, na osi X. A ak niekedy jeden z týchto 2ft musel vrátiť do II-nd štvrťroku hodnota polarAngle skočil z Pi Pi do že vlastne mal negatívny dopad na ďalší výpočet. Pofyksyl barla - pre tieto 2ft polarAngle považovaný za "iný". Hanba, hanba na mňa kód, ale celý projekt - proof of concept, jediným cieľom - a to nielen na vedomie, že môže zbierať realistický heksapoda pohybu alebo nie. Z tohto dôvodu, kód by mal fungovať, a práve teraz. A potom refaktorovat - pererefaktorynh.
  Vyrovnať sa s 3. štvrťroku, začal šliapať krok vzory. U tejto triedy zavedené v bode Leg triedy, ktorá je, v ktorom noha je miesto, kde je činnosť ticho a hladko. Tento bod môže tyuninhuvaty, dôležité pre všetky nohy boli na rovnakej súradnice Z (s nohami, aby skutočne fyzicky boli v rovnakej rovine, Noha je stále tuneRestAngles na veľmi nízkej úrovni ()). A v rovnakom súradnicovom Z, môžu sa pohybovať ľubovoľne. Takmer - pretože rozsah pohybu nie je nekonečný, a to zase nepôjde nad rámec tohto dyapazoda - východisková poloha nôh sa snaží umiestniť niekde blízko stredu tohto rozsahu.
  Krok 14 , Kód nie je v texte citácie, to je príliš základné a ja prinesie koniec odkaz na plné znenie všetkých Sorts - zároveň sa učia používať GitHub.
  Sequence zvolil jednoduchý krok - 3 nohy na zemi, 3 - vo vzduchu preskupené. To znamená, že súradnice nôh do ich východiskovej polohy - je možné rozdeliť do 2 skupín. Pre tieto dve skupiny I a provertav krokom v cykle (pozri funkcia prechádzku () v Buggy.ino). A nakoniec, každá noha počítané koordinovať svoje individuálne, na základe jeho predvolené umiestnenie.
  A to šlo! Ale tak ďaleko dopredu. Na nohách mal na sebe gumové pásky na zle skĺzol na linoleum. Ponáhľal som natočiť to na video ukázať priateľom.

  Krok 15 , U krbu-a, samozrejme, ďaleko.

 
 
 
 
 
 
 
 
   




Яндекс.Метрика