発表タイムまでに頑張って作ろうと思います。
つづく。
前回に引き続きロボットを作っている住友です。
今回はロボットとAndroid端末を接続し、手足を操作できるようにします。
このロボットにはBluetoothのモジュールであるRBT-001を搭載していますので、Android端末とはBluetoothで通信します。AndroidのBluetoothのSPP通信はAndroid2.0から正式サポートされたので
現在のほとんどの端末で利用できます。Androidの設定画面から対象機器とのペアリングを行い、AndroidアプリからBluetoothAdapterクラスを経由して対象機器のBluetoothSocketを取得すればInputStreamとOutputStreamが取得できますので、後はプロトコルを策定してそれに合わせた通信処理を実装すればロボットを制御することができます。
SPP通信のBluetoothSocketを取得しただけではデータのやりとりはできてもどのように命令すれば良いかがわかりません。簡単にですがプロトコルを策定します。まず命令のデータの一つの塊をパケットとし、それの構造をプロトコルとして策定します。このパケットにはデータ化けやプログラムミスなどを検知するためにChecksumを付加したり、このパケットが命令用か制御用かを判定するためのTypeを付加しています。(実際にはSPP通信はエラー訂正を有しているためChecksum、STX、ETXは不要ですが、使用しているBluetoothモジュールの兼ね合いで付加しています。)
次に命令として送る際のデータ部の構造を策定します。パケットのCommandの値に対応して、ロボットに対する命令の内容を決めます。ここではサーボのみ制御するもの(Command=0x01)、眼のLEDのみ制御するもの(Command=0x02)、サーボと眼をまとめて制御するもの(Command=0x03)を決めています。
ここまで決めればAndroidとArduino側で上記で策定したプロトコルで通信できるプログラムを実装すれば命令の送信とロボットの操作が行えるようになります。
Android側でロボットを操作するために必要な画面を作成します。ここでは単純なコントローラーと、それらをアクションとして端末に保存したり、保存されたアクションを再生する機能を実装しています。
ロボットには両目、両手、両足、両耳、首の合計9箇所の操作が可能なので、それらの操作用のUIを実装しました。
コントローラーだけでは単独のポーズを作るだけなので、ポーズを0.1秒単位で順番に切り替えてアクションを行えるようにそれらを編集できる画面を作りました。
作ったアクションを選択するとアクションを再生できる画面も併せて作りました。
以上でロボット本体とそれを操作するためのソフトが出来上がりました。しかしまだ動くだけで面白みがいまいち欠けていると思います。次回はこれを面白くするために仕上げをしていきたいと思います。
文責:カスタマー開発部 住友孝郎
前回に引き続きロボットを作っている住友です。
今回はロボットとAndroid端末を接続し、手足を操作できるようにします。
このロボットにはBluetoothのモジュールであるRBT-001を搭載していますので、Android端末とはBluetoothで通信します。AndroidのBluetoothのSPP通信はAndroid2.0から正式サポートされたので
現在のほとんどの端末で利用できます。Androidの設定画面から対象機器とのペアリングを行い、AndroidアプリからBluetoothAdapterクラスを経由して対象機器のBluetoothSocketを取得すればInputStreamとOutputStreamが取得できますので、後はプロトコルを策定してそれに合わせた通信処理を実装すればロボットを制御することができます。
SPP通信のBluetoothSocketを取得しただけではデータのやりとりはできてもどのように命令すれば良いかがわかりません。簡単にですがプロトコルを策定します。まず命令のデータの一つの塊をパケットとし、それの構造をプロトコルとして策定します。このパケットにはデータ化けやプログラムミスなどを検知するためにChecksumを付加したり、このパケットが命令用か制御用かを判定するためのTypeを付加しています。(実際にはSPP通信はエラー訂正を有しているためChecksum、STX、ETXは不要ですが、使用しているBluetoothモジュールの兼ね合いで付加しています。)
次に命令として送る際のデータ部の構造を策定します。パケットのCommandの値に対応して、ロボットに対する命令の内容を決めます。ここではサーボのみ制御するもの(Command=0x01)、眼のLEDのみ制御するもの(Command=0x02)、サーボと眼をまとめて制御するもの(Command=0x03)を決めています。
ここまで決めればAndroidとArduino側で上記で策定したプロトコルで通信できるプログラムを実装すれば命令の送信とロボットの操作が行えるようになります。
Android側でロボットを操作するために必要な画面を作成します。ここでは単純なコントローラーと、それらをアクションとして端末に保存したり、保存されたアクションを再生する機能を実装しています。
ロボットには両目、両手、両足、両耳、首の合計9箇所の操作が可能なので、それらの操作用のUIを実装しました。
コントローラーだけでは単独のポーズを作るだけなので、ポーズを0.1秒単位で順番に切り替えてアクションを行えるようにそれらを編集できる画面を作りました。
作ったアクションを選択するとアクションを再生できる画面も併せて作りました。
以上でロボット本体とそれを操作するためのソフトが出来上がりました。しかしまだ動くだけで面白みがいまいち欠けていると思います。次回はこれを面白くするために仕上げをしていきたいと思います。
文責:カスタマー開発部 住友孝郎
Android KitKat Hacks プロが教えるテクニック & ツール
株式会社ブリリアントサービス 著
NFC Hacks プロが教えるテクニック&ツール
株式会社ブリリアントサービス 著
Androidプログラミングの教科書
藤田 竜史、要 徳幸、住友 孝郎、日高 正博、小林 慎治、木村 尭海 著
入門Androidアプリケーションテスト
瀬戸 直喜/株式会社ブリリアントサービス 著
実践スマートフォンアプリケーション開発
株式会社ブリリアントサービス、八木 俊広、原 昇平、かわかみ ひろき 著
ジオモバイルプログラミング
郷田まり子/宅間俊志/近藤昭雄 著
ANDROID HACKS プロが教えるテクニック&ツール
株式会社ブリリアントサービス 著