■2種類のモーション設定の違い
KCB-1とRCB-3をつないでのモーション再生方法は下記の2種類あります。
①コマンド再生 (rcb3_motion_play)
②コントロールコード再生 (rcb3_put_2Bcode / rcb3_put_7Bcode)
これらの再生方法には、Heart to HeartのオプションによるRCB-3の設定と、KCB-1とRCB3の接続に違いがあります。表1に違いをまとめたので、これを元に解説をしていきます。
RCB3のオプション設定とボードの接続方法 ()内は解説番号です。
| |
|
|
① rcb3_motion_play(コマンド再生) |
② rcb3_put_XBcode(コントロールコード再生) |
| Heart to Heart |
チェック項目 |
モーション終了時に返事をもらう |
○指定する(①-1)
|
×指定しない(②-1) |
| 送信機でのモーション・シナリオ再生を有効にする |
×指定しない(①-2) |
○指定する(②-2) |
| KRC-1から制御する |
△どちらでもよい(①-3) |
△2Byteのときのみ指定(②-3) |
| モーション選択項目 |
電源投入後、モーション・シナリオを再生する |
OFFを選択(start upはKCB-1から再生)(①-4) |
RCB-3から再生(②-4) |
| 通信ケーブル・ポート |
ケーブルの違い |
クロスケーブル |
接続ケーブル |
| RCB-3側接続ポート |
高速シリアルポート |
低速シリアルポート |
①コマンド再生
コマンド再生は高速シリアル通信でロボットを動かす関数です。再生方法は簡単ですが、モーション内分岐ができないため連続した動作ができません。
・Heart to Heartのオプション設定
- モーション終了の返事をもらってから次の処理に移るので、
「モーション再生終了時に返事をもらう」には必ずチェックを入れてください。
- 「送信機でのモーション・シナリオ再生を有効にする」にはチェックを入れないでください。RCB-3が受信機とつながっている場合に誤動作をする場合があります。
- 「KRC1から制御する」は低速シリアル通信の設定なので、チェックの必要はありません。
- 「電源投入時にモーション・シナリオを再生する」はOFF設定にして、スタートアップモーションはKCB-1から再生するようにしてください。
・通信ケーブルの種類と接続
ストレートケーブルで接続をすると、KCB-1の送信とRCB-3の送信、受信と受信がぶつかり、通信ができないため、接続にはクロスケーブルを使います。
・電源について
電源はKCB-1のシリアルポートとRCB3の空いているサーボ端子を接続してください。その際、通信線(白線)を必ず抜いてください。
②コントロールコード再生
コントロールコード再生は送信機と同じコマンドを低速シリアルで通信して、ロボットを動かす関数です。モーション内分岐ができるため連続歩行などが可能ですが、モーション終了後に返事が返ってこないため、プログラムに工夫が必要です。
・Heart to Heartのオプション設定
- コントロールコード再生のときはモーション終了の返事が来ないため、「モーション終了時に返事をもらう」にチェックの必要はありません。
- KCB-1は送信機と同じコマンドをRCB-3の低速シリアルに送信してモーションを再生するので、「送信機でのモーション・シナリオ再生を有効にする」にチェックを入れてください。
- 2Byteモードでモーションを再生するときは「KRC1から制御する」にチェックを入れてください。7Byteモードで再生するときはチェックをはずします。
- 「電源投入時にモーション・シナリオを再生する」を設定し、KCB-1起動後にstart upモーション再生終了を待ちます。KCB-1から再生してもかまいませんが、RCB-3のが起動するまでしばらく待つ必要があります。
・通信ケーブルの種類と接続
通常の接続ケーブルをKCB-1のCOMポートとRCB3の低速シリアル接続端子に接続してください。
・電源について
電源はKCB-1のシリアルポートとRCB3の空いているサーボ端子を接続してください。その際、通信線(白線)を必ず抜いてください。
■KCB-1対応のRCB-3について
今回はKCB-1対応のRCB-3についてのアナウンスです。
KCB-1はRCB-3HV、RCB-3J共に動作しますが、RCB3 HVver.1.03のみ非対応になっています。
KCB-1同梱のアップデートクーポンでRCB-3ver1.03からRCB-3ver1.1aへ無償アップデートを行うことができます。
受付は弊社へ郵送していただくか、すぐにアップデートしたい方はロボスポットでも行っております。
アップデートを申し込む際には必ずHeart to Heartのインフォメーションでバージョンを確認してください。
アップデートに関する詳しい情報はこちらです。
■自律ロボットデモムービー公開!!
自律ロボットビーチフラッグ大会に向けてムービーを公開します。
ムービー再生はこちらです。
ムービーが始まって最初に写るロボットはコントロール入力値(Autonomous_system_cc)でモーションを再生させています。連続歩行モーションが特徴です。起き上がり、旋回をしてある程度フラッグの方向に向かせたあとで、前進をさせています。数歩進んでフラッグを探し、見つけた後は首のふり幅を狭くするなど、状況によって動作を変化させています。
反対側に小さく見えるロボットはrcb3_motion_play(Autonomous_system_mp)で動作しています。連続歩行はできませんが、KCB-1がRCB3からモーション再生終了後に返事を受け取ることでモーションの間に無駄がなく、サクサクと動き回ります。
デモムービーの試合時間は約1分30秒です。
■自律ロボット作例
今回は自律ロボットの作例を紹介します。
使用センサー:
-
SHARP社製GP2D12 PSD距離計測センサー(頭部 x 1、 足部先端 x 2)
(現在はGP2Y0A21YK0Fが販売されております)
両足のセンサーで壁を検知し、頭部のセンサーで目標を探します。肩部の加速度センサーは起き上がりの分岐に使用しています。また、腰関節をピボットターンユニットに交換することによって、KHR-2HVの細かい旋回を可能にしました。
自律ロボットの詳しい情報はこちらをご覧ください。
<自律ロボット制作例マニュアル>
ビーチフラッグ用のサンプルプログラムも公開しています。下からダウンロードしてください。
<サンプルプログラム ダウンロード>
今大会はセンサーの制限はありませんので、競技レギュレーションに準拠していればどんなセンサーも実装可能です(*1。
フラッグ(目標)には超音波送信機を実装しています。この信号を頼りにフラッグの位置を認識するのもいいし、フラッグ表面の赤を認識して探すのもいいかもしれません。
*1 機体から超音波を送信することは禁止ですので注意してください。
■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を接続して点灯パターンを関数化し、それを歩行モーション番号と一緒に書き込むことで歩行しながらイルミネーション点灯、ということも面白いと思います。お試しください。