Roboto logika

robot-logic-main-cut

Pagaliau atrodo pavyko parašyti tokį kodą, kad mano robotas važinėtų po kambarį išvengdamas kliūčių be jokios pagalbos. Pradėsiu nuo teorinės dalies: roboto logika.

Roboto navigacijos tikslas buvo paprastas: aptikus kliūtį apsidairyti, surasti laisvą kelią, pasisukti į tą pusę ir toliau važiuoti nauju keliu iki kitos kliūties. Aš esu iš tų programuotojų, kurie daugiau stengiasi panaudoti jau kažkieno sukurtus algoritmus ir idėjas, bet šiuo atveju man nepasisekė: niekur negalėjau rasti man tinkamo jau sukurto kodo todėl teko viską kuri pačiam nuo nulio. Sudėliojus pradinį logikos variantą viskas atrodė nesudėtinga, bet realiai susidūriau su keletu labai įdomių iššūkių. Skaityti toliau

Robotas iš žaislinės mašinėlės

IMG1716

Šį šeštadienį lankiausi Birmingemo Howduino – vienos dienos hakerių susitikime. Nelabai žinojau ko tikėtis iš tokio tipo įvykio, todėl ir važiavau be jokios išankstinės nuostatos. :) Po trumpo organizacinio pristatymo apie 11 val. ryto prasidėjo darbas: vieni dalyviai išsiskirstė į mokymo grupes, kiti ėmėsi dirbti prie savo projektų.

Mano užduotis

Mano tos dienos tikslas buvo šią radijo bangom valdomą mašinėlę paversti į kliūtis apvažiuojantį robotą.

IMG1710

Skaityti toliau

Microsoft Lietuva: apie piratų gaudynes nieko nežinojome

Absurdas! Ką tik paskelbtame 15min.lt straipsnyje Microsoft Lietuva teigia:

<…> šie konkretūs veiksmai su „Microsoft Lietuva“ niekaip nebuvo derinami, LANVA veikė taip, kaip suprato esant reikalinga. <…>

Taigi, LANVA apsimelavo, nes neturėjo oficialios teisės atlikinėti šį reidą. Jeigu neturėjo oficialaus leidimo, tuomet buvau teisus, kad sekdami vartotojus jie patys buvo platintojai ir tokie pat piratai, kuriuos jie bando pagauti.

Kuo toliau, tuo labiau ši istorija darosi komiška. :) Kiek žinau, Linkomanija davė LANVA’ai atkirtį: pagal jų svetainės taisykles antipiratinės veiklos asociacijos negali naudotis linkomanija.net paslaugomis.

Laukiam tęsinio ir patyliukais kikenam. :)

LANVA prieš internetą: karas tęsiasi

microsoft-eula-search

Internete ir toliau aršiai verda diskusijos dėl LANVOS bandymų pažaboti piratavimą. Omnitel naujienų grupėse radau asociacijai užduotą klausimą ir LANVA pirmininko Vyto Simanavičiaus atsakymą. Kas uždavė klausimą nežinau ir tai nėra labai svarbu, mums labai įdomūs atsakymai. Pusė atsakymo – kliedesiai, nes pirmininkas pats nesupranta kuom remiasi P2P tinklai. Tam, kad galėčiau konstruktyviai diskutuoti, parsisiunčiau iš Microsoft oficialią Windows 7 Ultimate licencinę sutartį Windows 7_Ultimate_English.pdf. Kitos Windows 7 licencijos versijos yra panašios todėl pasinaudosiu šia.

Vytas Simanavičius: <…> Del atsisiuntimu- 6 proc. uz tuscias laikmenas mokame uz tai, kad asmeniniais tikslais atsigaminame is teisetos kopijos sau viena kopija. Uz nieka kita nemokame.

O čia tai naujiena! 6% mokame praktiškai už orą, nes Microsoft (ir kitos programinės įrangos kompanijos) suteikia teisę pasidarytiprograminės įrangos atsargines kopijas savo asmeniniams tikslams visiškai nemokamai.

Microsoft EULA: 10. BACKUP COPY.

a.  Media. If you acquired the software on a disc or other media, you may make one backup copy of the media. You may use it only to reinstall the software on the licensed computer.
b.  Electronic Download. If you purchased and downloaded the software online, you may make one copy of the software on a disc or other media in order to install the software on a computer. You may also use it to reinstall the software on the licensed computer.

Aiškiai parašyta: galima darytis kopijas. Toks įstatymas, kur apmokestinami legalūs dalykai gali praeiti tik Marijos Žemėj. Skaityti toliau

Roboto važiuoklė

rc-car

Vakar blusų turguje visai atsitiktinai vos už £4 pagaliau suradau būtent tokį žaislą, kuris idealiai tinka perdarymui į savaeigį robotą. Šio žaislo kiekvienos pusės ratų eilę valdo atskiras varikliukas, todėl jis turi galimybę vietoje apsisukti 360 laipsnių kampu.

rc-car-disassembled

Nuotolinio pultelio valdymas labai primityvus: tik į priekį, atgal, suktis į kairę ir į dešinę be jokios greičio kontrolės. R/C imtuvas bus atsargiai išmontuotas ir tikriausiai panaudotas kokiam nors kitam mano projekte. Įdomu tai, kad viduriniai ratai specialia ašimi sukasi aplink priekinius ratus, so sukimasis valdomas atskiru varikliuku, todėl mašina gali važiuoti ir nelygiu paviršiumi.

dsc02339

Oj kaip dabar trinu rankomis. :)

Arduino MEGA ir atstumo detektorius

arduino-range-finder

Kaip ir žadėjau toliau tęsiu eksperimentus su davikliais. Prie jau pajungto LCD ekrano prijungiau SRF05: ultragarsinį atstumo detektorių, kuris bus roboto rega ir leis neatsimušti į kliūtis. Įrenginys yra tos dvi „akys“ schemos dešinėje viršuje. Veikimo principas nesudėtingas: garsiakalbio pagalba siunčiams aukšto dažnio (40 kHz) garsas ir mikrofonas laukia kol nuo netoliese esančio daikto sugrįš aidas. Kai tik aidas sugrįžta išmatuojamas laikas kiek toks procesas užtruko ir atstumas grąžinamas atgal į Arduino kaip impulso trukmė daviklio išėjime. Visa tai vaizdžiai atrodo taip:

YouTube Preview Image

Pagaliau nuspirkau FireWire kabelį. Dabar savo eksperimentus galiu filmuoti su DV kamera ir kokybė nepalyginamai geresnė nei nei filmuojant su telefonu.

Kodo galabaliukas, kuris veikia mikroprocesoriuje:

// include the library code:
#include <LiquidCrystal.h>

#define echoPin 6             // the SRF05's echo pin
#define initPin 7             // the SRF05's init pin
unsigned long pulseTime = 0;  // variable for reading the pulse

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
 // set up the LCD's number of rows and columns:
 lcd.begin(16, 2);

 // make the init pin an output:
 pinMode(initPin, OUTPUT);
 // make the echo pin an input:
 pinMode(echoPin, INPUT);
}

void loop() {
 digitalWrite(initPin, HIGH);
 delayMicroseconds(10);
 digitalWrite(initPin, LOW);

 pulseTime = pulseIn(echoPin, HIGH);

 lcd.setCursor(0,0);
 lcd.print(pulseTime / 58, DEC);
 lcd.print("cm");

 delay(100);
 lcd.clear();
}

Kas 100 milisekundžių programa nusiunčia impulsą į SRF05, sulaukia iš jo atsakymo ir rezultatą parodo LCD ekrane.

Su šiuo davikliu galima sukonstruoti labai įdomų instrumentą pavadintą theremin. Net nežinau kaip jis verčiasi į lietuvių kalbą. Principą yra lengviau pademonstruoti, negu paaiškinti:

Flickr Video Flickr Video

Daugiau informacijos apie instrumentą su Arduino:

Roboto kūrimas eitųsi kur kas greičiau jeigu pažingsniui nebloginčiau visko ką darau, bet aprašymas tebūnie irgi proceso dalis. :) Galite matyti kaip sekasi mokintis.