urg_ctrl.h File Reference

北陽電機製 測域センサ URG-X002S の基本操作クラス More...

#include "cpp_extern_macro.h"
#include "detect_os.h"

Include dependency graph for urg_ctrl.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Enumerations

enum  {
  URG_BAUDRATE = 115200, URG_DATA_SIZE = 769, NO_FILE_ERROR = -2, URG_BAUDRATE_ADJUST_ERROR = -3,
  URG_PRODUCT_MISMATCH_ERROR = -4
}
 測域センサ操作の定数 More...

Functions

int initURGCtrl (int argc, char *argv[])
 センサへの接続を行う
char * urg_getError (void)
 エラーメッセージを返す
int urg_capture (long *data, int from, int to, int group)
 センサからデータ取得
int deg2index (const int degree)
 degree角度をデータ配列のindex値に変換
int index2deg (const int index)
 データ配列のindex値をdegree角度に変換
double index2rad (const int index)
 データ配列のindex値をradian角度に変換
double deg2rad (const int degree)
 degree角度をradian角度に変換

Variables

 BEGIN_C_DECLS
 END_C_DECLS


Detailed Description

北陽電機製 測域センサ URG-X002S の基本操作クラス

Author:
Satofumi KAMIMURA
$Id$

Definition in file urg_ctrl.h.


Enumeration Type Documentation

anonymous enum

測域センサ操作の定数

Enumerator:
URG_BAUDRATE  標準の接続ボーレート
URG_DATA_SIZE  受信データの最大個数 (1024.0*270/360)+1
URG_BAUDRATE_ADJUST_ERROR  通信速度の調整に失敗
URG_PRODUCT_MISMATCH_ERROR  ドライバ未対応の製品に接続

Definition at line 20 of file urg_ctrl.h.


Function Documentation

int initURGCtrl ( int  argc,
char *  argv[] 
)

センサへの接続を行う

プログラム実行時の引数で指定されたデバイスへの接続を試みる。接続に失敗した場合、接続するデバイスを、

  • プログラムを実行しているディレクトリの URG_CONFIG_FILE ファイル
  • $HOME ディレクトリの URG_CONFIG_FILE ファイル
  • 環境変数 URG_PORT
の順に探索し、最初に見つかったデバイスに接続を試みる。接続に失敗した場合、探索をそこで中断してエラーを返す

引数で指定できる項目は以下の通り

  • --urg_port=<デバイス名>
  • --urg_baudrate=<ボーレート>
設定ファイルは、URG_CONFIG_FILE マクロの宣言に依存する

意味を持つ環境変数は以下の通り

  • HOME URG_CONFIG_FILE を探すディレクトリ
  • URG_PORT 利用するポート
  • URG_BAUDRATE 利用するポートのボーレート
--urg_port におけるデバイス名が "auto" の場合、URG_AUTO_PORT の探索がデバイス番号 20 から 0 に向かって行われる

Parameters:
argc [i] main()の argc
argv [i] main()の argv
Returns:
0 正常終了

< 0 エラー

Definition at line 243 of file urg_ctrl.c.

References URG_BAUDRATE.

char* urg_getError ( void   ) 

エラーメッセージを返す

Parameters:
なし 
Returns:
error_message エラーメッセージ文字列へのポインタ
Todo:
実装する
Attention:
未実装

Definition at line 307 of file urg_ctrl.c.

int urg_capture ( long *  data,
int  from,
int  to,
int  group 
)

センサからデータ取得

データが格納される配列には、センサ全面を 0[degree]とした場合の -135[degree]が index の 0 に、135[degree]が index の 768 に対応する。

urgIndex.png

配列に格納されるデータと角度の関係(センサ真上からの図)

配列に格納されるデータが示す値の意味は以下の通り
  • -1 : 未測定
  • < 20 : 測定エラー
  • [20, 4095] : 測距対象までの[mm]距離
  • > 4095 : 4095[mm]以上の距離
データのグルーピング個数を2以上に指定することで、センサからのデータ取得時間を短縮することができる。urg_capture() ではグルーピングで圧縮された受信データを展開して配列に格納する。グルーピングの効果を以下に示す。

  // 全く同じ測定データが帰ってくる環境だと仮定する
  
  long data[URG_DATA_SIZE];
  urg_capture(data, 0, URG::DATA_SIZE, 1);
  // 格納されるデータ: { 21, 22, 24, 23, 25, 26,...};
  
  urg_capture(data, 0, URG::DATA_SIZE, 2);
  // 格納されるデータ: { 21, 21, 23, 23, 25, 26,...}, 受信サイズが 1/2 に
  
  urg_capture(data, 0, URG::DATA_SIZE, 3);
  // 格納されるデータ: { 21, 21, 21, 24, 24, 24,...}, 受信サイズが 1/3 に

Parameters:
data [o] データが格納される配列
from [i] 測距開始index
to [i] 測距終了index
group [i] グルーピングを行うデータ数
Return values:
URG::DATA_MAX 配列のデータ個数
< 0 取得エラー

Definition at line 362 of file urg_ctrl.c.

References URG_DATA_SIZE.

int deg2index ( const int  degree  ) 

degree角度をデータ配列のindex値に変換

角度とURGCapturecapture() のデータ配列との変換を行う

Parameters:
degree [i] degree角度
Returns:
index 配列のindex値

Definition at line 467 of file urg_ctrl.c.

References URG_DATA_SIZE.

int index2deg ( const int  index  ) 

データ配列のindex値をdegree角度に変換

角度とURGCapturecapture() のデータ配列との変換を行う

Parameters:
index [i] 配列のindex値
Returns:
degree degree角度

Definition at line 492 of file urg_ctrl.c.

double index2rad ( const int  index  ) 

データ配列のindex値をradian角度に変換

角度とURGCapturecapture() のデータ配列との変換を行う

Parameters:
index [i] 配列のindex値
Returns:
radian radian角度

Definition at line 505 of file urg_ctrl.c.

double deg2rad ( const int  degree  ) 

degree角度をradian角度に変換

Parameters:
degree [i] degree角度
Returns:
radian radian 角度

Definition at line 525 of file urg_ctrl.c.


Generated on Mon Apr 13 22:52:06 2009 by  doxygen 1.5.7.1