製品情報はこちら

トップ

KCB-1
KCB-2
アクセサリ
イベント
- KHR 4th アニバーサリー
- 第二回ビーチフラッグ競技会
サイトマップ
シリアル通信
- RCB-1
- RCB-3
- シリアルサーボ
センサー
ソフトウエア
- アップデート
ハードウエア
未分類
自律ロボット

KCB-1でKHR-1を動かす方法②

前回の続きです。

 このプログラムでは2バイトコントロールコード再生のプログラムを、RCB-1対応に変更をしています。2バイトコントロールコード再生は、KCB-1からKRCと同じ再生コマンドをRCB-1へ送信し、モーションを再生する方法です。モーションを再生するには、モーションを各ボタンに割り付ける必要があります。

  なお、コントロールコード再生を行う際は、更新プログラム「KCB1Update20080510.exe」をダウンロードする必要があります。詳しくは「KCB-1 SDK更新(Rev.20080510)」をご覧ください。

 

・ プログラム

#include <ad.h>
#include <rcb3.h>
#include <led.h>

// プログラム中で実行するモーションをHTHで割付してください
#define FORWARD   BTN2B_LU // 前進
#define LEFTSTEP BTN2B_LL // 左サイドステップ
#define RIGHTSTEP BTN2B_LR // 右サイドステップ
#define LEFTTURN BTN2B_LL | BTN2B_LD // 左ターン
#define RIGHTTURN BTN2B_LR | BTN2B_LD // 右ターン
#define BOW BTN2B_RU // あいさつ

#define NP_WA 1200000 //停止後の待機時間(前に再生したモーションとかぶらないために余裕を持って設定する)

void khr_2Bmotion(int cc) //2BYTEcodeモーション再生関数
{
    rcb3_put_2Bcode (cc); //2BYTEcodeでモーション再生
    while (ad_read(1) > 500) {} //モーションが終了するまで待つ
    rcb3_put_2Bcode (BTN2B_NP); //モーション終了後ニュートラルを送信
    wait (NP_WA); //少しだけ待つ
}

void main(void)
{
    cpu_init (); // CPUの初期設定を行う
    ad_oneshotmode (); // ADはワンショットモードで読み込む
    ledgrn_on (); // 起動確認用LEDを点灯する

    rcb3_rx_open (); // RCBのRXポートを接続します
    wait (5000000); // RCBの起動が安定するまで待ちます
    ledred_on(); // 赤LED点灯後、モーション再生可能

    while(1){
        rcb3_put_2Bcode (BTN2B_NP); //何もしていないときはニュートラルを送信
        if (ad_read(2) > 500) { //もしスイッチが押されたら
           khr_2Bmotion(BOW); //モーション再生
           khr_2Bmotion(FORWARD);
           khr_2Bmotion(RIGHTSTEP);
        }
    }
}

 

 

・解説

 ▼変更点① 

通常の2バイトコントロールコード再生のプログラムと違うところは、モーションを再生していないときに、常にニュートラル信号を送信していることです。これは、通常、KRCの電源を入れて何も操作していない場合に、KRCからはニュートラル信号が送信されているためです。

 ▼変更点②

 1)コントロールコード再生

 2)再生終了待ち

 3)ニュートラル送信

 4)ニュートラル状態に戻るまで待つ

以上の④項目を今回はkhr_2Bmotionという関数にまとめました。

■この記事へのリンクはこちらです。

RSS