{"id":29,"date":"2013-02-08T10:22:20","date_gmt":"2013-02-08T10:22:20","guid":{"rendered":"http:\/\/www.albertosarullo.com\/blog\/?p=29"},"modified":"2014-02-26T08:23:17","modified_gmt":"2014-02-26T08:23:17","slug":"lego-plays-ruzzle","status":"publish","type":"post","link":"http:\/\/www.albertosarullo.com\/blog\/lego-plays-ruzzle","title":{"rendered":"Lego plays Ruzzle: nxt &#038; nodejs powered robot"},"content":{"rendered":"<p><iframe loading=\"lazy\" src=\"http:\/\/www.youtube.com\/embed\/ukPyJPFAwlo\" height=\"355\" width=\"630\" allowfullscreen=\"\" frameborder=\"0\"><\/iframe><\/p>\n<p>Today I have uploaded a video &#8216;<a href=\"http:\/\/www.youtube.com\/watch?v=ukPyJPFAwlo\">Lego plays Ruzzle<\/a>&#8216; on Youtube, to show how my creation\u00c2\u00a0works.<\/p>\n<p>I like to mix different technologies to create something innovative.<\/p>\n<p>I love Lego, and recently discovered Ruzzle, a popular mobile game. So, I decided to mix Lego, Ruzzle, Javascript, bash and other pieces to create a super robot \ud83d\ude42<\/p>\n<p><a href=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/lego-plays-ruzzle.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-35\" alt=\"lego-plays-ruzzle\" src=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/lego-plays-ruzzle-1024x768.jpg\" width=\"640\" height=\"480\" srcset=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/lego-plays-ruzzle-1024x768.jpg 1024w, http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/lego-plays-ruzzle-300x225.jpg 300w, http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/lego-plays-ruzzle.jpg 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>In this project I used:<\/p>\n<ul>\n<li>Tablet with Ruzzle<\/li>\n<li>Bash script for:\n<ul>\n<li>Bash script for download screenshot of device<\/li>\n<li>Process image with Imagemagick<\/li>\n<li>Recognize character from image with Tesseract<\/li>\n<\/ul>\n<\/li>\n<li>NodeJS for:\n<ul>\n<li>Solving Ruzzle<\/li>\n<li>Optimizing the plan<\/li>\n<li>Send via bluetooth to Lego Mindstorm<\/li>\n<\/ul>\n<\/li>\n<li>Nxc program to receive plan via bluetooth<\/li>\n<li>Absolute Position Regulator library for precise control of lego motors<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/Ruzzle-solver-scheme-3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-34\" alt=\"Ruzzle solver scheme (3)\" src=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/Ruzzle-solver-scheme-3.png\" width=\"755\" height=\"572\" srcset=\"http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/Ruzzle-solver-scheme-3.png 755w, http:\/\/www.albertosarullo.com\/blog\/wp-content\/uploads\/2013\/02\/Ruzzle-solver-scheme-3-300x227.png 300w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/a><\/p>\n<p>The project is open source, and the code is on Github:<\/p>\n<p><a href=\"https:\/\/github.com\/albertosarullo\/ruzzle-mindstorm-nxc-nodejs-solver\">https:\/\/github.com\/albertosarullo\/ruzzle-mindstorm-nxc-nodejs-solver<\/a><\/p>\n<p>More photos are on Flickr:<\/p>\n<p><a href=\"http:\/\/www.flickr.com\/photos\/silvana_g\/8459161766\/in\/set-72157632723812787\/\">http:\/\/www.flickr.com\/photos\/silvana_g\/8459161766\/in\/set-72157632723812787\/<\/a><\/p>\n<p>Other article on Lego Ruzzle Solver:<\/p>\n<ul>\n<li>(english)\u00c2\u00a0<a href=\"http:\/\/hackaday.com\/2013\/02\/19\/lego-stylus-solves-ruzzle-tablet-game\/\">http:\/\/hackaday.com\/2013\/02\/19\/lego-stylus-solves-ruzzle-tablet-game\/<\/a><\/li>\n<li>(russian) <a href=\"http:\/\/24gadget.ru\/1161053411-lego-reshaet-golovolomku-ruzzle-video.html\">http:\/\/24gadget.ru\/1161053411-lego-reshaet-golovolomku-ruzzle-video.html<\/a><\/li>\n<li>(russian)\u00c2\u00a0<a href=\"http:\/\/mirfactov.com\/lego-reshaet-golovolomku-ruzzle\/\">http:\/\/mirfactov.com\/lego-reshaet-golovolomku-ruzzle\/<\/a><\/li>\n<li>(italian)\u00c2\u00a0<a href=\"http:\/\/leganerd.com\/2013\/02\/13\/lego-plays-ruzzle-retroscena-della-nascita-di-un-robot\/\">http:\/\/leganerd.com\/2013\/02\/13\/lego-plays-ruzzle-retroscena-della-nascita-di-un-robot\/<\/a><\/li>\n<li>(italian)\u00c2\u00a0<a href=\"http:\/\/www.deejay.it\/dj\/media\/video\/2259\/7177\/Occupy-Deejay?idProgramma=365\">Video of my partecipation @ Deejay TV show<\/a><\/li>\n<\/ul>\n<p>In march 23 I talked about history of my robots @ Codemotion Rome. Below you can finde the <a href=\"http:\/\/www.slideshare.net\/args\/lego-vs-ruzzle-codemotion-2013\">slides<\/a> of my talk:<\/p>\n<p><iframe loading=\"lazy\" src=\"http:\/\/www.slideshare.net\/slideshow\/embed_code\/17677420\" height=\"356\" width=\"427\" allowfullscreen=\"\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-size: 16px;\">Any feedback \/ request is appreciated !<\/span><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today I have uploaded a video &#8216;Lego plays Ruzzle&#8216; on Youtube, to show how my creation\u00c2\u00a0works. I like to mix different technologies to create something innovative. I love Lego, and recently discovered Ruzzle, a popular mobile game. So, I decided to mix Lego, Ruzzle, Javascript, bash and other pieces to create a super robot \ud83d\ude42 &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.albertosarullo.com\/blog\/lego-plays-ruzzle\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Lego plays Ruzzle: nxt &#038; nodejs powered robot&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[53,3,1],"tags":[],"class_list":["post-29","post","type-post","status-publish","format-standard","hentry","category-android","category-javascript","category-uncategorized"],"_links":{"self":[{"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/posts\/29","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/comments?post=29"}],"version-history":[{"count":0,"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/posts\/29\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/media?parent=29"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/categories?post=29"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.albertosarullo.com\/blog\/wp-json\/wp\/v2\/tags?post=29"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}