■自律ビーチフラッグレギュレーション
ビーチフラッグ大会のレギュレーションを公開します。
レギュレーションを表示(PDFファイル)
試合時間3分以内に先に旗を倒したロボットが勝ちというシンプルな競技です。1vs1で1試合2ラウンド戦います。同点の場合は旗を倒すまでのタイムが早かったロボットが勝ちになります。
スタートラインでのロボットの設置基準や、競技フィールドの詳しい説明は「フィールド詳細」をよくお読み下さい。
フィールド詳細(PDFファイル)
ビーチフラッグは簡単に見えて、実は制御の基礎をしっかり学べる競技です。センサー情報によるモーション再生の分岐プログラムの構成や、シリアルサーボの制御など、きっと後々の応用に役立つでしょう。
フィールドはロボスポット常設のサッカーフィールドなので練習やシュミレーションを行うときには是非ご利用ください。また、近日、旗も設置予定です。
ロボットマンシップにのっとり正々堂々と戦いましょう!
レギュレーションの変更に関しましてはKCB-1サポートページにて随時発表していきます。
■KCB-1 SDK更新(Rev.20080318)
KCB-1 SDK更新プログラム(Rev.20080318)ができました。
SDK更新には、
1.KCB-1 SDKに付属のCD-ROMジャケットにあるシリアル番号
2.KCB-1 SDK
が必要です。また、更新プログラムの実行は管理者権限で行うようにして下さい。
この更新を適応すると、ロボットコントローラーKRC-1/3のエミュレート機能・その他が追加されます。エミュレート機能ではKRCが出力するコントロール入力値をRCB-3のRXポートへ送ることで、KCB-1がプログラム可能なロボットコントローラーになります。
なお、SDK更新に伴い、サンプルプログラムの修正・追加と、KCB-1 SDKマニュアルも更新されました。下のリンクよりダウンロードして下さい。
● KCB-1 SDK 更新プログラム
ZIPファイルを解凍すると、KCB1Update20080318.exeができあがります。
実行して、更新プログラムの指示に従って下さい。
<ダウンロードKCB-1 SDK 更新プログラム>
□ 更新プログラムでは、KCB-1 SDKファイルを確認して、更新プログラムを指定したフォルダへ書き出します。同じフォルダを指定するとファイルを上書きしますので注意して下さい。
□ KCB-1 SDKをすでにカスタマイズされている方も、上書きには注意して下さい。
● 追加SampleとKCB-1 SDKマニュアル
ZIPファイルを解凍すると、「Samples」フォルダの中に、「KRC_EMU」フォルダと「RCB3_MotionPlay」フォルダができますので、「KCB1\Samples\」フォルダへ上書きコピーをして下さい。
また、「KCB-1・C言語マニュアル20080319.pdf 」も作成されます。
<ダウンロード追加サンプル・SDKマニュアル>
コントロール入力値によるモーション再生については、ビーチフラッグ競技サンプルプログラムでも内容を確認できます。
■RCB3のモーション再生(コマンド再生) (3)
今回は、rcb3_motion_play( )の特別な機能を紹介します。
ロボットがモーションを再生している間、KCB-1はモーション再生終了の信号が来るまで次の処理に進めません。実は、モーション再生中のKCB-1は手が空いている状態で、命令を送れば別の動作が可能です。この時間を利用してKCB-1に一つ処理をさせます。
#include <led.h>
#include <rcb3.h> // モーション再生に必要
#include <ad.h>
int adv;
void get_ad(void)
{
adv = ad_read(1);
}
void main(void)
{
cpu_init (); // CPUの初期設定を行います
ledgrn_on (); // 電源ON
wait (300000); // RCB-3の電源が安定するまで待ちます
// RCB3との通信設定を行います // スタートアップモーションを終了するまで待ちます
if (rcb3_open (80) == FALSE) { // RCB3とポートを接続します
ledred_on (); // スタートアップモーション80を再生できなかった場合
return; // 赤LEDを点灯して、プログラムは終了します
}
// スタートアップモーション終了後にモーション14番を再生します
rcb3_motion_play (14, get_ad);
}
プログラムは前回のものを使用しています。
motion_play関数の第2引数に関数名を指定(引数無し、返値無し)すると、モーション再生中に指定した関数が実行されます。つまり歩きながらセンサーの値を読み込むこともできるのです。
注意すべきことは、指定する関数はモーション再生が完了し、RCB-3から返事が返ってくる前に処理を終了しなければならないことです。そうしないとRCB-3からの返事をうまく受け取れずに、モーション再生が終了したかどうか分からなくなってしまいます。
センサー以外にも、PIOポートにLEDを接続して点灯パターンを関数化し、それを歩行モーション番号と一緒に書き込むことで歩行しながらイルミネーション点灯、ということも面白いと思います。お試しください。
■RCB3のモーション再生(コマンド再生) (2)
今回はKCB-1からRCB-3のモーションを再生するプログラムを紹介します。
以下はサンプルプログラム(RCB3_MotionPlay)から要点を抜粋したものです。
#include <led.h>
#include <rcb3.h> // モーション再生に必要
void main(void)
{
cpu_init (); // CPUの初期設定を行います
ledgrn_on (); // 電源ON
wait (300000); // RCB-3の電源が安定するまで待ちます
// RCB3との通信設定を行います
// スタートアップモーションを終了するまで待ちます
if (rcb3_open (80) == FALSE) { // RCB3とポートを接続します
ledred_on (); // スタートアップモーション80を再生できなかった場合
return; // 赤LEDを点灯して、プログラムは終了します
}
// スタートアップモーション終了後にモーション14番を再生します
rcb3_motion_play (14);
}
このプログラムでは、スタートアップモーション(80)の再生後に、続けてモーション番号14番を再生します。
rcb3_openはRCB-3とのシリアル接続通信の設定を行った後に、引数に指定したモーション番号(例では80)をスタートアップモーションとして再生します。ここに0を指定すると、モーションは何も再生されず、通信設定だけを行います。
モーション番号は、例えばM1なら1、S1は81と指定します。
接続設定と、スタートアップモーションの再生が終わったら、rcb3_motion_play関数で好きなモーションを再生して(例では14)下さい。rcb3_motion_play関数を続けて書けば、順番にモーションが再生されます。
ぜひお試し下さい。
■RCB3のモーション再生(コマンド再生)(1)
今回は、rcb3_motion_play関数を使って、KCB-1からRCB-3のモーション再生を行う準備をします。
モーションを再生中に別のモーションを再生すると、ロボットが転んだりするなど、うまく動作できなくなるため、KCB-1ではモーションが終了したことを確認してから、次のモーションを再生するようになっています。
そこで、まずはHeartToHeartを起動して、オプション画面で「モーション再生終了時に返事をもらう」にチェックを入れてください。これでKCB-1もモーション再生中か、そうでないかが分かるようになります。
そしてスタートアップモーションはKCB-1から再生※しますので、「電源投入時にスタートアップモーションを再生する」の項目はOFFにしておきます。
ここまででRCB-3の設定は終了です。

次に、「KCB-1のKHR-HVシリーズの実装例」で紹介した、クロスケーブルを接続して下さい。これでロボットの設定は終了です。次はいよいよモーション再生プログラムの実行です。
※RCB-3でスタートアップモーションを再生することもできますが、KCB-1が最初のモーション再生命令を送信する前にスタートアップモーションが終了していなくてはなりません。
■KCB-1のKHR-HVシリーズ実装例
今回はKCB-1のKHR-HVシリーズへの実装例を紹介したいと思います。
KCB-1とRCB-3の横方向の取り付け穴寸法は同じですので、RCB-3を左右どちらかにずらしてあげれば簡単に実装することができます。

KCB-1の電源は、RCB-3の空ている出力ポートとKCB-1の空いているSIOポートを接続ケーブルでつないでください。この際、余計な信号を送受信しないようにどちらかの白線、またはボードに対して一番内側の線は外しておきます。外したケーブルのピン部分にはビニールテープなどを巻いてショートしないように気をつけてください。
下の画像の赤いコネクタのケーブルは、KCB-1とRCB-3のシリアル通信用クロスケーブルです。ボードのCOMポート同士を接続しています。
■書き込みをスムーズにする
今回は、ジャンパーピンをタクトスイッチに置き換えて書き込みをスムーズに行う方法を紹介いたします。
市販のタクトスイッチ(プッシュスイッチ)を一つ用意します。タクトスイッチとは、押してON、離してOFFのスイッチのことです。
次に接続ケーブル(約100mm)を半分に切ってタクトスイッチとケーブルをハンダ付けすれば完成です。
きれいに見せるためにコネクタの空いた部分を削ってみました。
余裕のある方は熱収縮チューブをハンダの部分にかぶせると安心です。

ついでに、残ったケーブルでリセット側のスイッチも作りました。こちらは白を取って赤黒を残しました。
書き込みの際はライトスイッチを押ながら電源を入れれば書き込みモードになります。電源を入れた後は手を離しても大丈夫です。
比較的簡単な作業ですのでお試しください。ジャンパーピン付け外しの手間がかなり解消されるはずですよ。
※ご使用の際は自己責任にてお願い致します。
■サーボのシリアルモードとPWMモードについて
サンプルプログラムなどでKCB-1からシリアルサーボを動かしたときに、どうしても動かないなんて困ったことはありませんか?
その原因の一つとして、シリアルサーボがPWMモード設定のままになっている可能性があります。ためしにリセットスイッチを押しながら電源を入れてみてください。電源投入後も2~3秒ほどリセットを押したままにしておきます。
もしリセットを離したときサーボが動き出したら、それはサーボがPWMモードだったということです。
サーボの設定を行う場合は付属の「ICS2Config.exe」というソフトを使います。「ICS2Config.exe」でシリアルモードにチェックがされているかを確認してください。ソフトの使用方法はマニュアルを参照してください。
また、サーボを数珠つなぎをする場合は、しっかりとコネクタが刺さっているのか確認してください。一つ外れていると全てのサーボが動作不能になる可能性があります。
(※電源が入っているときにサーボの抜き差しは絶対にしないでください)
■KCB-1の電源について
今回はKCB-1に電源を持ってくる簡単な方法を紹介したいと思います。
KCB-1を使うには8~12V程度の電源が必要です。バッテリーでは弊社製ROBOパワーセルHVシリーズバッテリーがぴったりの電圧ですが、コネクタの端子数が合いません。そのためKCB-1には電源用ケーブルが付属されています。しかし、このケーブルはKCB-1と接続するコネクターが付いているだけなので片方を加工する必要※があります。
加工の仕方がわからない、ハンダ付けはちょっと・・・、という方はKHR-HVシリーズに付属のHV電源スイッチハーネスのご利用がおすすめです。
ROBOパワーセルHVシリーズのコネクターに対応しているので、HVシリーズのバッテリーでKCB-1を起動させることができます。また、スイッチがついているので、電源の抜き差しをする手間も省けます。
※安定化電源などでも使用できるよう、片方を未加工としています。
■シリアルサーボはいくつつながりますか?
ICS2.0規格ではID番号を最大32個指定できますので、理論上は最大64個のシリアルサーボモーターを接続することができます。
6、7個までのサーボモーターは数珠繋ぎで大丈夫ですが、たくさん接続すると電圧の低下で、先端の方のモーターの動きが悪くなります。
それ以上をつなぐ場合は、下の図のようにループさせるようにしてください。

弊社ではループ接続でSIO1とSIO2端子にそれぞれ16個まで接続(合計32個)を確認しました。
ループ接続をするときは、必ず元の端子番号に接続するようにしてください(SIO1ならSIO1へ戻してください)。SIO1端子からSIO2端子へまたぐ接続はしないようにしてください。
※くれぐれも逆接にご注意ください!!