OpenRoadsでロボットアプリケーションを作る

2009年6月26日(金)
春日 知昭

_SSR_CMD_SERVOパケット

 例えば「センサーの示す方向へ首だけを向ける」といった制御を行いたい場合に、あらかじめ決めたポーズやモーションを実行するという制御方法は現実的ではありません。そのような場合はこのパケットを用いることによって、サーボ単体の角度と移動時間を指定して動かします。例えば、図2-1の_SSR_CMD_SERVOパケットの例はID2(首)のサーボを10°の位置に1秒で動かすことを示しています。初期位置がどこにあろうとも1秒で10°の位置に動こうとすることに注意してください。

------------------------------------

typedef struct _SSR_LAN_FILE {
    char sFileName[16];          /* ファイル名 */
  unsigned short type;         /* ファイル種別 */
  unsigned short index;        /* インデックス */
  unsigned short length;        /* データ部の長さ */
    unsigned char data[_SSR_MAX_DATA] ;  /* データ本体 */
} SSR_LAN_FILE;

図2-2:_SSR_CMD_FILEパケットの構造

------------------------------------

パケット名
(太字が応答パケット)
内容
_SSR_CMD_STICK ジョイスティックのデータを送信
_SSR_CMD_FILE ファイルの送信
_SSR_CMD_FILE_ACK ファイルの受信応答
_SSR_RCMD_POSE_FILE ポーズの実行命令
_SSR_RCMD_MOTION_FILE モーションの実行命令
_SSR_RCMD_MOTION 登録モーションの実行命令(ID指定)
_SSR_CMD_SERVO サーボの個別制御命令(ID指定)
_SSR_CMD_SERVO_NAME サーボの個別制御命令(サーボ名指定)
_SSR_CMD_GET_SERVO_NAME サーボの個別情報を要求する命令
_SSR_CMD_SERVO_INFO サーボ個別情報の応答
_SSR_CMD_GET_ROBOT ロボットの情報を要求する命令
_SSR_CMD_ROBOT_INFO ロボット情報の応答

図2-3:パケットの一覧

_SSR_CMD_FILEパケットとの組み合わせ

 ポーズファイルやモーションファイルをパソコンから_SSR_CMD_FILEパケットで複数のパケットに分割 して送信し、その後、_SSR_RCMD_POSE_FILEパケットや、_SSR_RCMD_MOTION_FILEパケットで実行命令を出すことがで きます。

 1パケットあたりのファイルデータの最大容量は256バイトです。それを超える容量のファイルを転送する場合は_SSR_CMD_FILEパケットを用 いて256バイトごとに分割して送ります。_SSR_CMD_FILEパケットには、ファイル名、ファイル種別、ファイルインデックス、パケットに含まれ るデータ部の長さ、データ本体という5種類の情報が含まれています。図2-2に、_SSR_CMD_FILEパケットの構造を示します。

 受信側(ロボット)は、_SSR_CMD_FILEパケットを受信するたびに、指定されたファイルをオープンし、データを書き込み、そしてクローズしま す。インデックスが0の場合、ファイルを新規書き込みモードでオープンし、0以外の場合はアペンドモードでオープンします。これにより、複数のパケットに 分けて送られたファイルが、受信側で1つのファイルにまとめられるのです。

 パソコンからポーズやモーションをロボットに転送する場合、まず一時ファイルを_SSR_CMD_FILEパケットで送信した後に、そのファイル名を指 定した_SSR_RCMD_POSE_FILEパケットや_SSR_RCMD_MOTION_FILEパケットを送信します。これを受信したロボットは、 直前に転送されたファイルに基づいて、関節の動作やLEDの点灯/消灯、サウンドデータの再生などを行います。

 以上、ロボットに命令する系統の制御を見てきましたが、OpenRoadsにはロボットからの応答パケットも何種類か規定されています。図2-3に命 令・応答含めたすべてのパケットを示します。

 応答パケットの中にもおもしろいものが含まれていることに気づきましたか?例えば、ロボットを手で押したりすると、 _SSR_CMD_SERVO_INFOパケットでサーボの負荷を読み、それに応じた命令を与えて、ロボットが「痛い! やめて~」などと人間的な反応をすることも可能なのです。

スピーシーズ株式会社
スピーシーズ株式会社代表取締役。ソニーにて、UNIXワークステーション「NEWS」やPC「VAIO」、犬型ロボット「AIBO」などITおよびロボット関連の開発に携わる。2001年、同社を退社後、スピーシーズを設立。ロボット技術とIT技術の融合によるインターネットロボットの市場導入を目指す。2010年は初の家庭用ロボットの発売を計画している。http://vision.speecys.com/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています