ADKを使って     音声コマンドで操作する     戦車を作ってみた             第13回Android勉強会in札幌                    at 2012/6/2(sat)               大路 裕...
あばうと・みー         札幌のWeb/スマートフォン系フリーランサーです。         最近はAndroid専業になってます。         元々Web系プログラマーです。単独のサーバから         Amazon EC2やG...
あばうと・みー    一方、電子工作に関しては...         ラジコンは好きです。         元々電子工作には興味がありました。         でも最後にハンダゴテを触ったのは、高校の工作の         時間だった気がします...
こんな僕でも、音声コマンドで動く              戦車を作ることができたので、             その過程をお伝えしようと思います12年6月2日土曜日
まずはどんなもんか             動かしてみましょう12年6月2日土曜日
全体構成                                   コイツ日本語わかる                                         Android             コイツ動く        ...
何を作ろう?         せっかくなので、動くものがいい             ラジコンを改造しよう!         どんなラジコンを改造しよう?             ヘリコプター → × 操縦が繊細過ぎる             ...
戦車を買う         ヤフオクでジャンク扱いのものを買いました             基盤は死んでてもどうせ捨てるので             挫ける可能性を考慮し最初は安いやつを狙う12年6月2日土曜日
まずは戦車を動かしてみる         マジにゴミだと困るので、一応動くことを確認             多少壊れてるけど一応ひと通り動くようだ12年6月2日土曜日
戦車ラジコンの構造         基本的に、左右のキャタピラそれぞれにモーターが         付いている         両方回せば前進、右だけ回せば左旋回、両方逆回転         すればバック12年6月2日土曜日
立止マッテ考エル         このプロポ、左右ともに上下しかついて無いよね         でも、戦車にはBB弾を発射する機能ついてるよね12年6月2日土曜日
はい、変なの引いたー               ( ´_ゝ`)12年6月2日土曜日
戦車をバラす         そうは言っても買ってしまったのでしょうが無い         バラして構造を確かめ、テスターを使って電圧を計測         する             戦車が届いて             5分後の状況12年...
どうやら、右キャタピラを               逆回転させると、             BB弾を発射するらしい。                   変なの。               (そういうギヤボックスになってる)12年6月2日...
調査結果         搭載しているバッテリーはマンガン電池単三4本直列         (1.5V×4本=6.0V)         モーター2つだけで動いている         モーターはそれぞれ6.0Vで動いているらしい        ...
基本方針を考える         Arduinoには5V電源が必要、かつモーターを回すと電         圧が下がり5Vをキープできないので、別途バッテ         リーを積む必要がある         とりあえず最初はブレッドボードで回...
モーターを逆回転させる方法         ソフトならif文でできることが、電子工作だと意外に         面倒らしい         ググってみたら、Hブリッジという回路が必要らしい             こうしたい   Hブリッジ概念...
ごめん、いろいろ無理!                 (>_<)12年6月2日土曜日
モーターを逆回転させる方法         さらに調べると、Hブリッジ回路を内蔵したドライバ         (IC?)があるらしい         使い方は単純に結線するだけ!        前進・後退・停止はデジタル出力でコントロール。  ...
ブレッドボードで組む         そんなこんなで、一旦できました!         でも問題点山積み...             頭でっかち!             そして重い             戦車に載り切らない        ...
対策を考える(その1)         そもそも何故動かんのだ?             逆さにするとキャタピラは動く。でもトルクがな             いので走ることはできない。             9V電池を4個直列繋ぎ(=36v...
対策を考える(その2)         USB給電用のバッテリーでかすぎ!             コレはラジコンのバッテリーボックス(単三電池4             本)から取るように変更              接続用のコネクタはハン...
対策を考える(その3)         Arduino Mega-ADKでかすぎ!             使ってないポートが多すぎる! むだムダ無駄!!             最近発売されたHarpy-Nanoってのが、ちっちゃく     ...
対策を考える(その4)        そもそもブレッドボードでかすぎ!        ユニバーサル基板を使えば、小さ       表        くできるかも!?             部品をはんだで固定し、自分で             ...
ユニバーサル基板で組む         ホントに火を吹いた             実際に部品がハンダゴテに焼かれてしまった!!         でも、なんとかできた         すごく小さくなった!         でも、収まりが悪い  ...
ハード部分完成         今度こそ完成!             HarpyNanoとユニバーサル基板をソケットで接続し             た。収まり良いのでオススメ!             ケースは名刺入れのプラケースを削った1...
さて、いよいよ             ソフトウェア実装です12年6月2日土曜日
ADKの制御         ADKのリファレンス実装を理解することは大切だけ         ど、あれを毎回書くのは大変         Javaコード部分は、要はシリアル通信なので、送信         と受信をシンプルに実装した汎用クラス...
ADKCore(自作クラス)         ADK制御用自作クラスADKCoreを作った             インスタンスを作って             面倒な処理は全部移譲12年6月2日土曜日
ADKCore(自作クラス)         ADKへのメッセージ送信はsendCommand()         メッセージ受信はReceiveListenerを使う                                  これだけ...
音声コマンドの実装         android.speech.SpeechRecognizerというクラスを使         うと、音声認識した結果の文字列を取得できる12年6月2日土曜日
音声レスポンス         本当は映画などから必要な音源をピックアップした         かったけど、あまりに語彙が少なくて断念。Android         にしゃべらせることにした         Android標準のテキスト読み上...
音声レスポンス         使い方             APIDemosと同じコードで十分動きます             Locale.JAPANを指定するだけ12年6月2日土曜日
リモートコントロール         やっぱ人として、手元のAndroidを使って、ラジコン         を操作したくなりますよね?             せっかくアンテナ取ったのにね。         IP指定でソケット通信してもいいけ...
リモートコントロール         今回はXMPPを使う             GTalkとかJabberに使われてるプロトコル。要はIM             として必要な機能のためのプロトコル             今回は、手元のA...
まとめ         電子工作おもしろい。         みんな手を付けてない(=比較的簡単に解決できる問題         が身近にたくさん残っている=ビジネスチャンス!?)         タブレット型Android+ADKを使った自作...
おしまい         ご清聴ありがとうございました12年6月2日土曜日
Upcoming SlideShare
Loading in …5
×

Adkを使って音声コマンドで操作する戦車を作ってみた

3,863 views

Published on

第13回Android勉強会in札幌にて「ADKを使って音声コマンドで操作する戦車を作ってみた」として講演した時の資料です

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

No Downloads
Views
Total views
3,863
On SlideShare
0
From Embeds
0
Number of Embeds
1,895
Actions
Shares
0
Downloads
5
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Adkを使って音声コマンドで操作する戦車を作ってみた

  1. 1. ADKを使って 音声コマンドで操作する 戦車を作ってみた 第13回Android勉強会in札幌 at 2012/6/2(sat) 大路 裕介(まいむぞう)12年6月2日土曜日
  2. 2. あばうと・みー 札幌のWeb/スマートフォン系フリーランサーです。 最近はAndroid専業になってます。 元々Web系プログラマーです。単独のサーバから Amazon EC2やGAEを使ったクラウドまで、サーバ構 築からシステム開発まで一人でやってます。 最近はOpenCVやKinectや電子工作やってます。 日本Androidの会の北海道支部長をしています。12年6月2日土曜日
  3. 3. あばうと・みー 一方、電子工作に関しては... ラジコンは好きです。 元々電子工作には興味がありました。 でも最後にハンダゴテを触ったのは、高校の工作の 時間だった気がします。 電気の小難しい理論はわかりません。直列繋ぎと並 列繋ぎはわかります。(えっへん)12年6月2日土曜日
  4. 4. こんな僕でも、音声コマンドで動く 戦車を作ることができたので、 その過程をお伝えしようと思います12年6月2日土曜日
  5. 5. まずはどんなもんか 動かしてみましょう12年6月2日土曜日
  6. 6. 全体構成 コイツ日本語わかる Android コイツ動く WiFi (XMPP) 直流コード USB ADK Android コイツしゃべる12年6月2日土曜日
  7. 7. 何を作ろう? せっかくなので、動くものがいい ラジコンを改造しよう! どんなラジコンを改造しよう? ヘリコプター → × 操縦が繊細過ぎる 車 → × 速度が早すぎてハンドル操作が難しそう 戦車 → 鈍いし、キャタピラなので安定してる ◎ 操作がラフでもOK12年6月2日土曜日
  8. 8. 戦車を買う ヤフオクでジャンク扱いのものを買いました 基盤は死んでてもどうせ捨てるので 挫ける可能性を考慮し最初は安いやつを狙う12年6月2日土曜日
  9. 9. まずは戦車を動かしてみる マジにゴミだと困るので、一応動くことを確認 多少壊れてるけど一応ひと通り動くようだ12年6月2日土曜日
  10. 10. 戦車ラジコンの構造 基本的に、左右のキャタピラそれぞれにモーターが 付いている 両方回せば前進、右だけ回せば左旋回、両方逆回転 すればバック12年6月2日土曜日
  11. 11. 立止マッテ考エル このプロポ、左右ともに上下しかついて無いよね でも、戦車にはBB弾を発射する機能ついてるよね12年6月2日土曜日
  12. 12. はい、変なの引いたー ( ´_ゝ`)12年6月2日土曜日
  13. 13. 戦車をバラす そうは言っても買ってしまったのでしょうが無い バラして構造を確かめ、テスターを使って電圧を計測 する 戦車が届いて 5分後の状況12年6月2日土曜日
  14. 14. どうやら、右キャタピラを 逆回転させると、 BB弾を発射するらしい。 変なの。 (そういうギヤボックスになってる)12年6月2日土曜日
  15. 15. 調査結果 搭載しているバッテリーはマンガン電池単三4本直列 (1.5V×4本=6.0V) モーター2つだけで動いている モーターはそれぞれ6.0Vで動いているらしい 左キャタピラは前後に動くが、右キャタピラはバッ クさせるとBB弾を発射する モーターを逆回転させるには、+と-を入れ替えれば 良い(一般的にそういう構造)12年6月2日土曜日
  16. 16. 基本方針を考える Arduinoには5V電源が必要、かつモーターを回すと電 圧が下がり5Vをキープできないので、別途バッテ リーを積む必要がある とりあえず最初はブレッドボードで回路を組んでみ て、動いてから細部を考える(というか、最初から細 部まで想像できない)12年6月2日土曜日
  17. 17. モーターを逆回転させる方法 ソフトならif文でできることが、電子工作だと意外に 面倒らしい ググってみたら、Hブリッジという回路が必要らしい こうしたい Hブリッジ概念 実際の回路図12年6月2日土曜日
  18. 18. ごめん、いろいろ無理! (>_<)12年6月2日土曜日
  19. 19. モーターを逆回転させる方法 さらに調べると、Hブリッジ回路を内蔵したドライバ (IC?)があるらしい 使い方は単純に結線するだけ! 前進・後退・停止はデジタル出力でコントロール。 PWMを使ってアクセルコントロールも出来る。 モーター駆動は別電源を使える すばらしい!! こんなの12年6月2日土曜日
  20. 20. ブレッドボードで組む そんなこんなで、一旦できました! でも問題点山積み... 頭でっかち! そして重い 戦車に載り切らない ...動かない... 電流は来てるっぽい12年6月2日土曜日
  21. 21. 対策を考える(その1) そもそも何故動かんのだ? 逆さにするとキャタピラは動く。でもトルクがな いので走ることはできない。 9V電池を4個直列繋ぎ(=36v)にしてみる → 煙が出る そもそも、単三電池4本(=6v)で動いていたはず! 単三電池6本(=9v)のケースを見つけた。これなら いけるんじゃね? → 動いた よくわからんけど、9v電池だと出力できる電流が足りないとかなのかな? 動く要素は電圧だけじゃないんだ。へー12年6月2日土曜日
  22. 22. 対策を考える(その2) USB給電用のバッテリーでかすぎ! コレはラジコンのバッテリーボックス(単三電池4 本)から取るように変更 接続用のコネクタはハンダ付けして自作 電圧がちょっとぐらい変わっても動くはず!12年6月2日土曜日
  23. 23. 対策を考える(その3) Arduino Mega-ADKでかすぎ! 使ってないポートが多すぎる! むだムダ無駄!! 最近発売されたHarpy-Nanoってのが、ちっちゃく て安くて良い感じ! ADK互換 Arduino互換 デジタル入出力6ポート アナログ入力7ポート これで¥2880!! (HarpyNano単体の場合) 参照:harpyhack.com12年6月2日土曜日
  24. 24. 対策を考える(その4) そもそもブレッドボードでかすぎ! ユニバーサル基板を使えば、小さ 表 くできるかも!? 部品をはんだで固定し、自分で 配線する おれのハンダゴテが火を噴くぜ! 裏 ユニバーサル基板の例12年6月2日土曜日
  25. 25. ユニバーサル基板で組む ホントに火を吹いた 実際に部品がハンダゴテに焼かれてしまった!! でも、なんとかできた すごく小さくなった! でも、収まりが悪い 作り直しだ…12年6月2日土曜日
  26. 26. ハード部分完成 今度こそ完成! HarpyNanoとユニバーサル基板をソケットで接続し た。収まり良いのでオススメ! ケースは名刺入れのプラケースを削った12年6月2日土曜日
  27. 27. さて、いよいよ ソフトウェア実装です12年6月2日土曜日
  28. 28. ADKの制御 ADKのリファレンス実装を理解することは大切だけ ど、あれを毎回書くのは大変 Javaコード部分は、要はシリアル通信なので、送信 と受信をシンプルに実装した汎用クラスを使い回せ ば良いと思う12年6月2日土曜日
  29. 29. ADKCore(自作クラス) ADK制御用自作クラスADKCoreを作った インスタンスを作って 面倒な処理は全部移譲12年6月2日土曜日
  30. 30. ADKCore(自作クラス) ADKへのメッセージ送信はsendCommand() メッセージ受信はReceiveListenerを使う これだけ。12年6月2日土曜日
  31. 31. 音声コマンドの実装 android.speech.SpeechRecognizerというクラスを使 うと、音声認識した結果の文字列を取得できる12年6月2日土曜日
  32. 32. 音声レスポンス 本当は映画などから必要な音源をピックアップした かったけど、あまりに語彙が少なくて断念。Android にしゃべらせることにした Android標準のテキスト読み上げシステムText to Speach(TTS)は、日本語をサポートしていない 2011年9月にKDDI研究所よりN2 TTSという、標準フ レームワーク互換の日本語読み上げシステムが提供さ れた。現在はPlayストアからN2 TTSを無料でダウン ロードでき、TTSとして登録した後、日本語を渡すと 読み上げることができる12年6月2日土曜日
  33. 33. 音声レスポンス 使い方 APIDemosと同じコードで十分動きます Locale.JAPANを指定するだけ12年6月2日土曜日
  34. 34. リモートコントロール やっぱ人として、手元のAndroidを使って、ラジコン を操作したくなりますよね? せっかくアンテナ取ったのにね。 IP指定でソケット通信してもいいけど、将来的に複数 の端末を協調動作させたいので、ちゃんとしたプロ トコルを使いたい12年6月2日土曜日
  35. 35. リモートコントロール 今回はXMPPを使う GTalkとかJabberに使われてるプロトコル。要はIM として必要な機能のためのプロトコル 今回は、手元のAndroidからラジコンに乗ってる Androidに、テキストメッセージを渡してコント ロールする(複雑なデータならJSONでもOK) でも最近XMPPは下火で、ちゃんとメンテナンスされ ているAndroid用XMPPライブラリが少ない 今回はasmack-android-7というライブラリを使用す る。コードはステップ数が結構あるので割愛12年6月2日土曜日
  36. 36. まとめ 電子工作おもしろい。 みんな手を付けてない(=比較的簡単に解決できる問題 が身近にたくさん残っている=ビジネスチャンス!?) タブレット型Android+ADKを使った自作デバイス+自 作アプリ(+サーバ)の組み合わせで、業務用システムを 作る機会が増えてくるのでは?12年6月2日土曜日
  37. 37. おしまい ご清聴ありがとうございました12年6月2日土曜日

×