2010年4月9日金曜日

Roomba OI (Open Interface) (旧SCI (Serial Control Interface))の勉強

やっと家にネットが開通しました!
そろそろ勉強を始めますか。
RO(omba)S(ystem)の勉強を!

前回紹介した公式コマンドPDFは間違っていました。
500シリーズ用のドキュメントがありましたので、こちらを読んでいきます。
http://www.irobot.lv/uploaded_files/File/iRobot_Roomba_500_Open_Interface_Spec.pdf

まず、通信スピードですが、ボーレート15520です。
設定すればもっと遅くできますが、今回はこのままにします。

ルンバには4つのSCIモードがあるようです。
off, passive, safe, full
の4つです。

充電中や電源がやばいときはoffになります。

スターとコマンドを受け取るとpassiveモードになります。
passiveモードでできるのは

  • センサデータの取得
  • 掃除の開始・終了
  • 歌の設定
  • 充電開始
だけです。
なのでロボットのように操作はできません。

で、コマンドを送るとsafeモードにうつります。
セーフモードでは以下の3つの安全機能が有効な状態で自由にルンバを操作できます。
  • 落下防止機能
  • 脱輪検知
  • 充電器合体による充電
これが発生すると自然にpassiveモードに移行してしまいます。

コマンドを送ればこれらの制限のないfullモードへ移行できます。

今回はsafeモードでいいかな。

コマンドは基本1バイト。データがあとにつづきます。

主なコマンド([]の中は指令の数字。)

Start [128] .... スタート指令。passiveモードへ遷移。最初にかならずこれをやる。
Safe[131] ...  safeモードに遷移
Full[132] ....  safe -> fullに遷移
Drive[137][vh][vl][rh][rl] ... 並進速度V[mm/s], 回転半径R[mm]で動く。
どちらも正にすると左前に進む。
-500 < V < 500
-2000 < R < 2000
32768 = 0x8000hのとき直進
-1で時計回り、1で反時計回りにその場回転。
V, Rはsignedの2バイト。

あとはLEDとか、センサとか、音楽とか楽しいのが残っていますが、
まあ、とりあえずこれくらいでためしてみますかねぇ。

0 件のコメント:

コメントを投稿