RoombaをVisual C#で制御する(その2)
花岡ちゃんのウィークエンド:ルンバを試す
前回ハードは作りましたから、あとはコマンドを送るだけです。前出の"iRobot Roomba 500 Open Interface(OI)Specification"によると、コマンドはバイナリで表記されるので、TeraTermなどからASCIIコードで簡単に送る訳にはいきません。XBeeの設定に使うX-CTUのターミナル機能は、バイナリのインターフェィスを備えているので使えそうですが、一つ問題があります。Roombaのコマンドは10進表記なんですが、X-CTUは16進表記でのインターフェイスしかありません。その都度、10進のコマンドを16進に直して入力するのは面倒です。
そこでVC#2010Expressで簡単なターミナル、RoombaTESTERを製作しました。こんな画面です。
一番上の部分がシリアルポートのコントロールです。ポートを選んでOPENボタンをクリックします。ポートが開けたら右に"OPEN"と表示され、開けなければ"ERROR"と表示されます。
その下が、よく使うコマンドを送るボタンです。
さらに下のSEND1とSEND2は各々の右側のボックスに入力したコマンドパケットを送信するボタンです。これでいろいろなコマンドを試してみることが出来ます。コマンドパケットが5つより短い場合は、使わないボックスを空白にしておきます。
一番下の大きなボックスが、Roombaからのリプライを表示する部分です。センサーコマンドなどのテストに使います。ボックスの内容は右下のCLEARボタンで消去できます。
VC#2010のプロジェクトファイルはこれです。
「roombaTest.zip」をダウンロード
■テストしてみましょう
Roombaを128mm/Sで前進させてみます。
1:インターフェイスに電源を切ったRoombaとパソコンを接続し、インターフェイスの電源を入れる
2:VC#2010でプロジェクトファイルを開きRoomba TESTERを起動
3:インターフェイスを接続したCOMポートを開く
4:Roombaのパワーボタンを押して電源を入れる
5:"Start"、"Safe"ボタンを順番に押してRoombaをSafeコマンドモードにする。Roombaのパワーランプが消える
6:テスト用のコマンドとして上のスクリーンショットにある値をSEND1、SEND2に入力
これで準備完了です。SEND1をクリックすると走り始め、SEND2をクリックすると停止します。結構早く走りますので、狭い場所ではSEND1の3つ目の128を50くらいにして試してください。ゆっくり走ります。
■Tips
Safeモードなので持ち上げるとPassive(通常モード)に戻り、全モーターが停止、パワーランプが点灯します。万一コマンドで止まらない場合は持ち上げてください。
この状態から再度コマンドを送るには"Start"、"Safe"ボタンを押してモードを切り替えます。
実験終了後Roombaの電源を切るには、持ち上げてPassiveモードに戻し、Roombaのパワーボタンを操作するか、TESTERの"Power"ボタンをクリックしてください。
次回は最低限のコマンドについて解説します。
« RoombaをVisual C#で制御する(その1) | トップページ | RoombaをVisual C#で制御する(その3) »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサVL53L0Xを複数使うには(2022.05.01)
- 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(おしまい)(2022.04.14)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その3)(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その2)(2022.04.12)
« RoombaをVisual C#で制御する(その1) | トップページ | RoombaをVisual C#で制御する(その3) »
コメント