2011-05-29:

Digital pen

pen:toys
O ile nie uważam siebie za gadżeciarza, to co jakiś czas jakiś nowy "kawałek elektroniki" wpada w moje ręce. Tym razem było to tzw. pióro cyfrowe (digital pen; w skrócie: długopis który zapamiętuje to co piszesz i pozwala "wrzucić to na kompa") firmy I.R.I.S. (a przynajmniej taka firma była podana na pudełku). Co ciekawe, udało mi się dorwać SDK do tego urządzonka, więc post będzie również spojrzeniem na digital pen od strony programistycznej (bez przesadnych technikaliów).

Zacznę może od tego jak owy digital pen wygląda i jak działa.

kartka w kartkę A5, na górze przyczepiony odbiornik, na karce napisane -hello world TEST 123h- i narysowany graf, oraz położone pióro


Jak widać na obrazku, długopis wygląda prawie normalnie, z tym że przy widocznej części rysika jest (wg mnie) nadajnik podczerwieni nadający w momencie pisania.
Natomiast do kartki na górze przyczepiony jest odbiornik (jak na mój gust (nie sprawdzałem empirycznie): ze dwa odbiorniki podczerwieni, tak aby można wyliczyć położenie pióra, wyświetlacz, przycisk "new/save page", moduł USB, jakaś pamięć i uC który tym steruje). Owy odbiornik można podłączyć via USB do komputera, co zmienia digital pen w tablet/myszkę (ale taki bez poziomów nacisku) i pozwala przerzucić zachowane w pamięci notatki.

zdigitalizowana notatka z kartki


Ad używanie: przyczepia się odbiornik do czegokolwiek (np. kartki papieru), pisze po kartce, naciska przycisk 'save page', a później podpina się odbiornik via USB do komputera i tadam, notatki są w formie obrazka. Oczywiście to ostatnie po przeklikaniu się przez dołączony do pióra "menadżer notatek".
No właśnie... jeśli chodzi o dołączony soft, to sprawa jest dość zabawna: do pióra dodano soft pod Windowsa oraz OSX (Linux-based OSes are out of luck; ale podobno jako tablet działa bez większej walki... czyli w zasadzie główna funkcja urządzenia nie działa w ogóle, a raczej nie ma oficjalnego softu, bo jest udostępnione info o proto - o tym na samym dole postu). I teraz tak:
- Pod Windowsem, jest śliczny programik do organizacji notatek, ściągania ich, etc. Ale niestety trzeba kilka "klików", żeby wyexportować daną notatkę do np. JPG/PNG.
- Pod OSX'em natomiast jest daemon który po podłączeniu urządzenia zrzuca notatki do JPG/PNG. Natomiast nie ma żadnego managera.

Ponieważ korzystanie z "menadżerów" raczej mnie nie bawi chciałem rzucić okiem na internalsy softu i może trochę go zmodyfikować / napisać własny exporter.
I tu przechodzimy do części programistycznej.

W katalogu oprogramowania było sporo DLLek, które po wrzuceniu w fileinfo (plugin do Total Commandera do podglądu plików PE, kapitalna sprawa; do pobrania na oficjalnej stronie Total Commandera) pokazały kilka ciekawych informacji. Dowiedziałem się m.in. że firma która stworzyła owe DLLki nazywa się Pegasus Technologies LTD. i, jak się później okazało, udostępnia na swojej stronie SDK (yay!) do digital penów swojej produkcji (czyli I.R.I.S. tylko licencjonuje ich technologie), oraz, że wersja PegRoute.exe (chyba jakiś daemon do komunikacji z piórem) jest special buildem przeznaczonym dla celów demonstracyjnych na targach CEBIT 2007 (cóż, podobno prowizorki są wieczne).

listing z fileinfo


Jeśli chodzi o samo SDK (dostępne dla C/C++ oraz C#, Windows only), to kilka przydatnych linków:
http://www.pegatech.com/_Uploads/Downloads/SDK/SDK_3.4.zip
http://www.pegatech.com/_Uploads/Downloads/SDK/Pegasus.Net_SDK.zip
http://www.pegatech.com/_Uploads/Downloads/DevelopersWebSite/index.html
http://groups.google.com/group/pegasus-digital-pen

Jeśli chodzi o samą obsługę ściągania obrazków z pióra (która mnie interesowała), to jest w zasadzie trywialna (kilka funkcji na krzyż). Zaskoczyły mnie dwie rzeczy:
1. Strony numeruje się od 1 (OK, OK, rozumiem że to nic dziwnego... ale spodziewałem się w API, że pierwsza notatka do ściągnięcia będzie miała ID 0 jednak... szczerze to trochę się z tym nawalczyłem, a walka skończyła się dopiero po wrzuceniu w debugger IDA oficjalnego softu i głośny 'Ahaaaaa!' po rzuceniu okiem na parametry problematycznej funkcji).
2. Obrazki są przechowywane jako seria eventów pióra (przyłożenie (aka DOWN) + koordynaty, ruch (aka MOVE) + koordynaty, oderwanie (aka UP)). Przyznaje, że raczej spodziewałem się monochromatycznej bitmapy (1bpp), ale po przemyśleniu sprawy uznałem, że to faktycznie ma więcej sensu (i ile miejsca zaoszczędzone!).

Konsekwencji punktu drugiego jest kilka:
- w celu wyexportowania do bitmapy trza to najpierw wyrenderować
- można zapisać notatki np. w formie SVG lub innego "wektora"
- ponieważ zachowana jest również kolejność eventów, zrobienie np. animacji pisania jest proste (w każdej klatce renderuje się np. o jeden event więcej; albo lepiej, o jeden pixel więcej)
- można również pobawić się trochę ze stylem kresek (np. imitację pędzla via zmniejszanie grubości kreski, albo zaokrąglanie pisma)
Podsumowując, uznałem to za fajny pomysł.

Anyway, soft do downloadu ostatecznie naklepałem (exportuje do PNG wg wytycznych oraz SVG i CSV) i postaram się go razem z src udostepnić za jakiś czas. Poniżej efekty jego działania.

rendering pisma z kartki na tle imitujacym stary papier

jak wyżej; kreski są grube na początku i cieniutkie na końcach

jak wyżej; kreski są cieniutkie na początku i grube na końcach


Tło w powyższych obrazkach pochodzi z serwisu CGTextures (w tym miejscu podziękowania dla Marcela z w/w serwisu za błyskawiczną odpowiedź na pytania dot. licencji udostępnianych tekstur).

Jeśli chodzi o SVG i CSV, to linki poniżej:
pen_hello_test.csv
pen_hello_test.svg (sporo przeglądarek powinno to wyświetlić po kliknięciu)

OK, i to w sumie na tyle jeśli chodzi o ten post. Na koniec jeszcze kilka uwag:
- w zasadzie taki digital pen to świetna sprawa dla osób które dzielą się notatkami z innymi lub które lubią mieć kopie zapasową notatek na kompie; do innych podobnych zastosowań chyba jednak bym wybrał pen tablet
- pióro emituje światło podczerwone (lub cokolwiek innego, przypominam że to tylko moje przypuszczenie) po wykryciu nacisku rysika na podłoże; przy miękkim podłożu niestety nie zawsze łapie (miękkie w moim wypadku było papierem czerpanym grubości 100 kartek; problem rozwiązałem używając podkładki pod kartkę)
- ruszanie się odbiornika lub kartki papieru również ciekawie wpływa na zniekształcanie obrazu (w sumie można się pobawić w pisanie odbiornikiem i trzymanie pióra w jednym miejscu ;>)
- jakoś tak parę dni temu czytałem o digital penach w jakimś artykule o (afair) 10 technologiach które się nie przyjęły / są chybione; cóż... fakt faktem to dość niszowy produkt
- o ile oficjalnego softu pod Linuxa nie ma, to devi z Pegasus Technologies udostępnili info o protokole USB który jest używany przez to urządzonko - miło z ich strony ;)

I tyle :)

Comments:

2011-05-29 20:38:13 = u8on846
{
Popsułeś link do cgtextrures
}
2011-05-29 21:30:07 = Gynvael Coldwind
{
Thx fixed ;)
}
2011-05-30 00:48:10 = Mariusz Kędziora
{
Ostatnio znajomy w firmie zakupił sobie (i pokazywał) coś podobnego. Tamto nazywało sie LiveScribe (http://www.livescribe.com/en-us/) i było ciut inaczej zbudowane.

Otóż pisało po odpowiednim papierze (to pewien minus, bo musisz mieć taki specjalny papier), ale poza samym pismem nagrywało również dźwięk, który na dodatek był synchronizowany z tym co pisałeś. Czyli np. podczas notowania na spotkaniu mogłeś nagrywać dźwięk, a później wracając do notatek mogłeś odtworzyć tekst i dźwięk z określonego momentu. Wyglądało to naprawdę fajnie - znajomy mówił, że już się przerzucił na takie notatki.

Z tego co widziałem i słyszałem to również są możliwości napisania softu dla tego pena.

}
2011-05-30 09:51:15 = Nism0
{
Fajna sprawa taki zestawik, w sumie wygodna sprawa ale z drugiej strony myślę ze ważne są 2 cechy takiego urządzenia : cena i dostępność na polskim rynku afair w PL tego nie kupiłeś;]
}
2011-05-31 20:28:22 = diabel
{
Nie dojsć, ze grzebie w orpogramowaniu to teraz jeszcze długopis psuje, niedługo nie będzie można się czuć bezpiecznie smażąc naleśniki, bo coś w mące znajdzie :P
}
2011-06-07 11:01:30 = 8bug
{
Żeby potwierdzić swoje przypuszczenia odnośnie tego czy to faktycznie działa na podczerwień najlepiej wziąć np aparat z telefonu / zwykły aparat cyfrowy i obiektyw nakierować na diodę IR / miejsce gdzie by się mogła znajdować.
}
2015-11-30 00:58:07 = volodia
{
Kiedy dodasz kod swojego eksportera? ;)

Quote:
Anyway, soft do downloadu ostatecznie naklepałem (exportuje do PNG wg wytycznych oraz SVG i CSV) i postaram się go razem z src udostepnić za jakiś czas.

BTW, używasz tego jeszcze?
}

Add a comment:

Nick:
URL (optional):
Math captcha: 6 ∗ 5 + 6 =