Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Ben (YouTube'da videoları ton idi) heksapoda inşa etmek fikri geldi nasıl rozkazni atlama, seçim süreci ayrıntıları doğrudan gitmek. Bu 2012 yılı Ocak oldu. Ben sadece benim iş ve ne gelen ne istediğimi biliyorum - hayır. Ben seviyorum:

 daha kolay bir seçenek 2dof olarak 3DOF (özgürlük 3 boyut), - - her bacak 3 serbestlik dereceleri olduğunu böcekler ve 4dof böyle bir duygu yapar - bir kez, 3DOF ve böylece özgürce 3D uzayda ayak ucu hareket etmesine olanak sağlar;
 6 metre. (Beceriksiz robot atlar ise), ancak 8 aşırı olan örümcekler gibi yine, bu 4 değil;
 küçük boy;
 maliyetle ucuz;
 panoları ve bağlantıları minimum.

 Aşama 1. İlk olarak, tabii ki, çocuk için anakart seçmek zorunda. Birçok iyi ve kötü zaman Arduino zamanına göre okumak için. Ama onun ve ana seçenek olarak izledi. Lehim denetleyicisi kendisi - orada hiçbir zaman ve örneğin, ARM işlemci ile daha gelişmiş tahta almak - pahalı ve nasıl kendi programlarını anlamak, PWM bulguları, vb ile çalışmak nasıl - uzun. Bir arduyna: IDE, başlatılan napedalyl kodu, preslenmiş yükleme - merhaba, bunu yanıp var. Güzellik! )
 İlk başta ben arduino mega ve klonlar bakmaya başladı, bu yüzden servo kontrol edilebilir PWM çıkışları yeterince vardı. Bu 3DOF heksapoda 3 * 6 = 18 serf ve komponent kanal yönetimini gerekir unutmayın. Ama sonra arduino mega arasında gerçek bir Yazz, Dagu bir ücret, Red Back Örümcek Kontrol çağrı bulundu. İşte o ebay üzerinde.
 Bu bitmiş 3-pin (arazi, gıda, ton), ve gıda çözümü olarak çıktılarının tüm sunuyor. Kontrol Gücü stabilize ve bağlayıcı olarak dvyhlov olan (UPD: değil nasıl, aynı zamanda 5 volt stabilize Ve görünüşe göre 18 eşzamanlı serfleri yapmayın kumanda ile müdahale olarak güç denetleyicisi ile çözüldü.). (901 den 12V ve 3A eee pc anket - 18 servo uğultu için yeterli oldu) Bu terminal 7-30 dosya gıda yeterli güç volt veriyor ve ayrı bir güç kaynağı ve mantık dvyhlov ile kandırıyorlar değil. Ayrıca, gelecekte bu canavar paketi Li-Po pil 7.4 volt koymak kolaydır olacaktır. Ve tüm bu bakış programatik noktası - Bu bir ortak arduyinov mega-uyumlu yazılım ve lybamy ve demir (- onlar işe yaramaz shyldov dışında, orijinal mega üzerine doğrudan monte) 'dir. Ancak fiyat bile orijinal Mega daha yüksek, ancak diğer tüm artılarını bunu ağır basmaktadır.
 Aşama 2. Sonraki servolar. Ebay mikro servo üzerinde onları çok farklı değildir. Ben ağırlığı, en küçük ve en ucuz 9 gram plastik dişli en güçlü aldı. Onlar toplu gönderirken nerede çok alırsan - ucuzdur. Ben 6 3 paket 2 dolardan daha az bir parça olmuş gibi görünüyor aldı. Ben daha geçirdi ve metal dişli ve rulman servo almayın pişman olduğunu anlatacağım. Aşırı kuvvet zaman vites atlar Bu plastikler oldukça dikkat çekici tepki, ve karakteristik krizi vardı. Çünkü tepkinin - (genellikle zor çıktı olduğu gibi) oldukça zor kinematik doğru ayarlamak için.
 Ben sipariş, hepsi teslim bunu yaklaşık 100 $ yaptım. Izleme ve radyoupravlyaemosty için Piller ve vericiler / alıcıları - sonrası için bıraktı. Ben ve gerçekten ilgimi merak değil, radyo kontrollü makine Çünkü - bu ayakları var! Ben, onu hayran izledim baktım, ve gözyaşları yanaklarından aşağı yuvarlanan her zaman, ve ben istiyorum "hırıltılı kısık - Videolar YouTube'da heksapodov sorunsuz gitmek! ". Ben bitmiş bir parça talep olmaz, ve ben yapmak istiyorum çoğu şey olduğunu!
 Kendi yarattıkları animasyon eğitimli insanlar olarak okumak için beklerken. Tabii ki, hemen ters kinematik yüzüne çıktı. Sadece ve doğrudan sharnytnыe "bacaklarda", doğrudan kinematik hakkında derseniz - Bu giriş köşeleri eklem teslim nerede ve çıkış biz uzayda bacağın bir modeli var, ekstremite aşırı noktalarının koordinatları. Açıkçası aykırıdır - - Ters kinematik olan giriş biz ulaşmanız gerekir ekstremitenin aşırı noktaların koordinatlarını aldı ve biz menteşeleri açmak için gereken açıları olsun çıktı Bunu gerçekleştirmek için. Servo tıpkı dönmek (bir sinyal kablosu kodlanmış PWM / PWM) için gereken girdi açısal pozisyon almak.
 Aşama 3. Ben okudum ki, birlikte, IC uygulanması yoluyla düşünüyorum başladı. Ama yakında duygu benim durumumda aşırı karmaşık geldi. Ve hantal hesaplama çok zor uygulamak ve - hesaplama yinelemeli olduğunu. Ve ben 6 bacaklar, her biri IC olarak kabul ve 16Mhts sadece çok akıllı değil Mimarlık AVR gerektiğini vardır. Ama özgürlük sadece 3 derece. Ve kolay dotyahuvannya keyfi noktası "tek bir yolu ulaşabileceği tahmin. Karar kafamda olgunlaştı.
 Çin'den bir başka İngiltere - Ama sonra Şubat ve koli geldi. Ben genellikle sadece arduyinov Pay pohravsya ilk şey - pomorhal popylykal LED ve bir hoparlör var bağlı. Sonra bezinde, gerçek IC uygulaması başladı. O (- kitleri aktüatörler tüm makas, vida ve ekleri ile kesmek kolay değil hafif plastmasska) hurda malzemelerden bir prototip ayak inşa Ne. Yönetim Kurulu arduynы doğrudan emniyete Bu terminatör bacak. İster bütçenize eklemleri nasıl yaptığımı düşünebilirsiniz.
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Pomyluvavsya Bu durumda ve insanlığa savaş ilan geleceğin spayayu sonlandırıcı, bu işi temelli eğer, daha sonra John Connor Schwarzenegger ile geçmişte burada bana dönecektir ve bu prototip ve Orodruyne onun rasplavyat seçecektir ki pomriyav. Ama kimse bir şey götürüldüğünü, geri geldi, ve ben sessizce gitti.
 Aşama 4. Bu IR korku gerek olmadığı tespit edildi, benim durumumda bu önemsiz geometri, trigonometri indi. Eklemlere uygulamak kolay, Wikipedia döndü ve böceklerin onur. Onlar ekstremite için özel isimler var:
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Rus de bu onun çok ilginç isimler var, ama "kase", "vertluh", "bacak", vb kod uyumama izin vermedi. Yani 3 uzuvlar ve ilgili servo izni adı Coxa, Femur, Tibia. Prototip ayakları yukarıda bile ayrı parçalar koksa zorunda değilsiniz göstermektedir. Sadece iki servo bağlı elastik bantlar var. Femur - her iki taraf kolları serf monte edilir plastik bir şerit, uyguladı. Böylece, son kalan servodvyzhok - tibia başlangıcı, hangi plastik bir parça cıvatalı uzatmak için.
 Aşama 5. Editörü değil, dosya Leg.h oluşturulan mudstvuya ve sınıf Bacak başlatılan. Ve yardımcı Muti bir demet. Ulaşmalıdır uzay A (balta, ay, az) bir nokta vardır varsayalım. Üst görünümü bu gibi görünüyor:
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Şekil I, doğrudan birinci açının hesaplanması için bir yol göstermektedir - servo dönme açısı, yatay bir düzlemde tüm kolu döner Coxa kontrol eder. diyagram hemen kodu (hepsi değil) kullanılan kırmızı değişkenleri işaretlenmiş. Değil çok matematiksel, ama rahat. Biz ilgilenen köşe ilköğretim are olduğu açıktır. İlk primaryCoxaAngle - sadece açı (0; A) (kutupsal koordinatlarda bir köşe noktasına denk) ekseninin X. Bu noktada raspalozhena değil - ama diyagram bacak kendisi ise gösterir. nedeni coxa dönme ekseni "sıraya" değil olmasıdır - Ben doğru söylemek bilmiyorum. Değil düzlemde olan döner eklem ve diğer burada, 2 metre ucu. (O kabul gibi - hatta utruzhdayus durağı, okulda hala çünkü?) Bu kolayca additionalCoxaAngle düşünüyor telafi edilebilir.
 Birlikte, ilk kod parçası, bu yöntem içi ulaşmak (Point & dest) var:

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

 İşte dest - donanım koordinatları (ve dönme merkezi) coxa, hDist içinde _cStart mesafeden yatay düzlemde dest düşünün - bu nazho sürükle, _cStart noktasıdır. (Nadiren, ama o olur - - yere doğru dönme coxa ekseninde dest gibi) - DONT_MOVE bu koksa açmak ve mevcut konumunu terk etmek hiçbir gerek yok demektir, sadece bir bayrak, var. İşte cAngle - bu servo (kendi çalışma aralığının ortasında olan) orijinal açıdan sapma olacak istediğiniz bir köşesidir. Yükleme sırasında, servo devoltu tarafından döndürülen alanı, açı - bu yuzaetsya _cStartAngle olarak görülebilir. Eğer unutma eğer _thirdQuarterFix Hakkında tell you later.
 Aşama 6. Sonra işler daha kolay olsun. "Hizaya" Biz sadece yukarıda belirtilen düzlemde bakmak gerekir:
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Böylece, sorun aniden 2 çevrelerin kesişim noktasını bulma düşürüldü. Tek - noktaya nerede "büyüyen" Bizim femur, ikinci - biz (2d yerel koordinatları) ulaşması gerekir gelin. çevrelerin yarıçapı - sırasıyla femur ve tibia, uzunluğu. Daireler 2 puan birinde kesişen ortak yerleştirilebilir. Biz her zaman üst canavarlara "diz" değil, aşağı yukarı eğilip seçin. Üst üste değilse - bu hedef noktasına dotyanemsya değildir. , Uçağa geçiş küçük bir kod basitçe sadece tuzaklar bir çift ben şaşkın sonra kodu inceleyerek değil sahip açıklamalarda dikkate alınır ve belgelenmiştir olduğunu. Kolaylık olması açısından, bu yerel femur büyüyen nerede başlangıç ​​noktasını seçtim "uçağı" koordinat:
  // Koordinat sistemi, yerel Coxa-Femur-hedef Hareketli
 // Zaman davayı hDist Not<= _cfemuroffset.="" this="" is="" for="" the="" blind="">
 // Daha sonra yakın _cStart olan noktaya ulaşamaz asla
 Ofset // Femur (_fStartFarOffset)
 yüzer localDestX = hDist sqr (_fLength + _tLenght))
 {
 ("ulaşamaz!") log;
 return false;
}

 Aşama 7. Şimdi localDestX ve localDestY - Hedef noktasının koordinatları. Geriye kalan tek şey - kesişim (00) merkezli daireler ve (localDestX, localDestY) bulmak, ve yarıçapları _fLength ve _tLength (sırasıyla uzunluk ve femur uzunluğu tibia). Bu öğrenci ile de başarısız, ama bu temel geometrik sorunu net razzhovana bir başvuru bırakarak, dilsiz formüller ne tür kontrol için yapabileceğiniz kendiniz ve herkes kontrol etmek için birçok hatalar vardır itiraf:
  // Daire olarak ortak (http://e-maxx.ru/algo/circles_intersection & http://e-maxx.ru/algo/circle_line_intersection gelen denklemler) kesiştiği bul
 şamandıra A = -2 * localDestX;
 B yüzer = -2 * localDestY;
 yüzer C = sqr (localDestX) + sqr (localDestY) + sqr (_fLength) - sqr (_tLenght);
 Şamandıra X0 = -A * C / (sqr (A) + sqr (B));
 yüzer Y0 = -B * C / (sqr (A) + sqr (B));
 yüzer D = sqrt (sqr (_fLength) - (sqr (C) / (sqr (A) + sqr (B))));
 Daha fazla = sqrt şamandıra (sqr (D) / (sqr (A) + sqr (B)));
 şamandıra balta, ay, bx, by;
 ax = X0 + B * mult;
 B * mult - bx X0 =
 ay = Y0 - Bir * mult;
 = Y0 + A * portlu tarafından;
 Ortak olarak üst // seç çözüm
 jointLocalX = (ax & gt; bx) yüzer? balta: bx;
 jointLocalY = (ax & gt; bx) yüzer? ay: by;


 Femur ve tibia serf için uygun açıları hesaplamak için alınan koordinatlar biraz hala her şey:
  primaryFemurAngle = polarAngle (jointLocalX, jointLocalY, false) yüzer;
 Fangle = primaryFemurAngle yüzer - _fStartAngle;
 (jointLocalY, yanlış - - jointLocalX, localDestY localDestX) primaryTibiaAngle = polarAngle yüzer
 şamandıra Arapsaçı = (primaryTibiaAngle - Fangle) - _tStartAngle;

 Aşama 8. Yine эlementarschyna - açısal bütün koordinatları. Bu açı, femur varsayılan yönettiği açıyı başlangıç ​​femur - Ben örneğin, _fStartAngle, adlandırma değişkenler zaten açık olmalıdır umuyoruz. Ve son satırı yöntemi ulaşmak () (o gitti ve el salladı söyledi):
  hareket (cAngle, Fangle, arapsaçı); 

 Yöntem hareket doğrudan servo yazıyor. Aslında, o zaman bile (servo iade edemez, ancak çalışacağız) kötü açıları, yanı sıra zarkalno ve / veya diğer tarafa gönderilen diğer bacaklar korunmak için her türlü şeyi eklemek zorunda kaldılar. Ama sürece biz bir pençe ile sadece iş olarak.
 Aşama 9. Bu parçalar - bu mükemmel olmaktan uzak son kodu, ve kesinlikle önemli ölçüde geliştirilmiş olabilir. Ama çalışıyor! 3DOF ayaklar için lise geometri, trigonometri, biz hayata geçirdik polnofunktsyonalnuyu ynversnuyu kinematik için gitti Asla! Evet, ve biz hemen, bir yineleme çözüm olsun. Hepsini işi yapmak için, bacak dikkatle ölçülmüş ve elde edilen sınıf verilerini yapılandırmak gerekiyordu. En zor bitmiş üründe ölçmek için açısı da dahil olmak üzere. Bu açıların ölçümü ile daha kolay olurdu, ama bu duygu ile başa çıkmak için zaman ya da arzusu yoktu - Bir proje avtokad ve yapmak Belki bazı güzel işler.
 Şubat sadece başladı, ve videolar ayak zaten yapıldı. IC test etmek için, ben (sen sürekli donuk ve sıkıcı dikdörtgen veya daire kodu noktayı kaçınarak, ulaşmak tetikleyebilir, bu nedenle, ben temel öğeler izlemek için değil teklif (ve bitmiş deney yapmak zorunda bacak uzayda rakamlar her türlü tarif yaptı Genel vypylyav)):

 Aşama 10. Sonra (bu robot gerçekten ilginç kılacak rağmen) uprыhaesh değil tek bacak üzerinde bu ürünle ile oyun bitirmek zorunda kaldı. Ama heksapod ihtiyacım var. Ben yakın bit pazarı Pleksiglas aramaya gitti. Bulunan 2 farklı parçalar - Bir 3 mm (sadece vücut için, ben düşündüm) kalın, başka bir 2 mm ve mavi (diğer uzuvlar, servo maç). Birkaç hafta içinde onunla bir şeyler yapmak için bir gece dışarı oyulmuş. O kağıt üzerinde skeçler yaptı. Bir demir testeresi için herşey yolunda gibi, o durumda - denedi.
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Aşama 11. Ve burada yurtdışı canavar shestylapoe vardır. Ben bir bacağı test ederken, ben bu şey bir şekilde dış vidalar üzerinde anket sol vardı. Yeterli. Ama ondan beslemek 6 metre çok korkutucu oldu. Bir süre Yani ben daha uygun bir anket almak gerektiğini düşünerek, ellerini kapattı. Ama yukarıda bahsettiğim, çok daha kolay çıktı - Anket eee pc 901 Eh, ince geldi.
 Adım 12. Bir ayak motoru yazmak daha iş kurmak 6 metre daha zor oldu. Yarım bacaklar, diğer ayna görüntüleri vardı. Ayrıca tüm farklı yönlere amaçlanmıştır. Genel konfyhuryroval nalashtovuvav ve ben çok uzun ve çok ilham verici değildi, bu yüzden para rahat ayar, ben bekliyor olabilir maksimum değildi - sonuç Losa Seri. Ve bu temel * .ino dosyası, bağlı Leg.h ile iyi çalıştı - öğe görmedim. Losa (Facepalm) için saatli koltuk değneği. Sonunda otrefaktoryu. Ve burada bir yay velosezon tam güçle açıldı, ve ben dava shestylapoho içinde hayvan verdi geldiği. Yani yaz ve ısı sonbahar geçti.
 Aşama 13. Ama yağmurlar, geldi soğuk ve heksapod ekstre edildi. Ayakları aynı tanıtıldı _thirdQuarterFix fonksiyonu hesaplama polarAngle dahil, kurulmuştur. Sorun 2 metre (sol orta ve arka sol) çoğu zaman III çeyreğinde vardı ki hareket oldu:
Topladığımız ve kuvvetler bütçe heksapoda çalıştırmak

 Bir polarAngle Ben naif oldu - bu eksen X için pi-pi köşeleri döndü Ve bazen bu 2 metre bir II-nd çeyreğinde dönmek zorunda, değer polarAngle Pi adlı Pi atladı aslında daha hesaplama üzerinde olumsuz bir etkisi vardı. Pofyksyl koltuk değneği - Bu 2 ayak "farklı." Olarak kabul polarAngle Utanç, bana utanç kodu, ancak tüm proje - anlayışının bir kanıtı, tek amacı - sadece ben gerçekçi heksapoda hareketli ya da toplayabilir, anlıyorum. Bu nedenle, kod şu anda çalışması, ve olmalıdır. Sonra refactor - pererefaktorynh.
 3. çeyrek ile Cope, adım desenleri pedal başladı. Hangi ayak çalışmaları sessizce ve sorunsuz olduğu, nerede olduğu nokta Bacak varsayılan tanıtılan bu sınıf için. Bu nokta, tüm ayaklara önemli aynı koordinat z vardı, tyuninhuvaty olabilir (aslında fiziksel olarak aynı düzlemde olan bacaklar ile, Bacak hala çok düşük düzeyde olduğunu tuneRestAngles ()). Ve aynı koordinat Z, onlar hakkında keyfi hareket edebilir. Neredeyse - hareket aralığı sonsuz değildir, ve sırayla bu dyapazoda ötesine gitmeyecek çünkü - bu aralığın ortasına yakın bir yerde yere çalışıyor ayak varsayılan konumunu.
 Aşama 14. Kod alıntı metninde değil, çok temel ve tüm sortsa tam sürümü için bir bağlantı sonunu getirecek - Aynı anda GitHub kullanmayı öğrenirler.
 Yere 3 metre, 3 - - yeniden düzenlenmiş havada Sıra basit bir adım seçti. Bu nedenle, varsayılan konumuna ayak koordinatları - 2 gruba ayrılabilir. Döngüsünde bu iki grup I ve provertav aşama (Buggy.ino özellik yürüme () bakınız) için. Ve sonunda, her bacak varsayılan konuma göre kendi bireysel, koordine bir hesapladı.
 Ve o gitti! Ama şimdiye kadar ileri. Yanlış muşamba üzerine kaydırdı onun ayakları üzerinde o lastik bantlar giydi. Ben arkadaşlara göstermek için videonun üzerine ateş koştu.

 Aşama 15. Tabii, uzak ocak-ve, tarafından.