Ние събираме и принуден да тече бюджет hexapod

Много неща, за да се направи, преди да стигнем до тук е тази снимка:

Ние събираме и принуден да тече бюджет hexapod

  • за всеки крак е 3 степени на свобода - 3dof (3 размери на свобода), така че по-прост вариант 2dof - дава като чувство на насекоми и 4dof - прекомерно, 3dof и така позволява свободно движещи върха крак в 3D пространство;
  • 6 фута. Отново, това не е 4 (когато роботът скача несръчно), но все още 8 като паяци, които имат прекалено;
  • малък размер;
  • евтини по цена на придобиване;
  • с най-малко карти и връзки.

Стъпка 1. На първо място, разбира се, че е необходимо да се избере дънна платка за трохи. Голяма като добро или лошо време, за да се чете от време на Ардуино. Но това беше в него и гледах като основен вариант. самият ВиК контролери - не са имали време да се предприемат по-напреднал дъска с ARM процесор, например - това е скъпо, и да намерят начин да се програмира, как да работят с PWM изводи и т.н. - за дълго време. А Arduini: IDE стартира, napedalil код, качете кликнали - и здравей, те вече мига. Красота! )

Отначало започнах да гледам Ардуино мега и клонинги, като Брой на PWM изходи, които могат да направляват Серве те са имали достатъчно. Позволете ми да ви напомня, че 3dof hexapod нужда 3 * 6 = 18 крепостни селяни, както и отделно управление на каналите. Но после открих истински Yazz сред Ардуино мега, плащане от Dagu, обадете се, че Red Back Spider Controller. Ето това е на иБей.

Той предлага всички от продукцията си под формата на завършен 3-пинов (земя, храна, сигнал) и захранване отделяне. Мощност самия контролер е стабилен, и конекторите са dviglov както е (UPD:. Не как да се хранят, но също така стабилизира 5 волта и на пръв поглед отделен от захранването на контролера, поради смущения в работата на контролера 18 едновременно работещи крепостници не допринасят). Това го прави лесно да кандидатстват за терминал за 7-30 волта захранване достатъчно (pitalnika от Eee PC 901 до 12V и 3А - беше достатъчно, за да бръмчи всички 18 серво) и не играем с отделно захранване и логика dviglov. Това също така би в бъдеще е лесно да се постави всичко на чудовище пакет Li-Po батерия до 7.4 волта. И с всичко това, от гледна точка на софтуер - това е нормално Arduino Mega съвместими със софтуера и libami и желязо (различно от Шилд, са монтирани директно върху оригиналните мега - те ще бъдат прехвърлени). Вярно цена дори по-висока, отколкото дори най-оригиналните мега, но всички други плюсове надделяват над това.

Стъпка 2. След това Сервомеханизмите. На иБей по заявка микро серво са много различни. Взех най-мощният от най-малките и най-евтините, тегло 9 грама, пластмасови скоростните кутии на. Ако сте приели много, когато те изпращат в партиди - е по-евтино. Взех 3 опаковки от 6, изглежда, излезе по-малко от $ 2 на парче. Гледайки напред, аз ще кажа, че съжалявам, че не е прекарал повече и да вземат серво с метални зъбни колела и лагери. Тези пластмаси са доста забележима реакция, както и характерен криза с прекомерна сила при суаповете съоръжения. Благодарение на враждебната реакция - кинематика доста трудно да се създаде точно (да е по принцип най-трудно се оказа).

Докато чакате реда, четох, как просветен народ анимирате своите творения. Разбира се веднага изплува обратна кинематика. Да се ​​каже, просто и директно за sharnitnye "крайници", най-напред кинематиката - това е, когато са входни ъгли на ставите, както и на изхода имаме модел на крайника в пространството, и координатите на мястото на крайника. Обратната кинематиката - очевидно работи в обратен - това е въвеждане на координатите на мястото на крайниците, където ние трябва да достигнем, и на изхода получаваме ъгли, които са необходими, за да се превърне пантите да го издърпайте. Серво просто получават ъгловото положение вход, в които те се нуждаят, за да включите (една сигнална линия кодиран PWM / PWM).

Стъпка 3. Започнете с факта, както четем: мисля, че чрез прилагане на IR. Но бързо дойде да се чувстват, че това е твърде сложно за моя случай. И двете тромаво да изпълни, и изчислителни много трудно - изчислението е итеративно. И аз имам 6 крака, всеки от които трябва да се разглеждат като IR, и просто не е много бърз 16MHz AVR архитектура. Но само 3 степени на свобода. И лесно да се отгатне, че за произволна точка в "Достигането на полето" може да достигне само един начин. Решението е узряло в главата.

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Ще се любувате на въпроса, както и сънувал, че ако съм на базата на робота в бъдещия кръстовището на терминатор, който обявява война на човечеството, а по-късно с Джон Konnor Шварценегер ще се върне при мен тук в миналото, и ще избере прототип и се стопи го в Mount Doom. Но никой не се върна, не избрали нищо, а аз тихо продължи.

Стъпка 4. Установено е, че IR не трябва да се страхува, в моя случай, той слезе до тривиално геометрия, тригонометрия. Направете го по-лесно да се прилага за ставите, аз се обърнах към Уикипедия и да прочетете за насекоми. Те имат специални имена за елементите на крайника:

Ние събираме и принуден да тече бюджет hexapod

На руски, също има своя много интересно име за това, но на "купата", "трохантер", "пищяла" и т.н. е в код, не ми позволиха да спи. Защото 3 крайници и съответната Серве напусна Coxa име, бедрената кост, тибията. Foot прототип на по-горе става ясно, че дори не е нужно да се coxa отделни части. Това е само на две серво, държани заедно с гумени ленти. Бедро - реализира лента от пластмаса, с която двете страни са монтирани лостове роби. По този начин, последният останал servodvizhok - е началото на тибията, за разширяването, за да го който има парче пластмаса болтове.

Ние събираме и принуден да тече бюджет hexapod

Фигура I показва още и метод за изчисляване на първия ъгъл - е ъгълът на въртене на контролиране Coxa серво, завъртане на целия крайник в хоризонталната равнина. На диаграмата, червеният веднъж маркирани променливите, използвани в кода (не всички). Не е много радикално математически, но това е удобно. Ясно е, че ние се интересуваме от е ъгъл мозък. Първо primaryCoxaAngle - е просто ъгъл (0; А) X оста (което е еквивалентно на ъгловата точка А в полярни координати). Но диаграмата показва, че точно в този крак - не raspalozhena този ъгъл. Причината е, че оста на въртене coxa не е в "крак линия" - аз не знам как да го кажа правилно. Това не е в равнината, в която се върти фугата, а другият 2 е на върха на подножието, тук. Тя може лесно да се компенсира, като се има предвид additionalCoxaAngle (като брой си - дори не се притеснява да се спре, добре, след като всички са все още в училище, нали?).

Общо, ние имаме първата част от кода, е да достигне вътрешна метод (Point дестилирана вода):

Има Dest - това е мястото, където плъзнете NAWO, _cStart - координатите на точките за закрепване (и центъра на въртене) coxa, да се вземат предвид разстоянието от hDist _cStart DEST до хоризонталната равнина. DONT_MOVE - това е просто знаме, което показва, че coxa не къде да се върти и да се текущата позиция (както Цел - някъде директно върху оста на въртене на coxa - рядко, но се случва). Тук cAngle - това е ъгълът, под който трябва да се отклонява от първоначалната си ъгъл серво (което е по средата на работния му обхват). Вижда се, че също yuzaetsya _cStartAngle - е ъгълът в пространство, което се завърта от серво DeWalt, по време на монтажа. За _thirdQuarterFix обясня по-късно, ако не забравя.

Стъпка 6. След това, всичко става по-лесно. Ние просто трябва да погледнем в гореспоменатия самолет "линия на крак":

Ние събираме и принуден да тече бюджет hexapod

Следователно, проблемът намалява на вълните внезапно пресечната точка на кръга 2. Един - в точката, където "растат" ни бедрената кост, а вторият - на място, където ние трябва да се достигне (да имат местни координати 2D). Радиусът на кръга - дължината на бедрото и пищяла съответно. Ако кръговете пресичат - в един от 2 обекти могат да бъдат подредени съвместно. Ние винаги избираме върха на "коленичат" в чудовището възникнало, не надолу. Ако не се припокриват - че ние не се държим за целта място. Малко повече код преход в равнината е елементарно, само няколко клопки все още се счита и документирани в коментарите, така че аз не се скъса главата ми тогава, разглеждане на кода. За простота в тази местна координатна "крак самолет," Аз съм избрал мястото на произход, където расте на бедрената кост:

Стъпка 7. Сега localDestX и localDestY - координатите на целевата точка. Всичко, което остава - да се намери точката на пресичане на кръгове с центрове в (0,0) и (localDestX, localDestY) и радиуси и _fLength _tLength (съответно дължината на бедрената кост и дължина пищяла). С това, също студентът може да се справя, но след това предполагам, че много грешки, защото да се тества и всичко, което всеки може да се увери, че тази формула за немия, оставете линк към източника, където ясно и разбираемо razzhovana тази елементарна геометрична проблем:


Всичко все още е малко - на получените координати за изчисляване на правилните ъгли за крепостните селяни бедрото и пищяла:

Стъпка 8. Отново elementarschinu - ъглова координира всички. Надявам се, че именуването на променливите трябва да се разбира, например, _fStartAngle - това бедрената кост начален ъгъл, ъгъла, под който бедрената кост е насочено по подразбиране. И на последния ред на обсега на метод () (той каза, отиде, и махна с ръка):

метод ход вече директно дава екип Servite. В действителност, тя още тогава е трябвало да се добави най-различни неща, за да го предпази от лоши ъгли (които се превръщат сервото не може, но ще се опитат), както и за другия крак, което zarkalno намира и / или изпратено до другата страна. Но в същото време ние работим само с една лапа.

Стъпка 9. Тези парчета - това е окончателния код, който е далеч от съвършенство, и то със сигурност може да се подобри. Но тя работи! Никога не се излезе извън гимназия геометрия, тригонометрия, ние сме изпълнени polnofunktsionalnuyu обратна кинематика за 3dof крака! Да, и ние получаваме решение незабавно, в едно повторение. За да направите тази цялата работа, кракът трябва да е внимателно измерва и да конфигурирате констатации клас. включително центриране от корнер, който беше най-трудно да се измери на крайния продукт. Може би, ако проектирането в AutoCAD и да направи някои красиви визуализации - би било по-лесно с измерване на ъгли, но имах нито време, нито желание да се справят с тази емоция.

Стъпка 10. След това е необходимо, за да завърши мача с този ръчно изработени статия на един крак далеч uprygaesh (въпреки че такъв робот ще излезе много интересно). Но имам нужда от hexapod. Отидох да се търси най-близките битпазар плексиглас. Намерени 2 голямо парче - дебели един 3 mm (само за тялото, мислех), а другият 2 мм и синьо (други крайници в серво тон). След няколко седмици, аз издълбана една нощ, за да направя нещо от нея. Made скици на хартия. Примери - като всичко е ОК, а след това е до ножовка.

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Ние събираме и принуден да тече бюджет hexapod

Стъпка 11: И тук е, чудовището в чужбина, шест крака. Когато се тества един крак, аз таят това нещо по някакъв начин остави pitalnikom от външната страна на винта. Достатъчно. Но за да се хранят 6 фута от него беше твърде страшно. Тъй като от известно време Затворих ръцете, мисля, че трябва да съм по-подходящ pitalnik. Но се оказа, всички много по-лесно, вече споменах по-горе - дойде от pitalnik Eee PC 901. Е, добре.

Стъпка 12. Debug работа 6 фута се оказаха по-трудни, отколкото писането на двигателя на един крак. крака половината намери отражение в сравнение с другия. В допълнение всички насочени в различни посоки. По принцип, аз конфигуриране и персонализиране на всички от много дълго време, а и не беше много вдъхновяващо, защото удобни инструменти за отстраняване на грешки не са били до това, което може да се очаква - на изходното дневника в Serial. И това работи добре от главния * .ino файл и от свързани Leg.h - не виждам желания обект. Подувам патерици дневник (Facepalm). С течение на времето, Преструктуриране на. И тогава там е пролетта дойде, velosezon бе открит в пълна сила, а аз й дадох Sixpawed домашен любимец в килера. Така тя премина през лятото и топла част на есента.

Стъпка 13. Но валеше, беше студено, а hexapod бе отстранен. Краката му бяха променени, включително тази за функция изчисление _thirdQuarterFix polarAngle е въведена. Проблемът беше, че двата крака (от ляво на средна и задна лява) се движеха така, че през повечето време бяха в квартал III:

А polarAngle бях наивна - тя се връща ъгли от -pi да пи, спрямо оста X. И ако понякога на един от 2 крака, необходими, за да включите в квартал II-ри, polarAngle на стойност скача от -pi да пи, че всъщност имат отрицателен ефект върху последващото изчислението. Отстранен е патерица - за тези 2 polarAngle крака се считат за "по-различно." Засрами се, срам ме за кода, но на целия проект - доказателство за концепция, чиято единствена цел - лесно да се разбере, може ли да се съберат реалистичен hexapod движи или не. Поради това, че кодът трябва да работи, точно сега. И тогава редакции - pererefaktoring.

Той се справи с третото тримесечие, аз започнах да въртя педалите модели терен. За да направите това, пусната в Leg подразбиране точка клас, т.е. в която полите е, когато роботът не помръдва и прав. Тази точка може да бъде настроен, най-важното, че всички нозете са били на една и съща Z координата (с краката действително физически се намират на една и съща равнина, в крака има дори и най tuneRestAngles ниско ниво ()). И в рамките на същия Z координата, те могат да се движат почти всичко, което желаете. Почти - защото обхвата на движение не е безкраен, както и че когато стъпалото е не да се отиде отвъд това diapazoda - по подразбиране позиция на краката, които се опитват да поставят някъде по-близо до центъра на този диапазон.

Стъпка 14. Кодът тогава текстът вече не е цитат, че е твърде елементарно, и аз съм в края са линкове към пълната версия на всички sortsy - в същото време да научите как да използвате GitHub.

Последователността на етапите избран прости - 3 крака на земята, 3 - въздух дейонизирана. По този начин, координатите на краката спрямо позицията си по подразбиране - могат да бъдат разделени на 2 групи. За тези две групи, а аз извит стъпка в цикъла (виж функция разходка () в Buggy.ino). Но в крайна сметка, всеки крак измислили сами своите индивидуални координира, въз основа на позицията си по подразбиране.

Стъпка 15. Up-и огнище, разбира се, далеч. Но аз не съм свършил още) Popedalil друга вечер -. И добавя способността да се движат във всяка посока (но не и завъртане на тялото)) .. Плюс за изглаждане каза функция (smoothTo ()) между движенията, които леко се движи в подножието (издигат отново в 2 групи, едната от които е винаги в долната част, съществото стои върху него, докато другите се издига и се движи) до нова позиция. Необходимо е, че съществото не се дърпа рязко надолу, смяна на посоката (тази функция не е достатъчно, о, колко игрови персонажи от предишни години). И завтече бързо във всяка посока - странично, по диагонал:

И двете гранд sortsy файл може да видите тук. Давам линк към конкретна редакция, по време на това писание. Тъй като в бъдеще всичко може да бъде много по-различно.

Резултатите, които до този момент са:

- занитени hexapod - това е възможно;
- го напиша сам от нулата кинематика - също доста сила и да е (разработчик);
- бюджетът може да бъде минимална, единственото нещо, което наистина трябва да бъдат похарчени - това серво устройства; и така, ако има поялник, можете да направите всеки микроконтролер; че е по-удобно, отколкото по-скъпо, обаче;
- на Servakh по-добре да не се запазва, но и най-евтиният - работата;
- удовлетворяване на програмирането аз не са имали 9-годишен, когато за първи път видях в ZX Spectrum компютърната кръг, и за пръв път научих да пиша аплети за него; така kayfovo когато вашият код не е просто някъде да работят и нещо там някой показва и работи точно пред вас и изплаши котката.

В предната част на повече усъвършенствани алгоритми за плавно движение на тялото, и на безжичен контрол и батерии, разбира се.