KMR-M6をリモートブレインで動かす(3回目)
3回目:RCB4ライブラリの紹介と使い方
◆前回のおさらい
前回、お掃除ロボットの動きを再現するために必要なものの紹介をいたしました。その一つにPC側でプログラムを作成し、ロボットに動作コマンドを送る説明をいたしました。
今回は、
①Visual StudioでRCB-4HVのコマンドを使えるようにします。
②PCとKMR-M6と通信ができる状態にします。
◆前記事
①Visual StudioでRCB-4HVのコマンドを使えるようにする。
◆RCB-4HVを制御する方法
RCB-4HVは内部にRAMとROMをもっています。
RAMは、ADポートやPIOポートのデータが保存されています。また、サーボモータの指令値なども保存され、常にデータは最新の状態に更新しています。
ROMは、起動時の初期値や初期化命令、モーションを保存しています。
今回、お掃除ロボットの動きを再現させるために、
①距離センサが接続されているADポートのデータが保存されているRAM上の値を取得する
②RAM上のサーボモータの指令値を変更しサーボモータを動かす
③ROMに保存してある前進などのモーションデータを実行する
PCからRCB-4HVのRAMにアクセスするには、シリアル(COM)経由でアクセスします。COMにコマンドを送ると、コマンドに応じた値を読み書きできます。
◆RCB4ライブラリについて
RCB-4HVにPCからアクセスするには様々なコマンドが必要です。このコマンドを一から作るのは困難です。弊社では、これらのコマンドを簡単にプログラムで使えるようにライブラリとして配布しています。
ライブラリは、下記からダウンロードし、ZIPファイルを適当なフォルダに展開してください。
・HTH4 Ver.2.2以降のプロジェクトの場合「RCB-4リファレンスセット Ver.2.2」
・HTH-4 Ver.2.0のプロジェクトの場合「RCB-4リファレンスセットVer.2.0」
◆RCB4ライブラリの使い方
RCB4ライブラリを使うにはVisualStudioで作成したプロジェクトに組み込む必要があります。使い方はVisualStudio2010 C# Expressを例に説明します。(スクリーンショットで表示されている画面の配置はユーザによって変更できるので、実際表示されているところと異なる場合があります)
1.VisualStudioでプロジェクトを新規作成します。
VisualStudioを起動させ、Windowsフォームアプリケーションのプロジェクトを作成します。
プロジェクトの名前は「WindowsFormsApplication1」をそのまま使います。
OKを押すとプロジェクトが作成され、下記画面のようになります。
1:フォーム:実行されたときに表示されるウィンドウ画面です。
2:ソリューションエクスプローラ:プロジェクトに必要なファイルなどをツリー表示しています。
3:プロパティ:フォームやテキストボックスなどの各パラメータを表示、編集できる場所です。
4:ツールボックス:フォームに配置するテキストボックスやボタンなどの機能を表示されています。
プロジェクトを作成したら一度保存します。保存先は任意の場所で構いません。
2.DLLファイルをわかりやすい位置にコピーする。
ダウンロードしたZIPファイルの中の「DLLファイル」のフォルダの中にその中に「Rcb4.dll」、「Extensions.dll」の2種類のファイルがあります。保存したプロジェクトのフォルダの中に2種類のdllファイルをコピーします。
3.DLLファイルをプロジェクトで使えるようにする
ソリューションエクスプローラの中に参照設定があります。右クリックして、「参照の追加」を選択します。
次に、参照の追加画面が現れますので、その中の参照タブを選択します。ファイル名を設定する画面が現れますので、先ほどコピーした「RCB4.dll」を選びOKを押します。すると、プロジェクトでRCB4.DLLを使うことができるようになります。
同じように、「Extensions.dll」も参照の追加を行います。
追加が終わりますと、ソリューションエクスプローラの参照設定の中に「RCB4.dll」と「Extensions.dll」が追加されます。
これで、RCB4ライブラリが使えるようになりました。
なお、コマンドの実装などプログラムを書く場合は、フォーム画面を右クリックし、「コードの表示(C)」を選択するとプログラムを書くエディタが表示されます。
ライブラリ内の関数の使い方やコマンドの実装方法などは次回説明いたします。
②PCとKMR-M6と通信ができる状態にする
◆BluetoothモジュールKBT-1の設定
プログラムで通信を行う前に、KBT-1の無線の設定をする必要があります。無線を使わない場合は次の項(◆通信の方法について)にお進みください。設定方法はKBT-1を使ってロボットと無線通信をする(2)と前回記述した設定方法をご覧ください。KBT-1はスレーブRCB4モードに設定します。
ペアリングをしたときに設定されたCOM番号はあらかじめを控えておいてください。
◆通信の方法について
プログラムからRCB4HVにアクセスするにはWindows標準のSerialPortクラスを用います。まず、作成したプロジェクトのフォームのデザイン画面を開きます。ツールボックス内に「SerialPort」がありますので、作成されたフォームにドラッグアンドドロップをします。
次に、SerialPortの設定をします。KBT-1とRCB-4HVで通信をする場合、以下のような設定となります。
プロパティ名 | 設定値 | 備考 |
---|---|---|
BandRate | 115200 | 通信速度 |
DataBits | 8bit | 1byteの送るときのデータ数 |
Parity |
Even(偶数パリティ) | パリティ |
PortName |
ペアリングで設定したCOM番号 |
COM番号 |
StopBit | One(1bit) | ストップビット |
ReadTimeOut | 1000(1秒) |
読み込みデータが設定された時間来ない場合はエラーにします |
デザイン画面の下にできた「serialPort1」をクリックすると、プロパティに設定項目が表示されますので、設定項目を記入していきます。下記は例として、COM番号がCOM40になっています。
次にRCB-4HVと接続する(ポートを開く)プログラムを作成します。
さて、マウスのクリックやボタンのクリックなど、何らかのアクションが発生した際に呼ばれる関数をイベント関数と呼びます。イベント関数を作成するにはフォームのプロパティから作成します。フォームのプロパティの雷マークをクリックすると、イベントの設定画面が表示されます。
今回、プログラムが起動してフォームがデスクトップ上に表示する前に発生するLoadイベント発生時に、COMポートを接続します。Loadイベントを生成するには、プロパティ中の「Load」の右空欄をダブルクリックをすると、ソースコードにイベント関数が追加されます。追加されたForm1_Load関数の中に以下を記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
private void Form1_Load(object sender, EventArgs e) { try { serialPort1.Open(); //COMポートを開く } catch { MessageBox.Show("COMが開けません!!"); serialPort1.Close(); this.Close(); } } |
上記のプログラムは、serialPort1に設定したCOM番号が見当たらないなどのエラーでCOMポートが開けない場合は、メッセージボックスが表示され、アプリケーションを閉じます。
開いたCOMポートはフォームを閉じるときに一緒に閉じるようにします。フォームを閉じるときに発生するFromClosingイベントを用います。先ほどのイベント生成手順と同じようにFromClosingイベント関数を生成し、追加されたForm1_FormClosing内に以下の記述をします。
1 2 3 4 |
private void Form1_FormClosing(object sender, FormClosingEventArgs e) { serialPort1.Close(); } |
これにより、プログラムを実行するとSerialPortが開き、プログラムを閉じるときSerialPortを閉じるようになります。
ただし、KBT-1の電源が入ってない時にこのプログラムを立ち上げると、返事が返ってこない場合があります。KBT-1の電源が入っているのを確認してから起動してください。
作成したプログラムを実行してみましょう。実行するには、「デバッグ」->「デバッグ開始」をクリックします。
実行すると、何もコントロールがついていないウィンドウが出ます。ただし、画面が出る直前にLoadイベントが発生するので、COMポートの接続を行います。エラーがでて実行できなかった場合は、プログラムにタイプミスなど間違いがないか見直してください。
KBT-1の緑色のステータスLEDは、COMポートが接続されると点灯します。このLEDが点灯すれば、プログラムが正常に動いています。
未接続時 | 接続時 |
点灯しない場合やプログラムがハングアップした場合は、ペアリングが完了していなかったり、KMR-M6の電源が入っていない可能性があります。もう一度KBT-1のペアリング設定やCOMポート名などを確認してください。
これにより、VisualStudioでプログラムを作成し、RCB-4HVに接続することができました。
◆次回予告
4回目:アナログデータを取り込み距離データを取得する
次回は、RCB4ライブラリを用いてコマンドを実装し、RCB-4HVのADポートに接続されているアナログデータを取得します。また、アナログ出力の距離センサを接続し、距離のデータに変換する方法を紹介します。
KHR-3HV Ver.3 リフェバッテリー付きセットの詳細をみる KMR-M6 Ver.3 リフェバッテリー付きセットの詳細をみる KHR-3HV Ver.2 リフェバッテリー付きセットの詳細をみる KHR-3HV Ver.2の詳細をみる KHR-3HV Ver.2 セレクトパックの詳細をみる KMR-M6 Ver.2 リフェバッテリー付きセットの詳細をみる カメ型ロボット02 Ver.1.5の詳細をみる KMR-P4 Ver.1.5 リフェバッテリー付きセットの詳細をみる BluetoothモジュールKBT-1の詳細をみる