KCBサポート » KCB-1 »


■KCB-1 SDKとRCB-4HVでモーションを再生したときの不具合について

関連カテゴリー:KCB-1, アップデート, ソフトウエア

KCB-1 SDKを使ってrcb4_motion_play関数でモーションを再生すると、停止してしまう場合があります。この不具合は下記の要件により発生します。

  • KCB-1 SDK Ver.1.3aまでの全バージョン
  • RCB-4HVを使用
  • rcb4_motion_playを使用
  • HeartToHeart4 Ver.1.3以降でモーションを書き込んだ

HeartToHeart4 Ver.1.3以降ではメインループのアドレスが移動したため、モーション再生後にメインループに戻れなくなり動作が停止します。下記のようにKCB-1 SDKに含まれる、rcb4.hの一部を修正していただくと解消します。

 

【rcb4.h 164行目】

	誤)#define RCB4_MAINLOOP_LOW   0xFD
	正)#define RCB4_MAINLOOP_LOW   0xFE
■この記事へのリンクはこちらです。

■KCB-1 SDK Ver.1.3aアップデート

関連カテゴリー:KCB-1, KCBサポート, アップデート, ソフトウエア

KCB-1で弊社製サーボモーターのID番号などを変更するソフトウェア、ICS2Configが、ICSバージョン3.0、3.5に対応し、名前も「ICSConfig」に変更しました。サーボモーターの通信速度も変更できるようになりました。

ICSConfig.exeを起動するにはMicrosoft .Net Framework 2.0が必要です。Windows XPサービスパック2以降、Windows Vista/7では標準でインストールされています。

今回はKCB-1に書き込むICSConfig.motファイルとPC側で使用するICSConfig.exeプログラムの両方のソースコードがついています。またKCB-1 SDKにICSConfig.exeとKCB-1との通信コマンドを記載しました。ICSConfig.exeのソースコードを編集するにはMicrosoft Visual C# 2010が必要です。

ソースコードの複製および修正に制限はありませんが、不特定多数への再配布はできません。

 

下記URLからZIPファイルをダウンロードして解凍すると、「Ver.1.3.a Rev.20110221アップデータ(ICSConfig)」フォルダのなかに「はじめにお読みください.txt」と新しいKCB-1 SDKマニュアルがあります。最初に「はじめにお読みください.txt」を読んでからご使用ください。

 

ダウンロード: KCB1SDK_V13a.zip

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

■KCB-1 アップデーター Ver.1.3.0 Rev.20100807

関連カテゴリー:KCB-1, KCBサポート, アップデート, サポート, ソフトウエア, テクニカルガイド

KCB-1 SDKのアップデーター Ver.1.3.0 Rev.20100807をリリースします。今回のアップデートではICS3.5への対応、RCB-3/4に接続されたセンサーの読み取りや、RCB-3のCOMポートからKRCのボタンデータ(コントロール入力値)を書き換える関数、RCB-4に接続されているサーボモーターを一斉に動かす関数などが追加されています。詳しい内容は下記のようになっています。

 

<アップデート内容>

  • uart.h  UART1(COM)にタイムアウトを付けられるようにした
  • rcb3.h  RCB-3のADポート読み込み、exput関数の追加
  • rcb4.h  RCB-4のAD/PIOなどの設定など
  • ics.h   ICS3.5に対応

 

<追加サンプルプログラム>

  • ICS35_GetData:  ICS3.5対応のサーボモーターからデータを取り込む
  • RCB3_Exput: rcb3_exput_7Bcode関数のサンプルプログラム
  • RCB4_AD_READ: RCB-4のADポートからのデータ読み込み
  • RCB4_PIO: RCB-4のPIOポートからのデータ読み込み・書き出し
  • RCB4_Servos: RCB-4に接続されたサーボモーターを複数同時駆動する
  • RCB4_SingleServo: RCB-4でサーボモーターを単独で駆動する

 

<インストール前にご確認ください>

  • 圧縮ファイルを解凍するとEXEファイルがありますので、ダブルクリックしてインストールしてください。
  • インストールにはCD-ROMジャケットに記載されているシリアル番号が必要です。
  • インストールにはKCB-1 SDK Ver.1.2.0までがすでにコンピューターへインストール済みであることが必要です。

 

ダウンロードはこちらから KCB1SDK_V13020100807.zip ZIP File

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

■KCB-1アップデーターVer.1.1.0 Rev.20090410

関連カテゴリー:KCB-1, アップデート, サポート, ソフトウエア

KCB-1 SDKをアップデートしました。今回のアップデート内容は次のようになっています。

  • counter.hが新設され、エンコーダーなどのパルスをカウントする16ビットイベントカウンター機能がつきました。
  • イベントカウンターは1相モード(アップカウントのみ)が3系統で、2相モード(アップダウンカウント。A相・B相モード)が2つ使えます。2相モードでは4逓倍でカウントできます。
  • これまでは決まった周波数のタイマーしか作成できませんでしたが、任意の周波数※でタイマーを動作させられるようになりました。
  • ワンショットタイマーが追加されました。ワンショットタイマーと通常のタイマーを組み合わせると非常に細やかなサーボモーター制御が可能となります(サーボモーター制御サンプルプログラムは近日公開予定)。

パルスカウント機能が追加されたので、モーターやタイヤに赤外線センサーなどをつけることで、回転数を読み取ってDCモーターのPID制御なども使えるようになりました。

アップデートプログラムは下記リンク先のZIPファイルをダウンロードして解凍し、できたインストールプログラムでインストールをしてください。なおインストールにはKCB-1 SDK CDROMのジャケットに記載されたシリアル番号が必要となります。Ver.1.00 Rev.20080318、Ver.1.0a Rev.20080510のアップデート内容も含みます。

 

KCB-1 アップデートプログラム(KCB1_V11020090410.ZIP

 

※基底となる周波数が20MHz、10MHz、1.25MHz、625kHzとなっていますので、これらを割り切れない周波数を指定した場合は割り算の余りの分だけ周波数がずれます。詳しくは付属のマニュアルを参照して下さい。

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

■ロボスポットでセンサー類の販売開始!

関連カテゴリー:サポート, センサー

自律ロボットの実装例などで紹介していたセンサーが、ロボスポットで販売開始しました。

リンクはこちらです▼

ROBOSPOT Web Shop ←ロボスポットウェブショップへ

PSD測距センサー \1,575(税込)

PSDセンサー用接続ケーブル(480mm) \420(税込)

超音波センサー(送信)USTX-1 \3,150(税込)

超音波センサー(受信)USRX-1 \3,150(税込)

超音波センサー取り付け金具 \1,050(税込)

 

PSD測距センサー、超音波センサー受信部はアナログポートに差し込むだけで、すぐに値を読み取ることができます。

超音波センサー送信部は、ビーチフラッグ競技用のフラッグと同一なので練習には最適です。(注:ロボットへの実装は禁止です)

超音波センサー取り付け金具を使えば、簡単に頭部へ実装することができます。また、取り付け金具はKRS4013/4014、KRS788共に対応しています。

KCB-1のADポートをフルに活かして、自律ロボットを盛り上げましょう!! 

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

■KCB-1 回路図の公開

関連カテゴリー:KCB-1, アップデート, サポート, ソフトウエア

近藤科学株式会社ではみなさまのご要望に応え、この度、KCB-1の回路図を公開することになりました。

これからもKCB-1ならびに弊社製品をご愛顧下さいますようお願いいたします。

 

  • インストールは管理者権限で行って下さい。
  • インストールには、KCB-1 SDK CDROMのジャケットに記載されている、シリアル番号が必要です。
  • ZIP形式で圧縮されたセットアップファイル「KCB1_Circuit.ZIP」をダウンロードし解凍して下さい。
  • 解凍されたファイル「KCB1_Circuit.exe」をダブルクリックで実行するとインストールが開始されます。
  • インストールの途中で表示される使用許諾および注意事項をよく読み、インストールを行って下さい。

 

ダウンロードはこちらから> KCB1_Circuit

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

■KRS-788HVをKCB-1で動かす(2)

関連カテゴリー:サポート, ハードウエア

前回の続きです。ここを読む前に必ず「KRS-788HVをKCB-1で動かす①」を読んで下さい。

今回はPWM信号をKCB-1で作成し、KRS-788HVを実際に動かすプログラムを作成します。

・PWM信号を作るための基礎知識

下の図はPWM信号を図示したものです。上に出っ張っている部分は信号がHIGHになっていることを表しており、へこんだ部分がLOWです。電気的にはHIGHは5VでLOWが0Vです。

図のように一定間隔で繰り返しHIGHとLOWを切り替えると、サーボモーターに繰り返し命令を送ったことになります。この切り換え間隔をPWM周期と呼びます。また、HIGHの時間の長さでサーボモーターに回転角度を命令します。

・今回のプログラム設計手順

  1. PWM周期が細かいほど命令をたくさん送ることと一緒なので、周期を速くすると反応は良くなる。しかし、ある程度以上になると違いは分からないので、今回はPWM周期を8[ms]とします。
  2. HIGHの時間(700[us]~2300[us])も細かいほど詳細な角度を指定することになりますが、細かすぎても違いが分からないので、今回は0度~180度を50分割ぐらいで指定できるようにします。つまり最小角度は3.6度。

・KCB-1でPWM信号を出力するために必要な計算

1) 周期の決定

KCB-1ではPWM信号を送るために8bit PWMモードと16bit PWMモードの2種類があります。おおまかな違いは、8bit PWMモードではHIGHの時間指定の細かさは255段階ですが、命令を送る間隔(PWM周期)の指定は255×4段階から選ぶことができます。一方16bit PWMモードでは、HIGHの時間指定の細かさは65535段階から選べますが、命令を送る間隔の指定は4種類(3.27675[ms]、6.5535[ms]、26.214[ms]、104.856[ms])しか選ぶことができません。16bit PWMモードの詳細についてはKCB-1のマニュアルをお読み下さい。

今回は8[ms]周期にするために、8bitモードを選択します。

2) 周期の計算

周期は下の式で計算できます。fqが周期を決定する変数0~255の間で選ぶことができます。Fjは分周比と言って、20MHz(PWM_F1)、10MHz(PWM_F2)、2.5MHz(PWM_F8)、625kHz(PWM_F32)のいずれかとなります。

周期=(fq + 1) × 255 / Fj

例えば、分周比Fj=PWM_F1=20MHzを選択すると、

周期=(fq + 1) × 255 / 20000000 ≒ (fq + 1) × 0.00001275

となります。fqの最大値255を代入すると、周期=3.25125[ms]となり、8[ms]に足りません。また、PWM_F2を選択しても6.5025[ms]となり少し足りませんので、今回はFj=PWM_F8を選択します。このときの周期決定変数fqを次のように計算で求めます。

fq = (周期 x Fj)/255 - 1
   = (周期 x PWM_F8)/255 - 1
   = (8ms x 2.5MHz)/255 - 1
   = (0.008 x 2500000)/255 - 1
   = 78.43 - 1
   ≒ 77

この計算から、KCB-1でPWM周期を決定する命令は、次のようになります。

pwm8_init (PIO0, PWM_F8, 77);

PWM8_init関数に、出力する端子"PIO0"、メインクロックの分周比"PWM_F8"、fqの"77"を指定して準備は完了です。

・HIGH時間の計算

8bit PWMモードでの周期8[ms]に対して、HIGHを指定できる細かさは255段階です。図のように、8[ms]と255を対比させると、角度を指定する有効なHIGH時間の長さ(700[us]~2300[us])は、だいたい22~72となり、ちょうど50段階となります。したがってサーボモーターを180度の位置へ回転させるには、KCB-1のプログラムでは、次のようになります。

pwm_out (PIO0, 72);

動作させる場合は、命令を送った後にサーボが目標角度へ到達するまで、必ずwait関数で待つようにして下さい。

より細かく角度を指定したい場合は、周期を狭くすることで可能になります。解説図のように8ms周期を4ms周期にすると、
44~144の100段階で設定できますので、約1.8度間隔でサーボを制御することができるようになります。

・サンプルプログラム

サンプルプログラムでは、サーボモーターを0度の位置へ回転させた後で、180度の位置へ回転させています。pwm_out関数の中の数値をいろいろ変えてみると、対応する角度へ移動します。

<プログラム ダウンロード  (3KB)>

KCB-1はPWM信号を4つ同時に出すことができますので、KRS-788HVを4つ同時に制御することができます。

ぜひお試し下さい。

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

■KRS-788HVをKCB-1で動かす(1)

関連カテゴリー:サポート, ハードウエア

今回はPWMサーボをKCB-1で方法を紹介します。

例で使用するKRS-788HVは、KHR-HVシリーズに標準で使用されているPWMサーボです。

 

・PWM信号とは
PWM信号とは一定の時間で、HIGH(KCB-1では5V)とLOW(0V)を切り換えて作った信号のことです。

KRS-788HVはだいたい5[ms]~30[ms]の間隔でHIGHとLOWの時間を読み取って、角度制御を行います。

具体的には、KRS-788HVの白い端子を700[us]だけHIGHにすると0度の位置へ回転します。2300[us]だけHIGHにすると180度の位置へ回転します。
  

・準備

KCB-1にはPWMサーボを動かすための端子が用意されていないため、KRS-788HVを接続するには少し工夫が必要です。

KCB-1は、PWM信号をPIO端子の0,2,4,6番端子から出力することができます。この端子のいずれかにPWMサーボのコネクタから信号線(白線)を抜き取り、接続します。赤線はSIO端子のVccに、黒線はGNDに接続しサーボに電源を供給します。

※PIO端子はピンがたっていないため、予め2mmピッチヘッダーピンを立てておく必要があります。また、サーボのコネクターは2.54mmピッチなので、2mmピッチのヘッダーピンでは接続したときに隙間が空いてしまいます。コネクターの先端をペンチ等で軽く潰し、しっかりと接続できるように調節してください。

(※ 作業による故障等は弊社では責任を負いかねます。予めご了承下さい。)

 

 (画像 クリックで拡大)

 

今回はここまでです。次回はpwm.hを使って簡単制御プログラムを紹介します。

※1 msはミリ秒のことで、1[ms] = 0.001秒
※2 usはマイクロ秒のことで、1[us] = 0.000001秒

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

■KCB-1用PIO接続ケーブルセットを使った制作例

関連カテゴリー:サポート, センサー, ハードウエア

端子が立っていなかったPIOポートを有効に活用するための「KCB-1用PIO接続ケーブルセット」が発売されました。このケーブルセットは、2mmピッチのオスコネクターをPIOポートの空いているパターンにハンダ付けするだけで、すぐに使用することができます。

今回はこのケーブルセットの簡単な使用例をご紹介します。

(写真 クリックで拡大)

左の写真は、8個のLEDのアノードを、470Ωの抵抗を通してPIOポートのそれぞれの端子に接続しました。PIOポートからHを出力するとLEDが点灯し、LにするとLEDが消灯します。ケーブルの先には市販の圧着式10ピンコネクタを使用しました。

このLEDボードを使用して、アナログ値を表示するプログラムを組みました。

右の写真はPSDセンサーに白い板を近づけてLEDを点灯させているところです。AD1に接続したPSDセンサーのアナログ値が大きくなる(物体に近づく)ことに比例してLEDの点灯する個数が増えます。

以下はサンプルプログラムのダウンロードと解説です。

 

<プログラム ダウンロード 2KB>

プログラム解説:

メイン関数ではLEDの点灯パターンのみを処理し、アナログ値は10ms間隔のタイマー割り込みで読みました。

メイン関数ループ内の数式( y = 7.0 / 500.0 * (adv – 100.0) + 1; )は、PIOポートの点灯パターンを求める式です。AD1から読み取ったPSDセンサーの値advが、600以上ではLEDが全点灯、100以下のときはLEDは全消灯となるように式を作りました。100~600間は約70の間隔で点灯するLEDの数が増減します。

式の中で7.0としているのは、値を整数型として扱わないようにするためです。もし7のままで計算した場合、Cコンパイラは整数型として計算を行うため、小数点以下を切り捨てるので、答えは全て1になります。これは#define関数でもよく間違うので注意しましょう。

※ LEDは品種によって接続する抵抗値が変化します。また、LEDには極性がありますので使用時には必ずデータシートでご確認ください。

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

■KHR-1自律ロボット作例

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

今回はKHR-1での自律ロボットを紹介します。

画像のKHR-1には前後左右に計4つのPSDセンサーを実装しています。これらのセンサーの値を読み取り、最も近い物体へKHR-1が向かうようにプログラムを組みました。

 

 <画像 クリックして拡大>

写真は「KCB-1でKHR-1を動かす①」でKCB-1を実装したKHR-1にPSDを取り付けた画像です。頭部のフレームの前後と、両肩にPSDセンサーをひとつずつ取り付けました。

 

<ムービー (2.31 MB)>

画像のKHR-1を実際に動かした動画です。それぞれのPSDセンサーに手をかざすと、KHR-1が近づいてきます。

 

<サンプルプログラム ダウンロード>

サンプルプログラムは動画のKCB-1に書き込まれているものと同じです。以下はこのプログラムを説明します。

・サンプルプログラムの流れ:

①. ボードの初期化、RCB-1と通信開始。通信の準備ができたら赤LEDが点灯する

②. スイッチが押されるまで(AD2がHになるまで)待機している間、ニュートラル信号を流し続ける

③.スイッチが押されると、お辞儀モーションを一回再生

④ 無限ループ開始。ループ内では1回ループする度に必ずニュートラル信号を送信すること

⑤. 前後左右に取り付けたセンサーの値を読み取り、グローバルで宣言した配列に代入

⑥. センサーの値をバブルソートして、最も高い値を求める

⑦. バブルソートで求められた値を元に、モーション再生分岐

⑧. ④~⑦の処理を繰り返す

 

・解説:

②、④のように、モーションを再生していないときはなるべくニュートラル信号を送信するようにしてください。ニュートラル信号なしにモーションを再生すると、うまく動作しません。

⑥のバブルソートは複数の値の中で最も大きい値、または小さい値を求める処理です。詳しくは「センサーで目標を探す(KRS788使用)③」の解説をご覧ください。

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