IRACS API(プログラミングインタフェイス)


 IRACS API(プログラミングインタフェイス)は、MicroSoft Visual BasicまたはMicroSoft Visual C++からIRACSの機能を使うための関数です。
 IRACS APIの使い方についてはIRACS SDKで提供されるサンプルプログラムのソースコードも合わせて参照してください。

 なお本ページに記載されている関数名、定数名等は変更される事があります。IRACS.bas,IRACS.vb,IRACS.h,IRACS.csと異なる場合はこれらのファイルの方を優先させてください。

初期化
機能 IRACSとの通信の初期化を行う
VB書式 Function InitIRACS(ByVal mode As Long, ByVal hWnd As Long) As Integer
VB.NET書式 Function InitIRACS(ByVal mode As Integer, ByVal hWnd As Integer) As Short
C++書式 short InitIRACS(int mode, HWND hWnd);
C♯書式 short NATOC.InitNATOC(int mode, int hWnd);
戻り値 0 = 正常 -1 = 通信エラー  
引数 mode 通信モード 0を指定
  hWnd ライブ画像表示ウィンドウ・ハンドル NULLを指定するとライブ画像はIRACS本体に表示される


車位置取得
機能 車の現在位置や旋回数等を取得する
VB書式 Function GetCarPosition(ByRef car_x As Integer, ByRef car_y As Integer,
  ByRef car_loop As Integer, ByRef car_angle As Integer) As Integer
VB.NET書式 Function GetCarPosition(ByRef car_x As Short, ByRef car_y As Short,
  ByRef car_loop As Short, ByRef car_angle As Short) As Short
C++書式 short GetCarPosition(short *car_x, short *car_y, short *car_loop, short *car_angle);
C♯書式 short IRACS.GetCarPosition(out short car_x, out car train_y,
  out short car_loop, out short car_angle);
戻り値 0 = 正常 -1 = 通信エラー  
引数 car_x 車位置X座標 カメラの座標系(左上=0,0)
  car_y 車位置Y座標 カメラの座標系(左上=0,0)
  car_loop 車の旋回数 時計回り(右折旋回)に1回転(角度変化が360以上)すると+1される
反時計回り(左折旋回)に1回転(角度変化が360以上)すると-1される
  car_angle 車の角度変化 旋回の中心に対する角度変化(0〜360)、
右折すると角度分加算され、左折すると角度分減算される


IRACS制御コマンド
機能 IRACS本体の制御をする
VB書式 Function ControlIRACS(ByVal command As Integer) As Integer
VB.NET書式 Function ControlIRACS(ByVal command As Short) As Short
C++書式 short ControlIRACS(short command);
C♯書式 short IRACS.ControlIRACS(short command);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数エラー
引数 command 制御コマンド
command SDK_AUTO_STOP 0 自動運転終了(アプリケーションのプログラム)
  SDK_AUTO_START 1 自動運転開始(アプリケーションのプログラム)
  IRACS_AUTO_STOP 10 自動運転終了(IRACS本体のプログラム)
  IRACS_AUTO_START 11 自動運転開始(IRACS本体のプログラム)
  自動運転のプログラムをアプリケーション側のものを使うかIRACS本体側のものを使うかで
使うコマンドが異なります。アプリケーションでプログラムを作った時はSDK_AUTO_STARTで開始してください。


車制御コマンド
機能 車の制御をする
VB書式 Function ControlCar(ByVal command As Integer) As Integer
VB書式.NET Function ControlCar(ByVal command As Short) As Short
C++書式 short ControlCar(short command);
C♯書式 short IRACS.ControlCar(short command);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数エラー
引数 command 制御コマンド
command CAR_DRIVE_STOP 0 車停止
  CAR_DRIVE_FORWARD 1 車前進
  CAR_DRIVE_BACKWARD 2 車後進
  CAR_STEERING_CENTER 3 ハンドル直進
  CAR_STEERING_LEFT 4 ハンドル左折
  CAR_STEERING_RIGHT 5 ハンドル右折
  CAR_TURBO_ON 6 車ターボオン(加速運転)
  CAR_TURBO_OFF 7 車ターボオフ(通常運転)
command(ROBO-Q用) ROBOQ_FORWARD_STOP 0 前進停止
  ROBOQ_FORWARD_MIDDLE 1 前進(中速)
  ROBOQ_TURN_STOP 3 旋回停止
  ROBOQ_TURN_LEFT 4 左旋回
  ROBOQ_TURN_RIGHT 5 右旋回
  ROBOQ_FORWARD_HIGH 6 前進(高速)
  ROBOQ_FORWARD_LOW 7 前進(低速)
  ROBO-Qを制御する場合も値が同じ車のcommandで制御ができます。
ただしCAR_DRIVE_BACKWARDは実行しても無視されます。


サウンド制御コマンド
機能 サウンドの制御をする
VB書式 Function ControlSound(ByVal command As Integer, ByVal sound_no As Integer) As Integer
VB書式.NET Function ControlSound(ByVal command As Short, ByVal sound_no As Short) As Short
C++書式 short ControlSound(short command, short sound_no);
C♯書式 short IRACS.ControlSound(short command, short sound_no);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(command)エラー
-3 = 引数(sound_no)エラー
引数 command 制御コマンド
  sound_no サウンド番号 1〜100
command SOUND_PLAY_STOP 0 サウンド再生停止
  SOUND_PLAY_START 1 サウンド再生
  SOUND_PLAY_LOOP 2 サウンド繰返し再生
  SOUND_INIT_OVERLAP 3 重ね合わせ準備
  SOUND_INIT_OVERLAPは、別のサウンドを再生中にこの番号のサウンドを重ねる時に用います。
このコマンドは処理に時間がかかるため自動運転開始直後に行ってください。(実行中だとタイミングがずれます)
なおこのコマンドを行っていないサウンド番号のものを再生をすると前のサウンドは停止されます。


追従指標位置設定
機能 追従指標の位置を設定をする
VB書式 Function SetChaisePosition(ByVal chaise_x As Integer, ByVal chaise_y As Integer) As Integer
VB.NET書式 Function SetChaisePosition(ByVal chaise_x As Short, ByVal chaise_y As Short) As Short
C++書式 short SetChaisePosition(short chaise_x, short chaise_y);
C♯書式 short IRACS.SetChaisePosition(short chaise_x, short chaise_y);
戻り値 0 = 正常 -1 = 通信エラー
引数 chaise_x X座標 カメラの座標系(左上=0,0)
-1を指定すると追従指標は非表示になる
  chaise_y Y座標 カメラの座標系(左上=0,0)
  追従指標(チーズ)はアプリケーションのカメラ画像に表示されます。
追従指標が表示されるとIRACS本体の機能で車は自動的に追従指標に追従し、追いつくと停止します。
IRACS本体の追従指標の移動操作では位置を変える事はできません。
アプリケーション側でマウスイベントを取得するなりして本APIで位置を変更してください。


コントローラー状態取得
機能 本体のコントローラーの状態を取得する
VB書式 Function GetControlStatus(ByRef status As Integer) As Integer
VB書式.NET Function GetControlStatus(ByRef status As Short) As Short
C++書式 short GetControlStaus(short *status);
C♯書式 short IRACS.GetControlStaus(out short status);
戻り値 0 = 正常 -1 = 通信エラー
引数 status スイッチ状態
status CONTROL_STATUS_POWER 0x01(&H1) 電源ボタン(プログラム終了)
  CONTROL_STATUS_FORWARD 0x02(&H2) 前進ボタン
  CONTROL_STATUS_BACKWARD 0x04(&H4) 後進ボタン
  CONTROL_STATUS_LEFT 0x08(&H8) 左折ボタン
  CONTROL_STATUS_RIGHT 0x10(&H10) 右折ボタン
  CONTROL_STATUS_TURBO 0x20(&H20) ターボ(加速)ボタン
  CONTROL_STATUS_AUTO 0x40(&H40) 自動運転スイッチ(自動運転)
  スイッチの状態はstatusのビットで返されます。
ビットがONの時はスイッチが上記カッコ内の状態であることを表します。


認識画像位置取得
機能 画像認識で検出した画像認識枠を取得する
VB書式 Function GetBallPosition(ByRef ball_left As Integer, ByRef ball_top As Integer,
  ByRef ball_right As Integer, ByRef ball_bottom As Integer) As Integer
VB.NET書式 Function GetBallPosition(ByRef ball_left As Short, ByRef ball_top As Short,
  ByRef ball_right As Short, ByRef ball_bottom As Short) As Short
C++書式 short GetBallPosition(short *ball_left, short *ball_top, short *ball_right, short *ball_bottom);
C♯書式 short IRACS.GetBallPosition(out short ball_left, out car ball_top,
  out short ball_right, out short ball_bottom);
戻り値 0 = 正常 -1 = 通信エラー  
引数 ball_left 画像認識枠の左X座標 カメラの座標系(左上=0,0)
  ball_top 画像認識枠の上Y座標 カメラの座標系(左上=0,0)
  ball_right 画像認識枠の右X座標 カメラの座標系(左上=0,0)
  ball_bottom 画像認識枠の下Y座標 カメラの座標系(左上=0,0)
  この関数で画像認識枠を取得する場合は、SetBallActionのBALL_ACTION_STOP以外を実行しておいてください。


認識画像の制御設定
機能 認識画像に対する制御を設定をする
VB書式 Function SetBallAction(ByVal command As Integer, ByVal distance As Integer) As Integer
VB.NET書式 Function SetBallAction(ByVal command As Short, ByVal distance As Short) As Short
C++書式 short SetBallAction(short command, short distance);
C♯書式 short IRACS.SetBallAction(short command, short distance);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(command)エラー
-3 = 引数(distance)エラー
引数 command 制御コマンド
command BALL_ACTION_STOP 0 ボール認識終了(ボール追従/回避停止)
  BALL_ACTION_START 1 ボール認識開始
  BALL_ACTION_CHAISE 2 ボール追従開始
  BALL_ACTION_ESCAPE 3 ボール回避開始
  distance 回避開始距離
(10〜200)
カメラのピクセル単位
BALL_ACTION_ESCAPE以外の場合は無視
  GetBallPositionで画像認識枠を取得する場合は、BALL_ACTION_STOP以外を実行しておいてください。
追従や回避を行わない場合はBALL_ACTION_STARTで画像認識を開始して置いてください。
ボール追従や回避はプログラムが終了するまで続行しますので途中で止める場合はBALL_ACTION_STOPまたはBALL_ACTION_START(画像認識を続行させる場合)を実行してください。
画像認識枠の中心と車の位置が回避開始距離より小さくなった時に車は画像認識枠と逆方向に進行します。
画像認識枠の中心と車の位置が回避開始距離の2倍距離より大きくなった時に車は停止します。


プログラム実行コマンド
機能 IRACSのプログラムを実行する
VB書式 Function ExecProgram(ByVal program As String, ByVal wait_done As Integer) As Integer
VB.NET書式 Function ExecProgram(ByVal program As String, ByVal wait_done As Short) As Short
C++書式 short ExecProgram(LPCTSTR program, short wait_done);
C♯書式 short IRACS.ExecProgram(string program, short wait_done);
戻り値 0 = 正常 -1 = 通信エラー -2 = 引数(program)エラー
-3 = 引数(wait_done)エラー
  program プログラムパス 拡張子.ntc、相対パス可(IRACS実行ディレクトリより)
  wait_done プログラム終了 0:終了を待たない 1:終了を待つ(プログラムが終了するまで
アプリケーションへの制御は戻りません)
  本機能を使うにはIRACS本体のリビジョンが1.50以上でなければいけません。
プログラムはループ等で繰り返さないようにしておく必要があります。



目次に戻る