前回に引き続きロボットを作っている住友です。
今回はロボットとAndroid端末を接続し、手足を操作できるようにします。
ロボットとの接続
SPPで接続
このロボットには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を実装しました。
SQLiteDatabaseにアクションを保存
コントローラーだけでは単独のポーズを作るだけなので、ポーズを0.1秒単位で順番に切り替えてアクションを行えるようにそれらを編集できる画面を作りました。
アクションの選択画面
作ったアクションを選択するとアクションを再生できる画面も併せて作りました。
以上でロボット本体とそれを操作するためのソフトが出来上がりました。しかしまだ動くだけで面白みがいまいち欠けていると思います。次回はこれを面白くするために仕上げをしていきたいと思います。
文責:カスタマー開発部 住友孝郎
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿