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:

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

59 Responses to “Rubik’s Cube Solving Robot (RDRK) (Project#2)”

  1. SolemnDusk says:

    hooooooooooooooooooooooooly crap… dude, you are a frickin’ genius. :)

    Very very nice work.

  2. Wade says:

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

  3. Adam says:

    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. ash says:

    wao!!!!
    great work!

  5. Robert S. says:

    Good for you, much respect

  6. Viejex says:

    Truly amazing. Congrats!

  7. Jon says:

    Very nice.

  8. FMeskas says:

    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.

  9. ananonimas says:

    Lietuvos ateitis :)

  10. Prog says:

    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ų…

  11. Andrius says:

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

  12. Justas says:

    Super!!!!! Šaunuolis Andriau!

  13. Baltasis_patriotas says:

    Tikrai gaila

  14. Giedrius says:

    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.

      • Giedrius says:

        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).

          • Giedrius says:

            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?

  15. Mangirdas says:

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

    O šiaip super. Pašarinau facebooke.

  16. Lukas says:

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

    • Video nepakankamai „arti“? ;] nes aš asmeniškai neturiu skaitmeninio foto aparato, filmavau su mob. telefono 2MPx kamera, na nebent paskolins kas nors, tada įkelsiu ir foto „iš arti“.

  17. tomas says:

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

  18. Soldier says:

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

Leave a Reply