URG センサ用の補助関数 [詳細]
#include "urg_sensor.h"
関数 | |
const char * | urg_error (const urg_t *urg) |
URG のエラーを示す文字列を返す | |
void | urg_distance_min_max (const urg_t *urg, long *min_distance, long *max_distance) |
センサが返す距離の最大値、最小値を返す | |
void | urg_step_min_max (const urg_t *urg, int *min_step, int *max_step) |
計測 step の最大値、最小値を返す | |
long | urg_scan_usec (const urg_t *urg) |
1スキャンにかかる時間 [usec] を返す | |
int | urg_max_data_size (const urg_t *urg) |
取得データ数の最大値を返す | |
double | urg_index2rad (const urg_t *urg, int index) |
インデックスと角度(radian)の変換を行う | |
double | urg_index2deg (const urg_t *urg, int index) |
インデックスと角度(degree)の変換を行う | |
int | urg_rad2index (const urg_t *urg, double radian) |
角度(radian)とインデックスの変換を行う | |
int | urg_deg2index (const urg_t *urg, double degree) |
角度(degree)とインデックスの変換を行う | |
int | urg_rad2step (const urg_t *urg, double radian) |
角度(radian)と step の変換を行う | |
int | urg_deg2step (const urg_t *urg, double degree) |
角度(degree)と step の変換を行う | |
double | urg_step2rad (const urg_t *urg, int step) |
step と 角度(radian)の変換を行う | |
double | urg_step2deg (const urg_t *urg, int step) |
step と 角度(degree)の変換を行う | |
int | urg_step2index (const urg_t *urg, int step) |
step とインデックスの変換を行う |
URG センサ用の補助関数
void urg_distance_min_max | ( | const urg_t * | urg, |
long * | min_distance, | ||
long * | max_distance | ||
) |
センサが返す距離の最大値、最小値を返す
センサが返す距離を [最小値, 最大値] で返します。 \param[in] urg URG センサ管理 \param[out] min_distance 最小値 [mm] \param[out] max_distance 最大値 [mm] Example
long min_distance, max_distance; urg_distance_min_max(&urg, &min_distance, &max_distance); for (int i = 0; i < n; ++i) { long distance = data[i]; if ((distance < min_distance) || (distance > max_distance)) { continue; } ... }
URG のエラーを示す文字列を返す
\param[in] urg URG センサ管理 \retval URG のエラーを示す文字列 Example
if (!urg_open(&urg, "/dev/ttyACM0", 115200, URG_SERIAL)) { printf("urg_open: %s\n", urg_error(&urg)); return -1; }
double urg_index2rad | ( | const urg_t * | urg, |
int | index | ||
) |
インデックスと角度(radian)の変換を行う
インデックとは urg_get_distance() などの距離データ取得関数が返したデータ配列についての値である。この関数は、最後に行った距離データ取得関数のデータ配列について有効となる。 \param[in] urg URG センサ管理 \param[in] index インデックス \return 角度 [radian] index は、取得した計測データについての値であり step や角度との関係は取得設定により異なる。 \image html sensor_index_image.png センサの計測範囲とインデックスの関係 Example
int n = urg_get_distance(&urg, data, NULL); for (int i = 0; i < n; ++i) { long distance = data[i]; double radian = urg_index2rad(i); double x = distance * cos(radian); double y = distance * sin(radian); printf("%.1f, %.1f\n", x, y); }
int urg_rad2step | ( | const urg_t * | urg, |
double | radian | ||
) |
角度(radian)と step の変換を行う
urg_step_min_max() で定義されている step について、角度(radian)と step の変換を行う。
[in] | urg | URG センサ管理 |
[in] | radian | 角度 [radian] |
角度から step へ変換した結果が整数でない場合、結果は 0 の方向に切り捨てられた値となる。
\see urg_step_min_max(), urg_deg2step(), urg_step2rad(), urg_step2deg()
void urg_step_min_max | ( | const urg_t * | urg, |
int * | min_step, | ||
int * | max_step | ||
) |
計測 step の最大値、最小値を返す
urg_set_scanning_parameter() で指定できる範囲を [最小値, 最大値] で返す。 \param[in] urg URG センサ管理 \param[out] min_step 最小値 \param[out] max_step 最大値 step はセンサ正面が 0 であり、センサ上部から見た場合の反時計まわりの方向が正、時計まわりの方向が負の step 値となる。 \image html sensor_step_image.png センサと step の関係 min_step, max_step の値はセンサによって異なる。 Example
urg_step_min_max(&urg, &min_step, &max_step); printf("range first: %d [deg]\n", urg_step2deg(&urg, min_step)); printf("range last : %d [deg]\n", urg_step2deg(&urg, max_step));