2013年1月7日月曜日

根性試しにロボットを作る~ソフト作成編~



前回に引き続きロボットを作っている住友です。


今回はロボットとAndroid端末を接続し、手足を操作できるようにします。


ロボットとの接続


SPPで接続


このロボットにはBluetoothのモジュールであるRBT-001を搭載していますので、Android端末とはBluetoothで通信します。AndroidのBluetoothのSPP通信はAndroid2.0から正式サポートされたので


現在のほとんどの端末で利用できます。Androidの設定画面から対象機器とのペアリングを行い、AndroidアプリからBluetoothAdapterクラスを経由して対象機器のBluetoothSocketを取得すればInputStreamとOutputStreamが取得できますので、後はプロトコルを策定してそれに合わせた通信処理を実装すればロボットを制御することができます。


f:id:bs-android:20130107003337p:image


プロトコルの策定


SPP通信のBluetoothSocketを取得しただけではデータのやりとりはできてもどのように命令すれば良いかがわかりません。簡単にですがプロトコルを策定します。まず命令のデータの一つの塊をパケットとし、それの構造をプロトコルとして策定します。このパケットにはデータ化けやプログラムミスなどを検知するためにChecksumを付加したり、このパケットが命令用か制御用かを判定するためのTypeを付加しています。(実際にはSPP通信はエラー訂正を有しているためChecksum、STX、ETXは不要ですが、使用しているBluetoothモジュールの兼ね合いで付加しています。)


次に命令として送る際のデータ部の構造を策定します。パケットのCommandの値に対応して、ロボットに対する命令の内容を決めます。ここではサーボのみ制御するもの(Command=0x01)、眼のLEDのみ制御するもの(Command=0x02)、サーボと眼をまとめて制御するもの(Command=0x03)を決めています。


f:id:bs-android:20130107003338p:image


ここまで決めればAndroidとArduino側で上記で策定したプロトコルで通信できるプログラムを実装すれば命令の送信とロボットの操作が行えるようになります。





アクションの作成/編集機能


Android側でロボットを操作するために必要な画面を作成します。ここでは単純なコントローラーと、それらをアクションとして端末に保存したり、保存されたアクションを再生する機能を実装しています。


コントローラー画面


ロボットには両目、両手、両足、両耳、首の合計9箇所の操作が可能なので、それらの操作用のUIを実装しました。


f:id:bs-android:20130107003339p:image


SQLiteDatabaseにアクションを保存


コントローラーだけでは単独のポーズを作るだけなので、ポーズを0.1秒単位で順番に切り替えてアクションを行えるようにそれらを編集できる画面を作りました。


f:id:bs-android:20130107003340p:image


アクションの選択画面


作ったアクションを選択するとアクションを再生できる画面も併せて作りました。


f:id:bs-android:20130107003341p:image




以上でロボット本体とそれを操作するためのソフトが出来上がりました。しかしまだ動くだけで面白みがいまいち欠けていると思います。次回はこれを面白くするために仕上げをしていきたいと思います。




文責:カスタマー開発部 住友孝郎





140 180 Android

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...