KCBサポート » シリアル通信 » シリアルサーボ »


       

■KRS-403xHVシリーズ サポート情報

 
関連カテゴリー: ICS, シリアルサーボ

 ロボット用サーボ KRS-403xシリーズのサポート情報です。

従来機種KRS-4014SHV、KRS-4013HVと置換する際のご参考にしてください。

 

1) 対になる箇所ではサーボの種類を揃える

メンテナンスなどでKRS-4014SHV、KRS-4013HVと交換する場合、対になるサーボの種類は揃えてください。

 KRS-4034HVはKRS-4014SHVの、KRS-4033HVはKRS-4013HVのそれぞれ後継機種にあたりますが、動作特性等を改良していますので同一条件下で動かしても動作結果が異なる場合があります。

手や脚の左右で対になる箇所には同じ種類のサーボをご使用ください。

 

2) 中くらいの数値領域で「ストレッチ」(保持力)を若干緩めにしてあります

  出荷設定の状態ではKRS-4014SHV、KRS-4013HVとストレッチの数値は同じでも保持力は若干緩めになっています。

これは静止状態で変な挙動が出にくいよう最適化したためです。

サーボの開発に用いた3kg級のロボットでは、従来ストレッチ40で動かしていた歩行モーションがストレッチ60で同じように動きました。

KRS-4014SHV、KRS-4013HVから置換した場合、若干ストレッチを高めに設定するのがコツと覚えてください。

なお、上記はストレッチの数値が中くらい(30~90くらい)の場合に適用され、ストレッチ127を設定した場合の保持力はKRS-4014SHV、KRS-4013HVと変わりません。

ですのでジャンプなどストレッチを最大にして使用するモーションには大きな影響はありません。

  

3)新機能「レスポンス」を使ってみる

 新しいICS設定項目レスポンス(出荷設定:3)はサーボの挙動に大きな影響を与えるパラメータです。巧く使えばロボットのそれぞれの箇所に最適な動作設定を求めることが出来ます。

例:

 レスポンスを小さくした → 補間スピード(フレーム数)の値が大きいとき(ゆっくり動くとき)に動作がなめらかになるので、頭や腕など負荷が小さく表現力が求められる関節の動作がキレイに見える。反面、下半身など負荷がかかる箇所ではトルクが十分に出なくなる。

 

 レスポンスを大きくした → サーボ動作の立ち上がりが鋭くなるので瞬発的な動作に最適。反面、ハンチングが出やすくなるのとゆっくり動かしたときに動作がカクカクする。

 

 動きの美しさやハンチングなどの挙動が出ない事を求められる場合はレスポンスを小さく、瞬発的な動作が必要な場合はレスポンスを大きくと覚えてください。   

 

4) ギヤ交換時のご注意(ファイナルギヤ(出力軸ギヤ)の互換性)

 KRS-403xHVシリーズではファイナルギヤだけが従来品と互換がありません。製品改良のためにとった処置ですのでご了承ください。

 

5)RCB-3HV(HTH3)でストレッチとスピードを読み込むと「1」と表示される

 RCB-3HV(HTH3)のパソコンでのモーション編集時、POSオブジェクト内でICS3.0およびICS3.5サーボのストレッチとスピードの現在値を取得すると「1」と表示されます。

それ以外は従来と同じで、任意のストレッチとスピードの値を書き込んだ場合はその値はそのままサーボに反映されます。

これはHTH3のソフトウェアの仕様上の都合ですが現在修正の予定はありません。

 

  

 

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

       

■インサイド・KRS40XX

 
関連カテゴリー: シリアルサーボ, ダウンロード

KCB-1でシリアルサーボモーターの制御をしているときに、時々動かなくなってしまうことがありませんか?これはサーボモーターに命令を立て続けに送ったときなどに起きる現象です。

KRS-40XXシリーズなどの弊社製サーボモーターは、単に位置制御を行っているだけではなく、デイジーチェーンで接続する場合は信号線を全てのモーターと共有しますので、自分への信号なのかどうかを調べたりしています。もちろんKCB-1からだけではなく、他のサーボモーターが出した返事についても調べなくてはなりません。

このような内部処理を正しく行うために、KRS-40XXシリーズではデータの受け渡しを行った後に若干の時間を必要としています。その時間は約300~400[us]。KRS-40XXは115kbpsでデータの送受信を行いますので、位置制御(set_pos)に必要な6バイトの送受信時間を合わせると、一台のモーターあたり1[ms]程度の余裕が必要です。

--- 例 ---
while (1) {
  ...
  sio1_set_pos (1, 目標位置); // 送受信に約600[us]を使用している
  wait (200);                 // 若干の待ち時間(300~400[us])待つ
  sio1_set_pos (1, 目標位置); // 再度目標位置を送信
  wait (200);
  sio1_set_pos (2, 目標位置); // IDが変わっても、同じSIO端子を使う場合はちょっと待つ
  ...
}

KCB-1では、このデータ送受信時間以外に必要な300~400[us]をさらに詰めるために、SIO端子を2つもうけています。SIO1,2に交互にデータを送信することで、たくさんのサーボモーターを短い(約半分の)時間で動かすことができるようになります。または処理が完全に終わるだけの間隔を持ったタイマーを使う方法もありますよ。

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

       

■シリアルサーボの簡易位置制御

 
関連カテゴリー: シリアルサーボ, ソフトウエア, ダウンロード, 自律ロボット

シリアルサーボモーターを回す場合は、sio_set_pos関数などで指定した目標角度に到達するまでには時間がかかります。かといって次のようなプログラムでは、むだ時間が発生します。

while (1) {
  pos == sio1_set_pos(id, 目標)

  if ((pos <= 目標 + 5) && (pos >= 目標 - 5) {
      //目標位置に到達した(誤差付き)と見なして、何か処理をする
  }
  else {
      wait (100000);  // モーターが目標に到達するまでちょっと待つ
  }
}

シリアルサーボモーターは目標位置へ到達すると停止しますので、現在位置を数回調べても移動していない場合は、目標へきちんと到達したと判断します。

while (1){
    wait (300);                    // タイミング調整
    現在位置 = sio1_set_pos(ID, 目標); //シリアルサーボに目標位置を送って現在位置を取得
   
    if (前回位置 == 現在位置) {   // もし、現在位置が前回位置と同じだったら
        cnt = cnt + 1;             // cntが一つ増える
    }
    if (cnt == 適当な数){          // cntが適当な数になったら、目標位置で停止したと判断して
        break;                     // ループを抜ける
    }
    前回位置 = 現在位置;          //現在の値を保持
}

sio_set_posは、処理の後に現在の位置を返します。その現在の位置前回の位置を比べて変化が無かった場合は、サーボが目標の位置に到着していると判断してcntを増やします。数回命令を送って同じ位置にいた場合は、サーボが完全に目標の位置にいると判断し、ループを抜けて次の処理に移ることができます。

同一サーボに連続して命令を送るときには、ある程度間隔をあける必要があるので、ここでは約500us(wait(300))待ちます。

ビーチフラッグロボットでは8回一致したら目標に到達したと判断しています。

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

       

■サーボのシリアルモードとPWMモードについて

 
関連カテゴリー: シリアルサーボ, ダウンロード

サンプルプログラムなどでKCB-1からシリアルサーボを動かしたときに、どうしても動かないなんて困ったことはありませんか?

その原因の一つとして、シリアルサーボがPWMモード設定のままになっている可能性があります。ためしにリセットスイッチを押しながら電源を入れてみてください。電源投入後も2~3秒ほどリセットを押したままにしておきます。

もしリセットを離したときサーボが動き出したら、それはサーボがPWMモードだったということです。

 

サーボの設定を行う場合は付属の「ICS2Config.exe」というソフトを使います。「ICS2Config.exe」でシリアルモードにチェックがされているかを確認してください。ソフトの使用方法はマニュアルを参照してください。

 

また、サーボを数珠つなぎをする場合は、しっかりとコネクタが刺さっているのか確認してください。一つ外れていると全てのサーボが動作不能になる可能性があります。

 

(※電源が入っているときにサーボの抜き差しは絶対にしないでください

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

       

■シリアルサーボはいくつつながりますか?

 
関連カテゴリー: シリアルサーボ, ダウンロード

ICS2.0規格ではID番号を最大32個指定できますので、理論上は最大64個のシリアルサーボモーターを接続することができます。

 

6、7個までのサーボモーターは数珠繋ぎで大丈夫ですが、たくさん接続すると電圧の低下で、先端の方のモーターの動きが悪くなります。
それ以上をつなぐ場合は、下の図のようにループさせるようにしてください。

 

 

弊社ではループ接続でSIO1とSIO2端子にそれぞれ16個まで接続(合計32個)を確認しました。

ループ接続をするときは、必ず元の端子番号に接続するようにしてください(SIO1ならSIO1へ戻してください)。SIO1端子からSIO2端子へまたぐ接続はしないようにしてください。

 

※くれぐれも逆接にご注意ください!!
 

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