組込みAndroid入門実習

17,397 views
17,327 views

Published on

香川高専の授業で使用したスライドです。

Published in: Self Improvement
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,397
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
51
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

組込みAndroid入門実習

  1. 1. 組込みAndroid入門講座OpenCVアプリでUSBカメラ画像を リアルタイム処理させよう 2012.2.25 日本Androidの会 神戸支部鈴木 圭介(すずき けいすけ)桐畑 鷹輔(きりはた ようすけ)
  2. 2. 水質バイオモニタリングシステム• 水内の毒素を判定し知らせる• 微生物を監視しその状態によって水質を 判定
  3. 3. 水質バイオモニタリングシステムの 内部構造 LEDs IN OUTWater USB Camera Beagleboard-xM Beagleboard-xM + Android + OpenCVで微生物をカウント&ロギング
  4. 4. 講義のはじめに• この講義の趣旨 – 組込みシステムを実際に構築し知見を広めよう • ARM搭載ワンボートコンピュータを使った 組込みAndroid画像処理システム構築• 今日やること – 実習中心:まずはやってみよう • 何をするか?:20分 • 実習・説明:2時間30分 • 休憩:10分 – 家に帰って復習を! 講義資料はWebで公開• 想定しているレベル – Linuxコマンドある程度理解 – カーネルビルド未経験~経験浅 – Androidアプリ作成経験あり
  5. 5. なぜ組込みAndroid?組込みAndroid =Linux+UI+API+デバッグ環境• Linux:さまざまなデバイスに対応、カスタマイズ可(オープン ソース)• リッチなUI、豊富なAPI – UI、通信、画像処理、セキュリティ、データベース – クラウド連携: Google, Google App Engine, Gmail, GDoc, Twitter• 強力なアプリデバッグ環境 – エミュレータ(実機がなくてもデバッグ) – 実機デバッグ(実機とEthernet or USB接続だけでデバッグ)• OpenCV、ARToolKitなどサードパーティとの連携• 低消費電力システムを低コストで実現できる – 消費電力 5W程度(PC:200W, ネットブック15W) – ライセンス料 必要なし→ Beagleboardでカンタンに体験してみましょう
  6. 6. Beagleboardとは• ARM搭載ワンボードコンピュータ• 価格:$149(12,000程度)• CPU:ARM Cortex-A8• 海外・日本のコミュニティ・ メーリングリストで話題と なっている Beagleboard-xM
  7. 7. - BeagleBoard BeagleBoard-xMSize 3.1"x3.0" 3.25"x3.25"MPU OMAP3530 AM3715Frequency 720MHz 1GHzDhrystone MIP 1200 2000Spolygon/s up to 10 million up to 20 million 128MB RAM, 256MB NAND flaMemory 512MB RAM shLCD Expansio o oExpansion I2C, I2S, SPI, MMC/SD I2C, I2S, SPI, MMC/SDVideo DVI-D(HDMI) DVI-D(HDMI) カメラ接続は可能だがCamera Heade Beagleboardにカメラはな - or いS-VIDEO o oJTAG o oUSB Host 1 4Ethernet - oAudio Stereo IN/OUT Stereo IN/OUTSD/MMC slot SD micro SDSerial pin connector 引用:Hacking My Way ~itogのhack日記 RS232c http://d.hatena.ne.jp/itog/20100610/1276135718
  8. 8. 組込みAndroidの定義• 組込みAndroidとは – 任意のターゲットデバイスに移植された カスタムAndroid (Androidがオープンソースだからできること)• 何をカスタマイズできる? – Linuxカーネル – アプリケーションフレームワーク – 標準ライブラリ – Androidランタイム
  9. 9. Android アーキテクチャAndroidアプリケーションで変更可能な範囲組込みAndroidカスタム可 今日の実習のゴール Androidをカスタマイズして リアルタイム画像処理システムを構築しましょう
  10. 10. 実習ゴールまでの道のり OpenCVサンプルデモ 映像データ カスタムカーネル Beagleboard-xM必要なステップ USBカメラ1.Beagleboard-xM上でAndroidを動作させる2.AndroidにUSBカメラを認識させる3.USBカメラの映像をOpenCVで画像処理させる
  11. 11. 今日の実習内容第1ステップ AndroidシステムをBeagleboard-xMへ載せる Beagleboard-xM
  12. 12. 今日の実習内容第2ステップカーネルをカスタムしてUSBカメラを認識させる カスタムカーネル Beagleboard-xM USBカメラ
  13. 13. 今日の実習内容第3ステップ OpenCVでリアルタイム画像処理 OpenCVサンプルデモ 映像データ カスタムカーネル Beagleboard-xM USBカメラ
  14. 14. 準備するもの• PC – VMPlayer : Ubuntu 10.04 – User:beagle Pass:beagle• Beagleboard-xM• microSD• HDMI-DVIケーブル• USB-シリアル変換ケーブル• ACアダプタ• USBケーブル(オス-miniB)• USBカメラ• USBマウス• microSDカードリーダ
  15. 15. 実習スタート• 配布資料に従って実習を開始してください• 第一ステップでは AndroidシステムをBeagleboard-xMへ載せて みよう!• Geekleboardのホームページに記事内容があ ります• User: beagle , Password : beagle
  16. 16. 補足資料
  17. 17. ブートファイル解説$ ls /media/bootMLO START_HERE boot.scr u-boot.bin uImage• MLO: x-loader と呼ばれるブートローダ。 ※Master Boot Recoderへ書かれる必要がある(フォーマット後、 一番最初にコピー)• u-boot.bin : u-boot と呼ばれるブートローダ• boot.scr : u-bootの設定ファイル ※テキストファイルのように見えるがバイナリファイル• uImage : カーネルイメージ
  18. 18. Android起動までのブートプロセス Boot ROM x-loader u-bootブートローダ ブートローダ1 ブートローダ2 ブートローダ2 (CPU内蔵) (容量小) (容量中) ファイル uImage Android Linux システム カーネルイメージ ルートディレクトリ (容量大) (容量大大)
  19. 19. ブートプロセス • 起動の仕組み ブートローダ Boot ROM x-loader u-bootブートローダ ブートローダ1 ブートローダ2 ブートローダ2 (CPU内蔵) (容量小) (容量中) x-loader SRAM 64K SDRAM 512M u-boot ブートローダの容量によって2段階に分けて ロード
  20. 20. Android起動までのブートプロセス• 電源ON• TIのチップ内のブートROMがSRAMへ第 一ブートローダ(x-loader)をロード• x-loaderが第二ブートローダ(u-boot)を SDRAMへロード• u-bootがカーネル (uImage)をSDRAMに展 開• カーネルがmicroSD内のファイルシステム をマウント
  21. 21. 第2ステップ• 目標 – カーネルのUVCモジュールを有効にしましょ う – UVC(USB Video Class)• カーネルのビルド作業 – make defconfig : コンフィグを初期化 – make menuconfig : コンフィグを設定 – make uImage : カーネルイメージを作成• uImageだけを差し替える
  22. 22. make menuconfigでは 何をしているのか?• Kconfigツリーを表示• 設定後のファイルを.configへ保存• Kconfig: ファイル kernel/drivers/media/video/uvc/Kconfigconfig USB_VIDEO_CLASS tristate "USB Video Class (UVC)" ---help--- Support for the USB Video Class (UVC). Currently only video input devices, such as webcams, are supported. For more information see: <http://linux-uvc.berlios.de/>…
  23. 23. menuconfig後のmake時• .configファイルを読み込み• y/m/ナシ でmakeする/しないを判定ファイル kernel/drivers/media/video/uvc/Makefileuvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.ouvc_ctrl.o uvc_status.o uvc_isight.oobj-$(CONFIG_USB_VIDEO_CLASS) += uvcvideo.oちなみに obj-yとするとmenuconfigに関係なくカーネルに組み込まれますuvcvideo-objs := uvc_driver.o uvc_queue.o uvc_v4l2.o uvc_video.ouvc_ctrl.o uvc_status.o uvc_isight.oobj-y += uvcvideo.o
  24. 24. OpenCVとは• オープンソースの画像処理ライブラリ – コンピュータビジョンに関する 数多くの機能を提供する – 最新研究の画像処理技術やGPGPUにも対応• 言語インターフェイス – 元はC言語向け – 今では C++, Python, Ruby, Java など• 対応OS – Windows, MacOS, Linux, FreeBSD, iOS, Android な ど• ホビーユースから学術研究用途まで 幅広く使える画像処理ライブラリ
  25. 25. Android OpenCVライブラリ • 言語 – Java – C/C++ • Viewへ渡してやるた めのMat⇔Bitmap変 換メソッドなどが用 意されている
  26. 26. OpenCVプログラミング• mat:OpenCVの基本的な画像クラス – 画像の生データ – 縦横サイズ – 画素のビット数 – チャネル数 – などなど
  27. 27. • サンプルコードを書き換えて遊んでみる
  28. 28. Beagleboard-xM 情報源• Beagleboard-xMやポーティング情報• メーリングリスト – Google group : beagleboard• Webページ – TI DevKit : • User Guide http://www.ti.com/tool/androidsdk-sitara • Developer Guide• 書籍 – 基礎から学ぶ 組み込みAndroid (出版:C&R研究所) – 組み込みAndroid エキスパート テクニックブック (出版:C&R研究所 4月出版予定)
  29. 29. OpenCV 情報源• メーリングリスト – Google group : android-opencv• 日本Androidの会 京都支部 – 2011-12-03発表資料 OpenCVをAndroidで動かしてみた https://sites.google.com/site/jagkyoto/files

×