Quadropod, jeb četrkājainais robots
Piedalīties diskusijā par šo rakstu
Vēlējos pastāstīt par diezgan sen sākto projektu: uz četrām kājām staigājošo robotiņu. Protams šādam mošķim reālā dzīvē ir ļoti maz (gandrīz vispār nav) praktiska pielietojuma, tāpēc var teikt, ka šis robots ir domāts kā izklaides projekts. Robota izveide aizņēma vairāk laika, nekā bija plānots un turpinās jaunu ideju realizācija šajā robotā, jaunu programmu ieviešana, utt.
Galvenā sākuma doma bija radīt staigājošu robotu, kas varētu pārvietoties uz 4 kājām izmantojot tiešo kinemātisko uzdevumu (forward kinematics, sīkāk skatīt http://en.wikipedia.org/wiki/Forward_kinematics), jeb pārvietoties ,kustinot un pārvietojot servo iepriekš definētos stāvokļos, ko varētu izrēķināt ar elementāras ģeometrijas palīdzību un piekoriģēt uz aci. Robotiņam ir pielikti dažādi sensori (infrasarkanais SHARP attāluma mērītājs, fototranzistori, galaslēdži, trokšņa līmeņa indikators) lai tas spētu autonomi pārvietoties pa telpu un ,piemēram, apiet šķēršļus, un platīte attālinātai vadībai cauri infrasarkano TV pulti (ar RC5 un SIRC protokoliem).Kādreiz arī fantazēju par iespēju pamēģināt realizēt gaitu ar inverso kinemātiku (inverse kinematics), izmantojot PC, taču sapratu, ka līdz tam vēl tālu J . Robota mehānika un elektriskās shēmas ir pabeigtas un samontētas, priekšā palika pats laikietilpīgākais un interesantākais posms – programmēšana. Līdz šim esmu realizējis ļoti elementāru pārvietošanās kodiņu, bet laika trūkuma dēļ programmēšana ir ievilkusies.
Tehniskais apraksts: Mehānika
Patreiz neesmu sastādījis sīku tehnisko aprakstu un shēmas/ rasējumus, taču ir doma to darīt pēc programmēšanas darbu beigšanas (ja publikai būs interese). Tātat robotam ir 4 kājas ar 3 brīvības pakāpēm (degree of freedom) un kopā robotā ir izmantoti 13 servo , jeb 12 servo priekš kājām un 1 priekš SHARP infrasarkanā sensora. Servo motori tika pasūtīti no šīs mājaslapas: http://www.mindsetsonline.co.uk/index.php?cPath=13_530 , kurā starp citu ir daudz dažādu, interesantu sīkumu.
Dynam firmas servo motors ar parametriem:
Weight: 34g
Torque: 56.9 oz-in (at 6V) (aptuveni 4.8 kg/cm ja nemaldos)
Speed: 0.16 sec/60 degrees (at 6V)
Size: 55 x 20 x 45mm
Par šiem servo neko sliktu nevaru teikt, tiem ir labs griezes moments un pieņemama cena, vienīgais gabarītos šie ir par pārs milimetriem lielāki, nekā tie, kurus lietoju līdz šim.
Attēlā augstāk var redzēt mana robota karkasu, kas ir diezgan masīvs salīdzinot ar tirgū pieejamajiem robotiem Phantom X. Kā redzams, es speciāli uztaisīju īsākus posmus kājām( spēka plecus), vai nezaudētu dārgo spēka momentu no motoriem, jo korpusu taisīju no PLEXIGLASS plāksnes un alumīnija . Kā arī tas palīdzēja samazināt strāvu, ko patērē servo.
*Phantom X quadropod robots
Visa šasija robotam tika izgriezta ar rokas instrumentu palidzību. Pašam man ir pieeja pie CNC darbagaldiem un CAD programmatūru arī pārzinu un lietoju, taču būvējot robotu idejas nāk galvā uz vietas un visa mehānika ir improvizēta, taču darbojas viss labi. Masa robotam bez baterijām sanāca liela, aptuveni 1,1 kg, bet pateicoties īsajiem spēka pleciem motori tiek galā ar šo smagumu. Šī mošķa barošanai pagaidām lietoju 2 atsevišķus akumulatoru blokus – logikas barošanai un motoriem. Iepriekš centos iztikt ar vienu bloku, taču vidējā strāva kas plūst caur servo parasti ir ap 1,1 A (daudz gan) un ar pīķiem līdz 1.6 A pie slodzēm( ja piemēram uzspiež uz robota), kas nomet spriegumu tik zemu, ka elektronika izslēdzas ārā.
Tehniskais apraksts: Elektronika
Kā smadzenes robotrā kalpo Arduino Duemilonove mikrokontroliera platforma.
Kaut gan ir nācies darboties arī tīri ar Atmegām, man iepatikās Arduino vidē pieejamās bibliotēkas, kā arī manā skapī tāpat mētājās lieka platīte, ko iepriekš lietoju tikai izmēģinājumiem. Galvenais ir arī tas , ka “servo.h” bibliotēka ļauj reāli pie visām digitālajiem piniem pieslēgt servo. Interesanti ir tas, ka bibliotēka it kā oficiāli ļauj līdz 12 servo pieslēgšanu, taču es biju definējis joka pēc 14 servo (visus digitalos pinus lietoju priekš servo). Tad nu 13 servo motori tika pieslēgti pie arduino digitālajām kājiņām. Secību var apskatīt zemāk:
Klāt pie Arduino tika pieslēgts arī infrasarkanās vadības relejs, ko var slēgt iekšā/ ārā ar TV pultīm, kuras lieto RC5 un SIRC protokolus. Šāds 8 kanālu programmējamais relejs ir pieejams Argusā http://web.argus.lv/shop/productinfo/AVT390B%2B/hwindex.htm un cenas ziņā ir ļoti labs.
Līdz šim es biju domājis izveidot šim robotam 3 vadības režīmus, kuros robots lietoju tikai daļu savu funkciju:
1. vadības režīms – autonomais šķēršļu pārvarētājs. Šādā režīmā robots lietotu tikai SHARP attāluma sensoru, un galaslēdžus kāju galos, vai varētu mēģināt šķērsot istabu taisni, ja tam priekšā būtu dažāda augstuma šķēršļi.
2. rotaļu dzīvnieciņa simulācija – bija doma robotu padarīt interaktīvu un izmantojot trokšņu līmeņa indikatoru un fototranzistorus, lai to varētu piemēram pastaigas vidū “nobiedēt”ar plaukšķi un tas mestos meklēt tumšāko stūri.
3. tālvadības režīms – vadīt ar pults palīdzību robotu, kurš sekotu uzdotajām komandām.
Attāluma sensors ir šāds http://web.argus.lv/shop/productinfo/GP2D120/hwindex.htm
Un to pieslēdzu pie analogās ieejas.
Interesantāks ir manis paša veidots trokšņu līmeņa indikators, kas sastāv no elektret mikrofona pastiprinātāja, kas apvienots ar komparatoru un komporatora izeja pieslēgta pie kondensatora, kas savukārt paralēli pieslēgts analogajai kājai. Tas tika darīta ar mērķī, lai varētu noķert laikā īso signālu no komparatora. Varbūt kādam tas šķitīts diezgan murgains risinājums, bet tas ir tāpēc, ka man bija doma ielikts RS trigeri pēc komparatora, taču, nejauši to sabeigdams es izvēlējos primītīvāku risinājumu – kondensatoru, kas neļauj spriegumam uzreiz pazust. Zemāk ir redzamas ne pārāk kvalitatīvi attēlota shēma:
Tehniskais apraksts: Programma
Šajā sadaļā es neko vērtīgu nevaru vēl ievietot, taču pacentīšos to drīz labot.Vienīgais varu Jūsu uzmanībai piedāvāt video (sliktas kvalitātes) ar gaitas izmēģinājumu:
Ja kādam interesē šis ir kods elementārakajai gaitai.
#include <Servo.h>
Servo myservo0; Servo myservo1; Servo myservo2; Servo myservo3; Servo myservo4; Servo myservo5;// create servo object to control a servo
Servo myservo6; Servo myservo7; Servo myservo8; Servo myservo9; Servo myservo10; Servo myservo11;
int lenkis1 = 55;
int lenkis2 = 135;
int lenkis3 = 50;
int lenkis4 = 130;
int lenkis5 = 22;
int lenkis6 = 158;
int lenkis7 = 60;
int lenkis8 = 140;
int lenkis71= 61; //korekcijas lenkis 7
int lenkis9 = 50;
int lenkis10 = 130;
void setup()
{
myservo0.attach(0);
myservo1.attach(1);
myservo2.attach(2);
myservo3.attach(3);
myservo4.attach(4);
myservo5.attach(5);
myservo6.attach(6);
myservo7.attach(7);
myservo8.attach(8);
myservo9.attach(9);
myservo10.attach(10);
myservo11.attach(11);
myservo0.write(lenkis1); // nostadam robota kajas izejas pozicija
myservo1.write(lenkis2);
myservo2.write(lenkis1);
myservo3.write(lenkis2);
delay (1000); // pacelam robotu
myservo8.write(lenkis3);
myservo9.write(lenkis4);
myservo10.write(lenkis4);
myservo11.write(lenkis3);
delay (400);
myservo4.write(lenkis3);
myservo5.write(lenkis4);
myservo6.write(lenkis4);
myservo7.write(lenkis3);
delay (3000);
}
void loop() // trot gaita
{
myservo7.write(lenkis5); // pacelt 4 kaju
myservo11.write(lenkis5);
myservo5.write(lenkis6); // pacelt 2 kaju
myservo9.write(lenkis6);
delay (80);
myservo0.write(lenkis9); // pagriezt nolaisto 1 kaju
myservo2.write(lenkis71); // pagriezt nolaisto 3 kaju
myservo3.write(lenkis8); // pagriezt pacelto 4 kaju
myservo1.write(lenkis10); // pagriezt pacelto 2 kaju
delay (100);
myservo5.write(lenkis4); // nolaist 2 kaju
myservo9.write(lenkis4);
myservo7.write(lenkis3); // nolaist 4 kaju
myservo11.write(lenkis3);
delay (180);
myservo6.write(lenkis6); // pacelt 3 kaju
myservo10.write(lenkis6);
myservo4.write(lenkis5); // pacelt 1 kaju
myservo8.write(lenkis5);
delay (80);
myservo1.write(lenkis8); // pagriezt nolaisto 2 kaju
myservo3.write(lenkis10); // pagriezt nolaisto 4 kaju
myservo2.write(lenkis9); // pagriezt pacelto 3 kaju
myservo0.write(lenkis7); // pagriezt pacelto 1 kaju
delay (100);
myservo4.write(lenkis3); // nolaist 1 kaju
myservo8.write(lenkis3);
myservo6.write(lenkis4); // nolaist 3 kaju
myservo10.write(lenkis4);
delay (180);
}
















Vienu brīdi gandrīz pieķēros taisīt hexapod – seškāju brīnumu (iedvesmas video – http://www.youtube.com/watch?v…..yBiECoS3Q), bet atturējos. Quadropod – četrkāju man šķiet nestabils, ļoti jāpiedomā pie kustībām. Lai veicas programmēšanā!
nu tā tas ir ar četrkājiem – tiem ir dinamiski nestabila kustība, jo pārvietošanās laikā masas centrs ( ko nosacīti pieņem robota vidū, ja robots ir simetrisks un ar baterijām pašā vidū)bieži vien ir uz pašas plaknes robežas, ko definē 3 nolaisto kāju stāvoklis. arī manā video var redzēt ka viņš svārstās, kad ir uz 3 kājām, taču tas jau ir vesela pētnieciskā darba vērts materiāls.
redz kur viens no labākajiem planētas 4kājainajiem robotiem: http://www.youtube.com/watch?v…..1czBcnX1Ww
p.s. KasparsL ,zenta vispār baigais vecis :) iečeko viņa jaunāko veikumu: http://www.youtube.com/watch?v…..ature=plcp
ibot teica:
Šito biju redzējis (tā testi arī interesanti), bet tur bez jaudīga skaitļojamā, spiediena sensoriem un vairākiem akselerometriem un žiroskopiem neiztikt.
Kādas bija aptuvenās izmaksas?
šādu štruntu uztaisīt ir diezgan dārgi. man pagaidām sanāca ap 105Ls ,bet domāju, ka ja pilnībā visu pirkt ebay (arduino, servo, SHARP sensoru), tad sanāks lētāk.ja galīgi negribas čakarēties, tad var mēģināt nopirkt kādu no komplektiem šeit. http://www.lynxmotion.com/c-1-…..ducts.aspx
Leave your response!
You must be logged in to post a comment.
Sākums | Visi Raksti | DIY Raksti | Pasākumi | Noteikumi | Forums
© 2010 Argus Radiodetaļu Tirdzniecība SIA | Web izstrāde Kārlis Baumanis