組込みAndroid入門実習
Upcoming SlideShare
Loading in...5
×
 

組込みAndroid入門実習

on

  • 15,285 views

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

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

Statistics

Views

Total Views
15,285
Views on SlideShare
9,856
Embed Views
5,429

Actions

Likes
0
Downloads
38
Comments
0

5 Embeds 5,429

http://d.hatena.ne.jp 5379
http://webcache.googleusercontent.com 31
http://translate.googleusercontent.com 9
https://www.google.co.jp 9
http://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

組込みAndroid入門実習 組込みAndroid入門実習 Presentation Transcript

  • 組込みAndroid入門講座OpenCVアプリでUSBカメラ画像を リアルタイム処理させよう 2012.2.25 日本Androidの会 神戸支部鈴木 圭介(すずき けいすけ)桐畑 鷹輔(きりはた ようすけ)
  • 水質バイオモニタリングシステム• 水内の毒素を判定し知らせる• 微生物を監視しその状態によって水質を 判定
  • 水質バイオモニタリングシステムの 内部構造 LEDs IN OUTWater USB Camera Beagleboard-xM Beagleboard-xM + Android + OpenCVで微生物をカウント&ロギング
  • 講義のはじめに• この講義の趣旨 – 組込みシステムを実際に構築し知見を広めよう • ARM搭載ワンボートコンピュータを使った 組込みAndroid画像処理システム構築• 今日やること – 実習中心:まずはやってみよう • 何をするか?:20分 • 実習・説明:2時間30分 • 休憩:10分 – 家に帰って復習を! 講義資料はWebで公開• 想定しているレベル – Linuxコマンドある程度理解 – カーネルビルド未経験~経験浅 – Androidアプリ作成経験あり
  • なぜ組込み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でカンタンに体験してみましょう
  • Beagleboardとは• ARM搭載ワンボードコンピュータ• 価格:$149(12,000程度)• CPU:ARM Cortex-A8• 海外・日本のコミュニティ・ メーリングリストで話題と なっている Beagleboard-xM
  • - 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
  • 組込みAndroidの定義• 組込みAndroidとは – 任意のターゲットデバイスに移植された カスタムAndroid (Androidがオープンソースだからできること)• 何をカスタマイズできる? – Linuxカーネル – アプリケーションフレームワーク – 標準ライブラリ – Androidランタイム
  • Android アーキテクチャAndroidアプリケーションで変更可能な範囲組込みAndroidカスタム可 今日の実習のゴール Androidをカスタマイズして リアルタイム画像処理システムを構築しましょう
  • 実習ゴールまでの道のり OpenCVサンプルデモ 映像データ カスタムカーネル Beagleboard-xM必要なステップ USBカメラ1.Beagleboard-xM上でAndroidを動作させる2.AndroidにUSBカメラを認識させる3.USBカメラの映像をOpenCVで画像処理させる
  • 今日の実習内容第1ステップ AndroidシステムをBeagleboard-xMへ載せる Beagleboard-xM
  • 今日の実習内容第2ステップカーネルをカスタムしてUSBカメラを認識させる カスタムカーネル Beagleboard-xM USBカメラ
  • 今日の実習内容第3ステップ OpenCVでリアルタイム画像処理 OpenCVサンプルデモ 映像データ カスタムカーネル Beagleboard-xM USBカメラ
  • 準備するもの• PC – VMPlayer : Ubuntu 10.04 – User:beagle Pass:beagle• Beagleboard-xM• microSD• HDMI-DVIケーブル• USB-シリアル変換ケーブル• ACアダプタ• USBケーブル(オス-miniB)• USBカメラ• USBマウス• microSDカードリーダ
  • 実習スタート• 配布資料に従って実習を開始してください• 第一ステップでは AndroidシステムをBeagleboard-xMへ載せて みよう!• Geekleboardのホームページに記事内容があ ります• User: beagle , Password : beagle
  • 補足資料
  • ブートファイル解説$ 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 : カーネルイメージ
  • Android起動までのブートプロセス Boot ROM x-loader u-bootブートローダ ブートローダ1 ブートローダ2 ブートローダ2 (CPU内蔵) (容量小) (容量中) ファイル uImage Android Linux システム カーネルイメージ ルートディレクトリ (容量大) (容量大大)
  • ブートプロセス • 起動の仕組み ブートローダ Boot ROM x-loader u-bootブートローダ ブートローダ1 ブートローダ2 ブートローダ2 (CPU内蔵) (容量小) (容量中) x-loader SRAM 64K SDRAM 512M u-boot ブートローダの容量によって2段階に分けて ロード
  • Android起動までのブートプロセス• 電源ON• TIのチップ内のブートROMがSRAMへ第 一ブートローダ(x-loader)をロード• x-loaderが第二ブートローダ(u-boot)を SDRAMへロード• u-bootがカーネル (uImage)をSDRAMに展 開• カーネルがmicroSD内のファイルシステム をマウント
  • 第2ステップ• 目標 – カーネルのUVCモジュールを有効にしましょ う – UVC(USB Video Class)• カーネルのビルド作業 – make defconfig : コンフィグを初期化 – make menuconfig : コンフィグを設定 – make uImage : カーネルイメージを作成• uImageだけを差し替える
  • 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/>…
  • 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
  • OpenCVとは• オープンソースの画像処理ライブラリ – コンピュータビジョンに関する 数多くの機能を提供する – 最新研究の画像処理技術やGPGPUにも対応• 言語インターフェイス – 元はC言語向け – 今では C++, Python, Ruby, Java など• 対応OS – Windows, MacOS, Linux, FreeBSD, iOS, Android な ど• ホビーユースから学術研究用途まで 幅広く使える画像処理ライブラリ
  • Android OpenCVライブラリ • 言語 – Java – C/C++ • Viewへ渡してやるた めのMat⇔Bitmap変 換メソッドなどが用 意されている
  • OpenCVプログラミング• mat:OpenCVの基本的な画像クラス – 画像の生データ – 縦横サイズ – 画素のビット数 – チャネル数 – などなど
  • • サンプルコードを書き換えて遊んでみる
  • 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月出版予定)
  • OpenCV 情報源• メーリングリスト – Google group : android-opencv• 日本Androidの会 京都支部 – 2011-12-03発表資料 OpenCVをAndroidで動かしてみた https://sites.google.com/site/jagkyoto/files