Lionaroid技術ブログ

Androidやドローンに関する技術的な記事やiRacingなどのシミュレータに関する記事

Fotopedia クオリティガイドライン

Fotopedia Quality Guidelines の翻訳を行ったので、備忘録としてメモ。
写真は著作権等で面倒なので掲載ナシ。

---
Fotopediaは百科事典の写真の品質と美しいデザインが称賛された。
この品質レベルと一貫した百科事典のデザインを維持していきたい。

手助けしてほしいこと:

  • このチャート(ガイドライン)に従った写真を追加すること
  • このチャートに従った写真に投票すること

サイズの問題:
  • 写真の解像度は1920x1080が最適
  • 解像度がそれ以上の場合は自動的に圧縮される
  • 世界遺産のアプリケーションには、少なくとも1辺が1000ピクセル以上必要
  • 800x533や533x800より小さな写真は受け入れられない

フレーム:
  • 写真にフレームを一切付加しないこと。
    デザイナーがフルタイムで働いているのだから(ry なので、余計なものをつけるなよってこと。
  • マイナス評価され、図鑑に載らないであろう写真の例(原文参照)

著作権表示(透かし):
  • 透かしを加えるなどという、写真の質を損なうようなことはしないこと。
  • Fotopediaはプロフィールへのリンクと共に、作者と写真のライセンスについて、常に明示している。
  • 写真を再利用したい人がいたら、連絡が付けられるような仕組みを用意している。
  • 写真を保護したい場合は、不可視の透かしを入れて欲しい。
  • 透かしを入れられた写真の例: これらを見つけたらマイナス評価で投票して下さい。(原文参照)

写真の見せ方(世界をあるがままに表現する):
  • 世界は完全ではない。フォトショップを使って実際と異なる世界を再表現をしたり、アーティスティックな表現を必要とすると感じるかもしれないが、百科事典ではそのような必要性はない。美しさも醜さも全て、世界のあるがままを図解する必要がある。
  • 芸術的に過剰処理された写真(HDRを含む)はふさわしくない。
  • 百科事典を改良したいなら、遠慮なく実際の世界を改良して下さい!(w
  • ふさわしくない例(原文参照)。HDRが施されていない写真はOK。

自身の目で決める:
  • 良い写真とは、次の項目に該当しない。「ノイズがある」「露光過剰」「露光不足」「ボケている」「バックライトがある」「白飛びしている」「フラッシュが不自然」
  • とはいえ、いくつかの素晴らしい写真には、これらの特性があるかもしれないので、一般的な規則ではない。
  • 写真の品質に確信がないなら、既に百科事典に載っている写真を見て、見る目を鍛えて下さい。百科事典を見ることで、あなたの見る目を鍛えると同時に、よい投票ができるようになる。
  • 百科事典には加えない、評価ダウンの例:「ボケている」「白飛びしている」「露光過剰」「露光不足」(原文参照)

Fotopediaで日本版アプリのための写真を集めています

先日、iPadで高品質な世界遺産の写真を見ることができるアプリが公開され、一躍有名となった Fotopedia Heritage ですが、これらの写真はコミュニティによって提供されていることをご存知でしょうか?

Fotopediaをご存じない方のために、特徴を紹介しますと・・・

  • FotopediaはWikipediaと連携して、写真による図鑑を作成する活動を行っています。
  • 主な写真は世界中のプロ・アマ写真家、コミュニティによって投稿されたものです。
  • Flickr等に投稿されているクリエイティブコモンズで公開された写真が利用されることもあります。
  • 図鑑に対して写真をノミネートすることができ、世界中のコミュニティによって評価された写真(+5ポイント以上)が正式な写真として図鑑のトップページに公開されます。
  • 自身専用のページを持つことができ、他の画像サービス同様にホスティングとして利用することもできます。
  • 自身専用ページにはFollow/Follower機能があるので、他の写真家との交流ができます。
  • 図鑑のコントリビュート(貢献)数が掲示されるので、自身がどれだけFotopediaに貢献しているか、一目で分かります。
  • オフィシャルなプロジェクトのうち、いくつかはFotopedia Heritageのようなアプリケーションとして公開されることがあります。
  • Fotopediaに参加することにより、自身の写真を世界のコミュニティから評価をしてもらえるだけでなく、その写真が図鑑を構成するという、言わば世界的なボランティア活動に参加することができます。


さて、この度、Fotopediaの中の人である Adrian Measures 氏の協力の元、日本の風景や名勝、文化遺産などを収録すべく、現時点では"アンオフィシャル"な形ではありますが、Japanプロジェクトの立ち上げを行い、写真の収集を開始しました。

しかしながら、Fotopediaへの日本人の参加者は少なく、写真も少ない状態です。
オフィシャルなプロジェクトとなるためには、ランドマーク、城、神社、寺、観光名所、国立公園などなど、様々な地点の高品質な写真が必要です。

そこで、Japanプロジェクトをオフィシャルなプロジェクトにすべく、日本にまつわる写真を提供下さる方、あるいは、Flickrなどでクリエイティブコモンズの写真を共に探して下さる方を広く募集します

興味のある方は是非、Lionasまでご連絡下さい。
プロ・アマは問いません。初心者でもOKです(というか、私も初心者です)。
その他の具体的な協力方法や条件については、個々にお知らせ致します。

※問い合わせが多い場合は、別途、条件などを掲示するかもしれません。
尚、連絡先は下記のいずれかでお願いします。


皆様のご協力をお待ちしております!

翻訳プロジェクト、人が増えてきました

ここのところ体調が緩やかに戻ってきていて、ちょっと安心のLionasです、こんばんは。

先日からコツコツと進めていた翻訳ですが、そろそろ本格的に人を募集しても良いだろうと思い、日本Androidの会のメーリングリストに翻訳者募集の件を投げてみました。

結果、何人もの方が協力に名乗りを上げて下さることになりました。
個人的な予想では、もっと冷ややかというか、スルーされてしまうかなぁと思っていた訳ですが、嬉しい誤算です。

ということで、翻訳のスピードはもう少しアップして進められるかもしれません。

ありがたや、ありがたや。

Androidドキュメント翻訳プロジェクト、はじめました

最近、体調不良が続いているLionasです、こんにちわ。
先週は低血圧症のような症状が続き、特に朝はまともに起きることすら難しかったのですが、生活習慣が根本的な原因という事が分かってきたので、睡眠薬などの力も借りて、少しずつ回復してきております。
おそらく、来週には完全復活できるんじゃないでしょうか。

それはさておき。

先日、Androidのドキュメントの翻訳プロジェクトを始めました。

翻訳対象が山のようにあるので、正直一人だと途方に暮れる量ですが、最近になって翻訳仲間が増え始めたので、少しずつ軌道に乗りつつある感じです。

とはいえ、まだまだ翻訳者は少なくて、リソース不足は否めないのですが。

そんな訳で、引き続き翻訳者を大募集しておりますので、我こそはという方は(そうでない方も)是非ご協力下さい。

プロジェクトに関する詳しい情報は、下記を参照ください。

0xdroid on BeagleBoardでGPIOを操作する

Beagle Board上の汎用ポート(GPIO)をAndroidから操作することに成功しました。
制御階層は、Androidアプリ>JNI>GPIO操作関数(C)>BeagleBoardという感じです。


ONを押すとBeagleBoard上の拡張ポートに接続したLEDがONになり、OFFを押すとLEDもOFFします。


Android基本的にrootが取れないため、GPIOを操作する特権ファイルへ書き込みするための工夫が必要ですが、今回はこの辺りで見事にはまってしまいました。
とりあえずGPIOの操作方法が分かったので、今後はこのポートに様々なものを接続してみたいと思います。
将来的にはデ部H/WチームのUstBoxのスイッチとして利用できるかと思います。

Beagle Board C4で0xdroidをSDからブートする方法まとめ

デ部H/Wチーム活動の一環として、BeagleBoard(Rev.C4)を購入したので、早速ブートに挑戦しました。
記憶を辿りながら、後日のためのメモの意味も含めてまとめてみたいと思います。
今回はチームの大先輩おすすめの0xdroidのソースからのインストールにチャレンジしてみました。

ビルド環境
ビルドの環境はUbuntu 9.10(Japanese)です。 Ubuntuのインストールについては省略。
最初、他のAndroid SDKをビルドしていたUbuntu 8.04(Japanese)でビルドしようと思っていたのですが、ビルド途中でglibc2.8が存在せず(2.7だった)、glibcのアップグレードは非常に大変のようなので別途新規にインストールしました。
ちなみに私はMacBook ProVmware Fusion上でUbuntuを使ってますが、こういう時は簡単に追加でインストールできるので最高です!
 実際のビルドに入る前に


 $ sudo apt-get upgrade
を実行して、パッケージを最新にしておくことをおすすめします。

Android(0xdroid)のソースダウンロード〜ビルド
0xdroidのサイトへ行き、Wiki > Get the Sourceのページを開きます。
このページの手順に従い、環境を構築して行きます。

Java SDKのインストール
まずは、Java SDKのインストールです。0xdroidのビルドにはJava5が必須なのですが、残念ながらUbuntu 9.10では既にサポートが切れており、デフォルトパッケージに含まれていません。
したがって、別途Java5 SDKをインストールする必要があります。
解決策としてSourceのページには、


If you are using Ubuntu Linux 9.10, just add these two line in file /etc/apt/sources.list:
 $ deb http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
 $ deb
-src http://us.archive.ubuntu.com/ubuntu/ karmic-updates multiverse
などと書くように指示されていますが、実際はこの通りに記述しても動きませんw
実際は、/etc/apt/sources.listに上記2行が既に含まれているので、この行のうち「karmic」を「jaunty」(=以前のバージョンの呼び名)に書き換えます。
 $ deb http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 $ deb
-src http://us.archive.ubuntu.com/ubuntu/ jaunty-updates multiverse
 その後はSourceのページにある通りにコマンドを実行して、Java5をインストールします。
 $ sudo apt-get update
 $ sudo apt
-get install sun-java5-jdk
既に別バージョンのJavaがインストールされている場合は、下記を実行してJava5を利用にするように変更します。 
 $ sudo update-alternatives --config java

Git,Repo,その他のビルドのためのツールのインストール
0xdroidのソースをダウンロードするためにgitとrepoをインストールします。
ついでに、後でビルドで苦労しないように必要そうなツールをまとめてインストールしちゃいます。

 $ sudo apt-get install git-core curl zlib1g-dev flex ncurses-dev libx11-dev gperf uboot-mkimage
repoはcurlコマンドを使ってインストールします。ダウンロードしたファイルに実行権限を付けてやることを忘れずに。 
 $ curl -o ~/bin/repo http://android.git.kernel.org/repo
 $ chmod a
+x ~/bin/repo

0xdroidのソースのダウンロード
repoがインストールできたら、次に0xdroidのソースをダウンロードします。
ホームディレクトリの下に適当なディレクトリを作って、その中でコマンドを実行します。

 $ mkdir beagle-donut
 $ cd beagle
-donut
 $ repo init
-u git://gitorious.org/0xdroid/manifest.git -b beagle-donut
 $ repo sync

repo syncでダウンロード開始しますが、ダウンロードには相当の時間がかかります。(マシンの性能によって変動)
ちなみに、repo syncに問題が生じる場合は、Sourceのページに記載のミラーサイトも利用することが可能なようです。

0xdroidのソースのビルド
0xdroidのソースのビルドは簡単です。下記を実行して、ビルド用のMakefileを作ります。

 $ echo "TARGET_PRODUCT := beagleboard” > buildspec.mk
 $ echo “INSTALL_PREBUILT_DEMO_APKS := true” >> buildspec.mk
その後、makeします。
 $ make
makeには相当の時間がかかります。ビルドに必要なツールがインストールされていない場合、エラーとなってビルドが中断されます。
その際はエラーの状況によりますが、必要そうなパッケージを探して、apt-get installでインストールしてやります。
エラーとなったファイル名等からインストールすべきパッケージが不明な場合、下記のコマンドが便利です。

 $ apt-get search <エラーとなったファイル名>

このコマンドを実行やることで、ファイル名を含むパッケージが表示されます。
大体、○○-devとか、lib○○といったパッケージがインストールすべきパッケージとして多いです。

makeが成功してビルドが完了すると、下記のルートファイルシステム(Root File System:RFS)が生成されます。

Linuxカーネルソースのダウンロードとビルド
次に、先ほど作成したシステムイメージをブートするためのuImageを生成するため、Beagle用にカスタマイズを施したLinuxカーネルのソースをビルドします。
ビルドしたファイル群はkernelディレクトリに展開されています。

 $ cd ..
 $ git clone git
://gitorious.org/0xlab-kernel/kernel.git
 $ cd kernel
 $ git checkout
-b kernel_omap3 origin/omap3
 $ make ARCH
=arm omap3_beagle_defconfig
 $ make ARCH
=arm CROSS_COMPILE=../beagle-donut/prebuilt/linux-x86/toolchain/arm-android-eabi-4.4.1/bin/arm-android-eabi- uImage
 $ make ARCH
=arm CROSS_COMPILE=../beagle-donut/prebuilt/linux-x86/toolchain/arm-android-eabi-4.4.1/bin/arm-android-eabi- modules

基本的に0xdroidのサイトの方法でインストールすると、自動的にNANDにブートイメージが書き込まれてしまいます。
後のデバッグなどのことも考え、SDカードからのブートにしたいと思います。

ブート用SDカードのフォーマット
Ubuntu上でフォーマットします。詳しくは、BeagleBoardのサイトの"LinuxBootDiskFormat>Detail"に記載された手順を行います。(説明長いんで手を抜いて省略)

サイトに記載の通りに fdisk コマンドを実行していけば良いですが、シリンダ数を設定する場合に、SDカードの容量にあわせてシリンダ数がいくつになるか計算してやる必要があります。
最終的に求められたシリンダ数の小数点以下を切り取った整数が設定すべき値です。
個人的には、最後に記載されている sfdisk を使ってやる方がお手軽で良いかと思います。
※ただし、シリンダ数の計算はfdiskと同様に必要です。

手順通りにフォーマットを進めると、最終的に下記の2パーティションがSDカード内に作成されるはずです。

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          51      409626    c  W95 FAT32 (LBA)
/dev/sdc2              52         245     1558305   83  Linux

ちなみに、/dev/sdc* は、環境によっては/dev/sdb* になっているかもしれません。

MLO,u-boot.bin,uImage,RFSのSDカードへのコピー
いよいよ、ビルドした0xdroidをブートするために必要なファイルをSDカードへコピーします。

まず、MLOとu-boot.binをBeagleBoardのサイトDownloadsのページから、下記のファイルをダウンロードします。

最初に、MLO_revc_v3をMLOというファイル名で、SDカード最初のパーティション(FAT32の方)にコピーします。
その後、u-boot-revc4.binをu-boot.binというファイル名でSDカードの最初のパーティションにコピーします。

次にLinuxカーネルのビルドの結果生成された、~/kernel/arch/arm/boot/uImage.binをuImageというファイル名に変更して、SDカードの最初のパーティションへコピーします。


 $ cp -R ~/kernel/arch/arm/boot/uimage.bin <最初のパーティションのマウントポイント>/uImage

最後に、0xdroidのソースのビルドでビルドした結果のディレクトリを、下記のような名前に書き換えて2番目のパーティションLinux)の方へコピーします。


 $ sudo cp -Rf ~/beagle-donut/out/target/product/beagleboard/root <2番目のパーティションのマウントポイント>/

 $ sudo cp -Rf ~/beagle-donut/out/target/product/beagleboard/system <2番目のパーティションのマウントポイント>/system

これでSDカードの準備は完了です。

Beagle BoardへのシリアルケーブルとDVIの接続、ターミナルの設定


※この作業はBeagleの電源を抜いた状態で行って下さい。
PCとBeagleBoardへはシリアルケーブルで接続します。
PCからはUSB - Serial(オス)ケーブルを接続し、BeagleBoardからは Serial(メス)- Serialピンコネクタ(メス)で接続します。
PCとBeagleとの間は丁度、Serialのオスとメスが繋がる形になります。
Beagle側のシリアルケーブルは自作しても良いのですが、Digikeyで専用ケーブルを購入する方が手軽で確実です。

尚、私の場合、PC側のUSB - Serialケーブルはドライバが必要で、しかもWinのみの対応なので、ターミナルを使う場合はWin7上で利用しています。
#このあたりは、(実在するのかわかりませんが)Ubuntuで動作するUSB - Serialケーブルを使用した方が、いくつもOSを準備しなくて済むので楽かもしれません。

あと、DVIケーブルをPCのモニタ等に接続します。これはブートが正しく行われたかどうかを確認するためです。
ブートが正しく行われたら、画面上に0xdroidにカスタマイズされたHome画面が表示されるはずです。

尚、ブート中のエラーなどは全てターミナル上のメッセージから判断します。
Windowsなら、Teratermがおすすめです。
ターミナルを起動したら、ボーレートを115200に設定しましょう。

ここで忘れずに先ほど作成したブート用のSDカードをBeagleへセットしておきましょう。


0xdroidを起動するためのUBOOTのコマンドパラメータの設定
Beagleの電源をONにすると、SD内のブートローダーが起動します。 


Texas Instruments X-Loader 1.4.2 (Feb 19 2009 - 12:01:24)
Reading boot sector
Loading u-boot.bin from mmc
 

U-Boot 2009.11 (Feb 23 2010 - 15:33:48)

OMAP3530-GP ES3.1, CPU-OPP2 L3-165MHz
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  256 MB
NAND:  256 MiB
In:    serial
Out:   serial
Err:   serial
Board revision C4
Die ID #7d6200040000000004036abc0902301a
Hit any key to stop autoboot:  0
OMAP3 beagleboard.org #

自動ブートへのカウントダウンが始まるので、素早く何らかのキーを押して自動ブートを停止します。

0xdroidのRFSをSDカードからロードするために、bootcmdとbootargsのパラメータを下記のように設定(コマンドを実行)します。


 # setenv bootcmd 'mmc init; fatload mmc 0:1 0x80000000 uImage; bootm 0x80000000'

 # setenv bootargs androidboot.console=ttyS2 console=ttyS2,115200n8 console=tty0 init=/init omapfb.mode=dvi:1024x768MR-24@60 root=/dev/mmcblk0p2 rootfstype=ext3 rw rootwait
 # saveenv

設定が保存できたら、リセットボタンを押して再起動します。再起動後、設定が間違っていなければ下記のようなメッセージがターミナルに表示されるはずです。


## Booting kernel from Legacy Image at 80000000 ...
   Image Name:   Linux-2.6.29-omap1-00013-gd1a1f7
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    2244544 Bytes =  2.1 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux.............................................................................................................................................. done, booting the kernel.
Linux version 2.6.29-omap1-00013-gd1a1f72 (lionas@ubuntu) (gcc version 4.4.1 (0xlab) ) #1 Mon Mar 15 05:14:04 PDT 2010
CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c5387f
CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
Machine: OMAP3 Beagle Board
Memory policy: ECC disabled, Data cache writeback

(以下略)

ログメッセージは途中で止まっているように見えますが、DVIからHome画面が出力されていればブート成功です。

ドロン君(弟)改め、エネロ君

Android + Arduino + Bluetoothで動作するロボット、"ドロン君(弟)"はコンセプトの違いを明確にしたいという本家のご要望により、"エネロ君"という新しい名前になりました。

エネロ君はArduinoによるハード・センサの高拡張性と、Android端末を次世代リモートコントローラにすることをコンセプトに進化して参ります。

以上、ささやかなお知らせでしたw