Andrius Šutas’s blog Computer science is my lifestyle, electronics – hobby…

11Sep/0952

Rubik’s Cube Solving Robot (RDRK) (Project#2)

RDRK is acronym in my language (Lithuanian) for "Robotas Dėliojantis Rubiko Kubą". This is my second project involving microcontrollers μC (the zeroth was LED blinkie and the first one was RC5 decoder).

Intro:

Up to now I have used only atmel AVR microcontrollers, so this bot is no exception with: ATmega16. Firmware is written entirely in C, also avrlib library for timing/PWM/UART was used. Although program is written with wxWidgets (C++) library, it won't compile under Windows because the system calls in serial communication part, thought if you remove it, it should build with no hassle.

In action:

[Youtube]

The build:

Basic communication scheme: (USB-to-RS232 (PL-2303))->MAX232->UART

Power: for servos and logic I've used L7805 with big heatsink (and yes, at operation time it was necessity) and DSA-20R-12 switching adapter

Servos: 2xMG995's for main arms and  for 2xHXT900 "claws"

uC: atmega16; 7.3728Mhz; LF: 3f, HF: de

Other thoughts:

In order to use make with firmware you should export avrlib directory with:

export AVRLIB=/path/to/avrlib

Color recognition would be nice, but because it's easy to do (as in: no challenge) and some cross platform problems (Unix/Linux) with webCAM I didn't implement it (also partly because it's not intended for daily use, and You should know that programmers are lazy)

Any questions? ASK!

Source files (tl;dr):

Extra:

P.S. everything is under GNU GENERAL PUBLIC LICENSE.
Share:
  • Digg
  • del.icio.us
  • Facebook
  • Slashdot
  • Google Bookmarks
  • Reddit
Comments (52) Trackbacks (0)
  1. hooooooooooooooooooooooooly crap… dude, you are a frickin’ genius. :)

    Very very nice work.

  2. Hey, what are the mechanical parts made out of? Lasercut acrylic, vat grown SLA, or something else entirely?

  3. pretty awesome… nice gui showing the cube / moves. but dude, if your gonna go all out on this like you already have, finish the last 15, you gotta detect the colors on the cube from the camera when you seed it… :) good work man.

  4. wao!!!!
    great work!

  5. Hi, labai gražus darbukas:) priekaištų nebus, juk tu dar tik vidurinėje mokaisi, aš baigiau elektroniką ir truputį jos programavimo, tj mane werčia šis tawo darbas susimastyti:) tikrai labai gražu:)pagarba.

  6. Lietuvos ateitis :)

  7. Saunus darbas, bet galejai ka nors geriau sugalvot, nes tokiu projektu jau pilna uzsieni tad galejai ir koda nusivogti… bet vistiek nepatingejai…

    • Visų pirma, ačiū. Kiekvienas turi savo požiūrį kas yra gerai, o kas yra geriau, o ar pilna tikrai nežinau, pats asmeniškai žinau tik apie RuBot ir LEGO mindstorms robotukus šitam tikslui, dėl kodo vogimo: LEGO versija niekur nepaviešino nieko (t.y. yra tik filmukas jų), kitą vertus RuBot yra paviešinę išeities kodus, bet dabar pagalvok savo galva: jie naudoja python scriptą, aš c++ ir wxWidgets, mano algorirmas (kuris, beje, aprašytas plačiai wiki) yra layer-by-layer, jie (RuBot komanda) naudoja beveik optimalų sprendimą randantį algoritmą (kaip jie prisipažįsta, rašę ne patys), nė vienas kitas projektas neviešina roboto brėžinių, pas mane jie laisvai prieinami, taip pat mano dizainas nė iš tolo nėra panašus į jokį kitą (na bent kiek esu išvis matęs), manai jei vogčiau kitų kodą viešinčiau jį savo tinklalapy? Ne, nufilmuočiau ir viskas, jokių brėžinių, jokių software nei firmware išeities tekstų…

  8. Gaila, kad neplanuoji likti čia. Lietuvai reikia daugiau tokio jaunimo kaip tu :)

  9. Super!!!!! Šaunuolis Andriau!

  10. Tikrai gaila

  11. Neblogas darbas kaip tokio amziaus jaunuoliui tai labai saunu :)

    Man tik smalsu is kur gavai bazines zinais nes kaip priversti veikti atmega mokina tik univere tai gaunasi kad turejai gauti univero medziaga arba koks vyresnis brolis ismokino, nes tokiu dalyku taip paprastai neismoksi?

    • Dėkui.
      Na pradėsiu su klasikiniu teiginiu “Google is your friend”. Nei brolių, nei seserų neturiu. Bazines žinias dėl uC gavau grynai iš datasheet’ų ir tutorialų internete, taip, taip nebuvo paprasta. :] Aš toks žmogus, kad man parodžius kažką įdomaus (bet išskirtinai įdomaus man) aš „užsikabliuoju“, taip buvo su programavimu ir lygiai taip pat su mikrovaldikliais, kur tiksliai pamačiau pirmą uC tikrai nepamenu (bet tikrai jaučiu indėlį iš circuit.lt (mano pirmasis programatorius) ir elektronika.lt (mano nulinis projektas – mirksiukas)), o su programavimu supažindino JKM, o žinias gilinti ir plėsti padėjo (padeda) NMA.

      • tai taip iseina kad nelabai ka ismanai grandiniu lygyje? ar kaip?
        Nes tarkime as studijavau informatika ktu tai mane mokino grandiniu teorijos (itampu kritimai, varzu skaiciavimas ir kitos vingrybes) ir buvo kompiuteriu elementai pas kanapecka tai mokino elementares schemas konstruoti pvz registrus, trigerius ir dirbome su ispLever jei tokia girdejai :)

        dar teko paskaityti nakucio teorijos is cia
        http://www.msl.ktu.lt/people/nakutis/pradzia.htm
        ir kazkaip nizinau kaip pradeti dirbti su atmega mikroskemom ir kazkaip neteko susirasti saito kur butu rasoma kaip pradeti.

        As irgi daznai apsilankau apsilankau elektronika.lt
        Dar man idomi sritis auto diagnostika teko du menesius atlikineti praktika :)

        • Na matai, aš stengiuosi viską suprasti ne tik grandinių lygy, bet dar geriau – atomų, stengiuosi suprasti kaip ram’e saugomi bitai, kodėl dingus elektros įtampai jie neišsisaugoja, kodėl laidininkui kaistant jo varža didėja, o puslaidininkiui priešingai – mažėja ir pan. Dėl grandinių lygio man labai pasisekė, mano mokykla yra vidurinė, bet atėjo fizikos mokyti idėjinis profesorius (na jis pats sako, kad neapsimoka dėl tokio algos išvis daryti kažką, bet grynai nori palikti kažką po savęs). Tai jo dėka ne tik grandinių varžas, elektrovarą ar įtampų kritimus mokomės, o užgriebiam ir temų dėstomų tik universitetuose :] Tai ačiū Jam. O dėl pradėjimo su mikrovaldikliais tai labai stipriai patariu _neieškoti_ informacijos apie tai lietuvos tinklalapiuose, nes, kiek man yra žinoma, nieko padoraus dar nėra (pataisykit jei klystu).

          • o tai kokius uzsieninius puslapius galetai rekomenduoti?
            Nes man visiskai neaisku kaip parasius c programa irasyti i mikroschema ka reiktu nusipirkti ir panasus klausimais beto visai nemoku lituoti ir gaminti ploksciu :( kazkaip reiktu nuo kazko pradeti?
            Idomu kaip tu pradejai?

  12. Reiktų įdėti spalvų detektorių. Būtų daug fainiau. Dabar spalvų įvedimas labai erzinantis.

    O šiaip super. Pašarinau facebooke.

  13. hmm… saunus projektukas, idomei atrodo, butu idomu pamatyti nuotraukas kaip viskas atrodo is arti ;]

  14. Saunus darbas. Idomu ka savo bakalaurui sukonstruosi.. :D

  15. Ot saunuolis. Nacionaline premija tokiems gabiems Lietuvos jaunuoliams, kad ir toliau kurtu, bandytu, o ne i anglija kupru lenkti islektu.


Leave a comment


No trackbacks yet.