注意書き
法令遵守
安全確保
まえがき
そうだ!ドローンの制御アプリを作ってみよう。
飛ばすだけで満足ですか?
こんなことができる。かも!?
そうだ!ライントレースしてみよう
いきなりそんなのは自信がありませんって人
アプリの開発・ビルド環境について
ARSDK詳細
ARSDKの内部構造
ARSDKで何ができるの?
機体情報
機体設定
機体の制御
メディア関係
ライブ映像
その他
ARSDKのAPI解説
列挙型の命名規則
非同期実行
新旧API
従来のAPI( ARCommand クラス)を使う場合
従来のAPIでのコールバック処理
新しいAPI( ARController クラス)を使う場合
新しいAPIでのコールバック処理
実際の処理例
処理手順
機体の検出・接続処理
機体の検出処理
接続処理
切断処理
コールバック処理
コールバックの登録・登録解除
ARDeviceControllerListener#onStateChanged
ARDeviceControllerListener#onExtensionStateChanged
ARDeviceControllerListener#onCommandReceived
コマンド送信
初めてのコマンド送信
日付・時刻設定コマンド送信
操縦コマンド送信
制御
いざアプリを作ってみましょう
サンプルアプリの概要
サンプルアプリのソースコードについて
プロジェクト作成
AndroidManifest.xml
arflight モジュールを追加
画面作成
デバイス探索・接続用の画面を作る
飛ばしてみる。飛んだ?
ライブ映像を取得する
ライブ映像取得用のコールバック処理
ライブ映像取得の有効/無効を切り替える
デコード処理
h.264デコーダーの初期化処理
映像の表示方法と解析用映像データの読み取り
機体からのライブ映像を取得する
ライブ映像の解析
まずは飛ばす場所
処理内容の概要を決める
映像の前処理
Android上で行うことが出来る映像処理
OpenCVをネイティブライブラリから使えるようにする
OpenCVライブラリを取得する
OpenCV用のモジュールを追加する
Android Studioでのネイティブライブラリのビルド設定を変更する
ライブ映像をcv::Mat として取得する
PBO(Pixel Buffer Object)を使う
PBOの生成
PBOを使ったフレームバッファの非同期読み込み
PBOの破棄処理
いよいよ待望の映像処理
機体側のカメラ設定を調整する
Android SDK標準の映像フィルター処理
Media Effect API( android.media.effect )を使う
Media Effect APIの詳細
EffectContext クラスのメソッド
EffectFactory クラスのメソッド
Media Effect APIで使用可能な映像効果
Effect クラスのメソッド
Media Effect APIの使い方
Media Effect APIの使い方:コードスニペット
SDK標準の映像処理APIのラッパークラスを作る
OpenGL|ES(GPU/フラグメントシェーダー)での映像処理
フラグメントシェーダーでの畳み込み演算による映像処理
カーネル行列を使わないGPU/シェーダーでの映像処理
OpenCVでの映像前処理
サンプルアプリでの映像前処理
ライブ映像の解析
ネイティブ側での処理
グレースケール変換
輪郭線検出
ライン判定処理
ネイティブ側からJava側へデータを引き渡すには
解析結果から機体をどのように動かすかを決定する
追随性を高めるために
注意書き
法令遵守
安全確保
飛行前点検
もっと頑張りたい人は(あんなことこんなこと)
もっと高度な制御をしたい人は
楽しくみんなで遊べるアプリ
こんなこともしてみた
音声認識で飛ばしてみる
Androidでの音声認識処理
音声認識結果を飛行コマンドに変換
音声フィードバックを行う
機種の個別機能も制御してみる(ミニドローン)
シンクロ飛行させてみる
最後に
補足
OpenGL|ES、EGL操作用のクラス
GLHelper クラス
EGLBase クラス
Texture2dProgram クラス
FullFrameRect クラス
TextureOffscreen クラス
EglTask クラス
それ以外のクラス
Vector クラス
付録
声優による録りおろし音声ファイル
女性タイプ
幼女タイプ
イケボタイプ
やさぐれタイプ