作業用オートモ 解説(その2)

ロボットは「やっぱり見た目が大事」。けどソフトの工夫は見た目じゃわかりにくいのでここで紹介しておきます。

作業用オートモは、バンダイのネットタンサーを使用することでネットワーク経由で制御可能です。ネットタンサーには「RobotWorks」というツールが提供されていますが、これだけでは二足歩行ロボットを制御できません。

ネットタンサーは、PCからロボットをリモートコントロールするための2つのネットワークプロトコルを提供しています。

ネットタンサー本体のHTTPサーバー機能が搭載されています。InternetExplorerなどのWEBブラウザでアクセスすることで各種設定と動画のモニタリング(JAVA)ができます。ブラウザを利用せずに独自開発ソフトの映像・音声の通信を行う場合もこのHTTPの回線(ポート)を利用します。

PCとデータの相互通信を行うためのTCPサーバー機能が搭載されています。PCからネットタンサーにネットワーク通信パケットを送信するとシリアル通信データに変換+出力され、マイコンなどからネットタンサーにシリアル通信データを入力するとネットタンサーからPCへネットワーク通信パケットに変換+送信されます。

TCPプロトコルを使ってロボット制御マイコンをリモートコントロールするわけですが、ネットタンサーのシリアル通信側のビットレートが9600bpsに固定されているため、ロボット制御マイコン側を9600bpsに同調させる必要があります。

市販のロボットコントローラとして近藤科学のRCB-3を制御するためにこのように考えてみました。図をみてください。

  1. PCのTCPクライアントソフトで、プレステコントローラのキーとアナログジョイスティックの入力値をDirectXで取得。取得値を使ってRCB-3の拡張シリアルコマンド(ちょっといじってます。後日解説)を生成し、100ms間隔でネットタンサーにパケット送信。
  2. ネットタンサーが受信したパケットをシリアル変換して9600bpsで出力。
  3. KCB-1のCOMポートでシリアルのコマンドを取得し解析する。RCB-3向けコマンドならSIO2を使用して2400bpsにビットレートを落としてRCB-3の低速シリアルポートにそのままコマンド送信(信号のHi-Loに注意)、KCB-1向けコマンドならSIO1を使用してディジーチェーンで複数のKRS-4014を制御したりPWM出力でKRS-4024やMANOI/DO3やLEDを制御。
  4. KCB-1の制御結果(受信コマンド内容、KRS-4014の回転量、AD入力値)をレスポンスとしてネットタンサーに返信。
  5. ネットタンサーがパケットに変換してPCにレスポンスを送信。
  6. TCPクライアントソフトでレスポンスに含まれる制御結果を、画面上にグラフィカルに表示。

工夫というと、9600bps・2400bps変換器としてKCB-1を利用したこと。そして変換器としてだけの利用ではもったいないのでサーボ制御やセンシングを行ったこと。

KCB-1がもっているシリアル通信を3チャネルのうち、1つはCOMとしてTXD、RXD、GND、他の2つがSIO1とSIO2でシリアルサーボ制御用にTXD/RXD、12V、GNDという構成です。
変換にはすくなくとも2チャネル使用するので、ネットタンサー側との送受信にCOMを利用して、RCB-3側にSIO2のTXD/RXDのTXD(送信)機能のみを使って低速シリアルポートに拡張シリアルコマンドを送りつけることにしました。
また拡張シリアルコマンドのアナログ4値はPCに接続したPSコントローラのアナログスティックからひろえるのでシームレス歩行に有用です。

検証は早々に終わっていたので、大会が終わったら開発したPCソフトとKCB-1ファームウェアを公開しようと思っていたのですが、上記と同じようなシステムをROBOSPOTさんが予選1週間前に公開したので、やめにしました。そちらを使うのをおすすめします。
http://www.robospot.jp/cgi-bin/diarypro/diary.cgi?no=163