そろそろ勉強を始めますか。
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 件のコメント:
コメントを投稿