int main(int argc, char *argv[]) { urg_t urg; long *data; long max_distance; long min_distance; long time_stamp; int i; int n; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } data = (long *)malloc(urg_max_data_size(&urg) * sizeof(data[0])); if (!data) { perror("urg_max_index()"); return 1; } // \~japanese データ取得 urg_start_measurement(&urg, URG_DISTANCE, 1, 0); n = urg_get_distance(&urg, data, &time_stamp); if (n < 0) { printf("urg_get_distance: %s\n", urg_error(&urg)); urg_close(&urg); return 1; } // \~japanese X-Y 座標系の値を出力 urg_distance_min_max(&urg, &min_distance, &max_distance); for (i = 0; i < n; ++i) { long distance = data[i]; double radian; long x; long y; if ((distance < min_distance) || (distance > max_distance)) { continue; } radian = urg_index2rad(&urg, i); x = (long)(distance * cos(radian)); y = (long)(distance * sin(radian)); printf("%ld, %ld\n", x, y); } printf("\n"); // \~japanese 切断 free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
int main(int argc, char *argv[]) { enum { CAPTURE_TIMES = 0, }; urg_t urg; long *data = NULL; long time_stamp; int n; int i; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } data = (long *)malloc(urg_max_data_size(&urg) * sizeof(data[0])); if (!data) { perror("urg_max_index()"); return 1; } // \~japanese データ取得 #if 0 // \~japanese データの取得範囲を変更する場合 urg_set_scanning_parameter(&urg, urg_deg2step(&urg, -90), urg_deg2step(&urg, +90), 0); #endif int k; for (k = 0; k < 3; k++) { urg_start_measurement(&urg, URG_DISTANCE, CAPTURE_TIMES, 0); for (i = 0; i < 25; ++i) { n = urg_get_distance(&urg, data, &time_stamp); if (n <= 0) { printf("urg_get_distance: %s\n", urg_error(&urg)); free(data); urg_close(&urg); return 1; } print_data(&urg, data, n, time_stamp); } urg_stop_measurement(&urg); sleep(10); } // \~japanese 切断 free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
int main(int argc, char *argv[]) { enum { CAPTURE_TIMES = 10, }; urg_t urg; int max_data_size; long *data = NULL; unsigned short *intensity = NULL; long time_stamp; int n; int i; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } max_data_size = urg_max_data_size(&urg); data = (long *)malloc(max_data_size * sizeof(data[0])); if (!data) { perror("urg_max_index()"); return 1; } intensity = malloc(max_data_size * sizeof(intensity[0])); if (!intensity) { perror("urg_max_index()"); return 1; } // データ取得 urg_start_measurement(&urg, URG_DISTANCE_INTENSITY, URG_SCAN_INFINITY, 0); for (i = 0; i < CAPTURE_TIMES; ++i) { n = urg_get_distance_intensity(&urg, data, intensity, &time_stamp); if (n <= 0) { printf("urg_get_distance_intensity: %s\n", urg_error(&urg)); free(data); urg_close(&urg); return 1; } print_data(&urg, data, intensity, n, time_stamp); } // 切断 free(intensity); free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
int main(int argc, char *argv[]){ enum { CAPTURE_TIMES = 1, //modificat_numarul_de_afisari_ale_citirii }; urg_t urg; long *data = NULL; long time_stamp; int n; int i; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } data = (long *)malloc(urg_max_data_size(&urg) * sizeof(data[0])); if (!data) { perror("1urg_max_index()"); return 1; } // \~japanese データ取得 #if 0 // \~japanese データの取得範囲を変更する場合 urg_set_scanning_parameter(&urg, urg_deg2step(&urg, -90), urg_deg2step(&urg, +90), 0); #endif urg_start_measurement(&urg, URG_DISTANCE, URG_SCAN_INFINITY, 0); for (i = 0; i < CAPTURE_TIMES; ++i) { n = urg_get_distance(&urg, data, &time_stamp); if (n <= 0) { printf("urg_get_distance: %s\n", urg_error(&urg)); free(data); urg_close(&urg); return 1; } print_data(&urg, data, n, time_stamp); } // \~japanese 切断 free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
int main(int argc, char *argv[]) { enum { TIME_STAMP_PRINT_TIMES = 5, }; urg_t urg; long time_stamp_offset; int i; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } printf("# pc,\tsensor\n"); // \~japanese URG のタイムスタンプと PC のタイムスタンプを表示 time_stamp_offset = print_time_stamp(&urg, 0); // \~japanese URG の補正後のタイムスタンプと PC タイムスタンプを表示 for (i = 0; i < TIME_STAMP_PRINT_TIMES; ++i) { print_time_stamp(&urg, time_stamp_offset); } urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
int main(int argc, char *argv[]) { enum { CAPTURE_TIMES = 10, }; urg_t urg; long *data = NULL; long time_stamp; int n; int i; if (open_urg_sensor(&urg, argc, argv) < 0) { return 1; } data = (long *)malloc(urg_max_data_size(&urg) * 3 * sizeof(data[0])); if (!data) { perror("urg_max_index()"); return 1; } // データ取得 urg_start_measurement(&urg, URG_MULTIECHO, URG_SCAN_INFINITY, 0); for (i = 0; i < CAPTURE_TIMES; ++i) { n = urg_get_multiecho(&urg, data, &time_stamp); if (n <= 0) { printf("urg_get_multiecho: %s\n", urg_error(&urg)); free(data); urg_close(&urg); return 1; } print_data(&urg, data, n, time_stamp); } // 切断 free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }
void LRF::CloseLRF() { urg_close(&urg); }
bool closeSensor(void * params) { URGPARAMS * tempparams=(URGPARAMS *)params; urg_close(&(tempparams->urg)); return 1; }
bool closeSensor(void * params, QObject ** trigger, QString & triggersignal) //close the sensor using params { URGSENSORPARAMS * URGparams=(URGSENSORPARAMS *)params; urg_close(&(URGparams->urg)); return 1; }
void error_func(urg_t *urg, const char *message){ urg_close(urg); fprintf(stderr, "%s :: %s\n", message, urg_error(urg)); //print le message d'erreur perso et celui issu de l'hokuyo }
int main(int argc, char *argv[]) { enum { CAPTURE_TIMES = 1, }; urg_t urg; urg_connection_type_t connection_type = URG_SERIAL; long *data = NULL; long time_stamp; int n; int i; #if defined(URG_WINDOWS_OS) const char *device = "COM3"; #elif defined(URG_LINUX_OS) const char *device = "/dev/ttyACM0"; #else #endif long baudrate_or_port = 115200; const char *ip_address = "192.168.0.10"; // 接続タイプの切替え for (i = 1; i < argc; ++i) { if (!strcmp(argv[i], "-e")) { connection_type = URG_ETHERNET; baudrate_or_port = 10940; device = ip_address; } } for (i = 1; i < argc; ++i) { if (!strcmp(argv[i], "-e")) { connection_type = URG_ETHERNET; } } // \~japanese 接続 if (urg_open(&urg, connection_type, device, baudrate_or_port) < 0) { printf("urg_open: %s\n", urg_error(&urg)); return 1; } data = (long *)malloc(urg_max_data_size(&urg) * 3 * sizeof(data[0])); if (!data) { perror("urg_max_index()"); return 1; } // \~japanese データ取得 urg_start_measurement(&urg, URG_MULTIECHO, CAPTURE_TIMES, 0); for (i = 0; i < CAPTURE_TIMES; ++i) { n = urg_get_distance(&urg, data, &time_stamp); if (n <= 0) { printf("urg_distance: %s\n", urg_error(&urg)); free(data); urg_close(&urg); return 1; } print_data(&urg, data, n, time_stamp); } // \~japanese 切断 free(data); urg_close(&urg); #if defined(URG_MSC) getchar(); #endif return 0; }