Хаотични мисли за живота, свободата и всичко останало
Този сайт го направих, за да мога да експериментирам различни технологии в некритична реална среда.
От известно време използвам CouchDB за последните проекти, по които работя. Това е и една от причините от днес stanislav.org да използва именно CouchDB за database server. Вече няма и един ред SQL код, а цялата миграция ми отне времето на сутрешното кафе. Разбира се, не ми остана особено време за тестване, така че проблеми са напълно възможни.

Определено е истинско удоволствие работата с тази база данни. Подготвям серия от статии на тази тема и се надявам да ми остане малко време да ги довърша.
При всички положения, препоръчвам да хвърлите едно око и да се отпуснете с CouchDB.
Миналата седмица, пазарувайки си заедно с малкия Мишо, минаваме покрай щанда с детските дискове. "Тате, моля те да купим филмче", жално ме поглежда той. "Разбира се, днес много слуша, защо да не купим филмче. Само си избери кое". Мишо, без много да мисли, грабва диска с красивата синя обложка, на която е нарисуван известния заек Бъгс. Поглеждам я за секунда, виждам че пише с големи букви, на български език "Най-доброто от Бъгс Бъни" и я мятам в количката.

Мишо става все по-нетърпелив да се приберем и да пуснем филмчето. До тук идилията е пълна. Прибираме се, Мишо влиза да се измие (този път без да му се напомня), преоблича се и казва въодушевен: "Тате, готов съм, моля те, донеси ми компютъра" (трябва да спомена, че нямаме хардуерен DVD player, филмите ги гледаме на лаптопите). Нося му аз компютъра, давам му диска и го оставям (доста често се оправя сам в пускането на филми). След малко идва намусен "Моля те, пусни ми фимчето". Отивам аз и какво да видя: "VLC cannot decrypt the entire disk". Бау! Е такова нещо не ми се беше случвало до сега. Нося диска на другия компютър - същата работа.
Почнах да оглеждам подробно обложката. Всичко е на български език и не пише нищо, различно от това, колко е известен и любим на всички този заек. Има само надпис "Съвместим с всички телевизори", каквото и да означава той. Има и доста дълъг текст с доста малки букви, на английски език, обясняваш запазените марки на Уорнър Брадърс и куп други стандартни глупости. Някъде по средата му пише: System Requirements: DVD-ROM, ....., a computer running Microsoft Windows 98SE or higher.....This DVD will not work in a CD-ROM drive and the DVD-ROM features are not available on Apple Macintosh".
Малкият сладур усети, че нещо се случва и беше буквално съкрушен. С толкова желание си избра точно този филм, а аз - с такова желание му го купих. Как да обясниш на едно 4 годишно дете, че някакви смотаняци създават диск с подобни нестандартни глупости и си мислят, че така ще го спасят от копиране, а други смотаняци издават дисковете на конвейр и дори не си правят труда да разберат какво продават. Окей - защитавайте си дисковете както искате, ама го напишете по дяволите!
Убедих Мишо, че са ни продали счупен диск и му обещах, че ще го сменя или поправя. Той се успокои и си пусна друго филмче. Започнах да нищя проблема. Оказа се, че в случая са използвали Content Scramble System (CSS). Макар в Wikipedia да пише, че this DRM scheme is used on almost all commercially produced DVD-Video discs, на мен за първи път ми попада такъв - особено детски, особено струващ 6 лева и продаващ се в супермаркета. А решението е просто. В ubuntu:
sudo apt-get install ubuntu-restricted-extras
sudo /usr/share/doc/libdvdread4/install-css.sh
Дискът тръгна и изобщо нямаше да правя драма ако не беше. Щях да му изтегля заека от замунда и мача да приключи. Обаче той тръгна и последва истинският шок...
...из всичките текстове с малки буквички, пише на чист български език:
Езици: английски, холандски, френски, унгарски, италиански 2.0
Е сега вече избеснях! Може ли да продавате детско филмче в България, което не е преведено на български бе! Буквално на всяко пазаруване купуваме по един детски диск. Имаме доста сериозна колекция. И всички филмчета до сега са били преведени.
Може би този заек няма да се превърне в "най-обичания рисуван детски герой" за малкия Мишо. Дори е по-добре да не се превърне. А на всички, замесени в продажбата на криптиран детски диск, който не е преведен на български език, искам да кажа следното:
VHJ5IHRvIHB1dCB0aGlzIERWRCBpbiB5b3VyIGJpZyBmYXQgYXNzLg==\n
VGhpcyBpcyB0aGUgYmVzdCBwbGFjZSBmb3IgaXQu\n
Всички неща, които са ми необходими за модифицирането на камерата и поръчах преди нова година, дойдоха. Време е да се захвана със същността. В интерес на истината, очаквах да е по-трудно и да прецакам нещо, но май успях :)
Какво точно и модифицираме?
Това, което трябва да направим с камерата за да върши работа за нашия проект, е да и махнем IR-блокиращия филтър и да и сложим такъв, който пропуска само IR. Понеже филтърът, който трябва да махнем е вграден в оптиката и има риск да я счупя, реших да сменя цялата оптика. Поръчах комплект от няколко лещи с различно фокусно разстояние, които смятам да използвам вместо вградената.
А ето и IR филтъра, който ще поставя между матрицата и оптиката
Имах известни проблеми с махането на капака на камерата, трябваше да използвам доста сила и леко го повредих и назъбих, но пластмасата ще я преглътна. Това са болтчетата, които държат оптиката.
Ето махнатата оригинална опитка и матрицата, върху която ще сложа новата.
Следва проблемът с държача (джаджата, която седи на платката и в която се завиват лещите). Оригиналният не върши работа, а да се намери такъв на разумна цена е мисия невъзможна. Не ми се дават $30+ за една малка пластмаска. Оказва се, че някои от най-евтините китайски уеб-камери използват същата джаджа и то с размер, който се предполага да пасне идеално. Купих ето тази камера от e-bay за $0.90 (но я чаках цял месец)
А ето това е заветния държач, току-що изваден от китайското чудо
Сега само трябва да го монтираме върху Sony-то. И нова греда - болтчетата на оригиналния държач са прекалено малки за новия, а тези на новия - прекалено големи за дупките на платката. Тук влезе в употреба силата ми и с доста зор успях да навия по-големите болтчета в платката. Най-хубавото е, че не я счупих :)
Държача, монтиран на платката:
Следва проба - работи - затваряме камерата. Вече мога да си сменям "обективите" в зависимост от ъгъла, под който ще трябва да снима.
Много съм доволен. Ето снимка, направена с 16mm лещи, от разстояние 2 метра (без IR филтъра):
Следва пак опита с кашона. Но този път с инфраред светлина, идваща от него. Ето току-що пристигналите прожектори:
Ще използвам само единия. След опитите с няколко лещи, най-подходяща се оказа 6mm. Мисля, че стана страхотно с тези лещи, защото вече няма да мисля на какво разстояние трябва да монтирам камерата от дисплея и няма да се съобразявам с нейните фокусни ограничения.
Слагам прожектора и камерата в кашона, пускам прожектора и това е резултата:
Всичко е като предния опит с разликата, че пръстите ми вече "светят", всичко работи доста по-плавно и вече не се влияе от странични светлинни източници.
След като имам повече увереност, следва реалната маса. Още се колебая за размера, тъй като следващото ограничение ще е на проектора. Но при всички положения май ще ставам дърводелец :)
p.s. Някой може ли да ми препоръча сравнително евтин мултимедиен проектор, който да може да покаже около 28-30 инчова картина от близко разстояние.
Още по темата:
Проект iBar. Началото
Проект iBar: камера и дисплей
Проект iBar: първи мултитъч резултати
Ако си задавате въпроса Защо да използвам отворени формати? или ако нямате идея какво се пита в него, задължително трябва да си дадете отговор. Ето тук: Да използваме отворени формати
Личният ми съвет е да прочетете тази малка книжка.
Софтуерът
Това, което ще ползвам като за начало се казва Community Core Vision (CCV), създадено от хората от nuigroup. Доста ядове имах с него, но на финала тръгна. За съжаление работеше без проблем само с вградената камера на лаптопа.
Целта на въпросния софтуер е да анализира видеото от камерата, като разпознае местоположението и движението на пръстите. След това, данните се предават посредством TUIO протокол (през TCP или UDP), който се използва от UI програмите (като pyMT например).
Драйверите
Новата камера тръгна без проблеми. Доста се зарадвах, тъй като бях подготвен за големи главоболия с нея. В последното ядро има драйвер за нея и Video4Linux се справи доста добре. При това с добра скорост при 640x480. Малката подробност е, че не работи с CCV. Оказа се, че проблемите са два: вграденият драйвер не поддържа всички необходими опции и версията на unicap, която идва с Ubuntu също не работи както трябва. За целта трябва да се пачнат и двете. Информация за това намерих тук. Следвайки инструкциите за модула и за unicap, след малко имах работещ CCV със Sony PS3 Eye.
Първи резултати
Време е да видим как работи. Напъхах камерата в кашон, като направих малка дупка в единия ъгъл за кабела, внимавайки да не влиза светлина през нея. Камерата има два светещи диода, които елиминирах с малко черен скоч върху тях.
За късмет, размерът на кашона се оказа абсолютно същия като размера на плексигласа. Първите опити, които правих, бяха с обикновено стъкло, облепено с оризова хартия. Резултата беше същия.
Ето как се справя CCV с анализа на видеото (клик за по-голям размер):
Изображението горе в ляво е видеото от камерата, а в дясно са блобовете, координатите на пръстите след анализа.
Разбира се, необходими са известни настройки за получаване на добри резултати, както и калибрация на координатите.
Всяка от точките си има ID, като софтуера анализира и движението на различните точки. Това само по себе си също е трудна задача, като за решението и се предполага, че движението се извършва от пръстите на човек, което води до ограничения в скоростта и посоката. Следват два скрийншота от pyMT - питонската мултитъч библиотека. Тя използва готовите данни от CCV.
За съжаление, нямам с какво да направя видео - единствената ми читава камера е вътре в кашона :)
Това е за сега. Почивката свърши и ме чака доста работа. Така или иначе ще трябва да изчакам доставката на джаджите, които накупих тези дни без които не мога да продължа напред. Stay tuned.
Още по темата:
Проект iBar. Началото
Проект iBar: камера и дисплей
Камерата, която ще използвам за проекта е Sony PlayStation 3 Eye.
Оказва се, че за тази цена трудно може да се намери по-добра web камера. С подходящите драйвери, това устройство може да постигне скорост от цели 120 fps при резолюция 320x240 и 60 fps при 640х480.
Купих камерата от ebay за £20 и независимо, че Video4Linux има поддъжка за нея, от известно време се мъча да я подкарам с unicap. Повече подробности за софтуера и драйверите, малко по-късно.
Тепърва ще трябва да я разглобявам, за да и махна IR-блокиращото нещо и да и добавя само-IR-пропускащ филтър, като най-вероятно ще и сменя цялата оптика. Искам първо да се уверя, че софтуерът работи както трябва, преди да я прецакам :)
Междувременно реших, че ще използвам Rear DI технология. Мисля, че ще е по-лесно, тъй като няма да е необходима специална рамка с вградени IR диоди (които се оказа, че греят много). Понеже не ме бива много в изработката на хардуер, ще гледам да мина с по-малко дърводелска работа. Източникът на IR светлина ще бъде този: http://www.dealextreme.com/details.dx/sku.15235, но искам да направя още малко рисърч преди да го поръчам (най-вероятно ще трябват поне 4 от тях).
Дисплеят
След обстойно проучване, реших да използвам най-доброто в тази област. Той се казва Plexiglas RP 7D006 на Evonik Industries. Въпреки доста високата си цена от 250 EUR/кв.м., мисля да не експериментирам с други пластмаси. Това е материалът, който се използва от Microsoft за техния Surface. Другото хубаво е, че производителят има онлайн магазин, който доставя до България. Поръчах си free sample от сайта им и наистина това парче пластмаса е уникално. Прожектирайки върху него се получава образ, в пъти по-добър от прожектирането върху платно или стена, като в същото време притежава всички свойства, необходими за такъв проект. С две думи - направено е специално за целта. За съжаление ми е трудно да прикача видео, но ето как изглежда то:
Разбира се, съществуват доста по-евтини варианти, но те са свързани с не малко експерименти и крайният ефект от гледна точка на цена е непредвидим.
Следва експеримент "на сухо", без инфраред светлина, само с камерата и дисплея, набутани в кашон. За тази цел обаче, трябва да накарам пустия софтуер и драйвер за камерата да работят както трябва с Ubuntu.
Междувременно се оглеждам за нова опитка за камерата, която да не ми излезе златна. Не мога да разбера разни онлайн магазини отвъд океана, които искат за доставка до България по над $60 за въшки, които се събират в малко пощенско пликче и струват доста по-малко.
Още по темата: Проект iBar. Началото
От доста време проучвам възможностите да си направя multitouch маса. Зарибих се по тази идея след като попаднах на една Python библиотека за създаване на интерактивни мултитъч приложения - pyMT. Ето едно кратко видео (video link):
Преди всичко обаче е нужен хардуера. Оказа се, че има доста голяма общност - http://nuigroup.com, където човек може да намери цялата му необходима информация за създаването на интеркативна маса. След седмици събиране на смелост и доста четене по въпроса, реших да пробвам да направя подобно нещо.
Как работи
Технологията като цяло е оптична. Всичко се свежда до анализиране на видео от камера, която заснема дисплея. От него в реално време се извличат данните за местоположението на пръстите по дисплея. Самият дисплей е изработен от няколко слоя - плексиглас и прожекционен материал, върху който се проектира видеото от компютъра.
Анализът на данните от камерата е доста сложна задача, особено ако върху дисплея се проектира картина. За това едни умни хора са се сетили да улеснят софтуерните алгоритми като филтрират максимално входните данни посредством инфраред светлина.
Инфраред спектъра се намира между 750 - 1400nm и е невидим за човешкото око. Той има широко приложение - от дистанционните управления до системите за нощно виждане.
Но да се върнем на мултитъча. Това, което трябва да направим е да осветим достатъчно дисплея с инфраред светлина и да модифицираме камерата така, че да заснема САМО този спектър. Когато докоснем дисплея, независимо какво проектираме върху него, ще получим само отразената от пръстите ни светлина под формата на бели петна. Тогава анализа на видеото ще бъде драстично по-лесен.
Има няколко метода за постигане на това. Най-използваните са FTIR и DI.
Frustrated Total Internal Reflection (FTIR)
Това е метод, който използва свойството Total Internal Reflection, което притежават някои материали. Най-общо казано, когато инжектираме светлина в такъв материал (например Плексиглас), тя рефлектира вътре в него и остава там докато не срещне друг материал (например кожата на човек). Когато това се случи, светлината се отразява, излиза от плексигласа и може да бъде уловена от камерата.
Rear Diffused Illumination (DI)
Тук инфраред светлината се излъчва под повърхността, която може да бъде дори обикновено стъкло. Върху стъклото се поставя дифузионен материал. Когато го докоснем се отразява повече светлина от обкръжението, която се улавя от камерата.
Софтуерът
Има няколко multitouch библиотеки. Въпреки, че повечето са с отворен код, информация за работата им има основно за Windows и OSX. Не липсва и такава за Linux, но до колкото разбирам хакерстването тук ще е голямо.
Проектът iBar
Крайната ми цел е интерактивен мултитъч барплот, работещ с opensource софтуер. Надявам се, в новата ни кухня, барплотът да бъде точно такъв. Дали ще стане - само времето (и упоритостта ми) ще покаже. Ще гледам да описвам тук основните стъпки до постигането на тази цел. А те на първо четене са тези:
- Избор на технология (FTIR или DI).
- Избор на материал(и) за дисплея.
- Намиране на източник на инфраред светлина.
- Избор и модифициране на уеб-камера.
- Избор на проектор.
- Проектиране и изработка на кутия за експерименталната постановка.
- Доста работа по софтуера.
- Проектиране и изработка на пространството под барплота.
p.s. Не успях да намеря информация на български на тази тема и подозирам, че тя не е особено популярна. Ако има някой, който прави / е правил подобно нещо, ще се радвам да се запознаем за да впрегнем усилия в тази посока.
От доста време се заглеждам към Amazon EC2. Днес реших да изпробвам услугата. Само за 10 минути и няколко цъкания с мишката, вече имах това:
Напълно работеща ubuntu машина със 1.7 GB RAM и 160 GB свободно пространство. И това е най-слабото, което мога да използвам.
Това разбира се е възможно и благодарение на страхотната общност, която прави възможни нещата от бъдещето.
Още подробности предстоят...
Зачестиха постовете ми, свързани с google, но явно последните месеци те правят IT новините.
Последната такава е свързана с операционната им система Chromium OS, като вчера обявиха публикуването на сорс кода. Той се намира тук http://src.chromium.org/
А следващото видео дава представа за това как ще изглежда Chromium:
Google си направиха и език за програмиране. Казва се Go, лицензът му е BSD, а според анонса:
Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java.
Официален сайт: The Go Programming language
<< ПО-СТАРИ |
При операция куките за разбиване на организирана престъпна група, занимаваща се нападение и бой на граждани, е задържан нейния лидер - Ц.Ц.
Някой има ли впечатления от телевизията на Мтел - Quarto? Искам само един кабел да влиза в къщи и не искам сателитна антена на балкона
Борислав Михайлов: "Стабилни сме финансово, но нямаме пари.." :)
А подгряващата група бяха някакви супер готини румънци на име Urma. Много, много яка музика правят. Някой чувал ли ги е?
Навигация в Букурещ + Андроид + Google Maps + Роуминг = 40 кинта.
| Виж повече > |
Защо да използваме отворени формати
Основните команди в Unix/Linux
от stan в Наводнение в София - река "Черни Връх"
от martin в Наводнение в София - река "Черни Връх"
от suni в Барселона в снимки
от златко в Основните команди в Unix/Linux
от stan в Промени в блога: CouchDB
(cc) 2007-2010 Станислав Михайлов
Съдържанието на този сайт може да бъде използвано съгласно условията на Криейтив Комънс Признание.
Повече тук.