static void print_data(urg_t *urg, long data[], int data_n, long time_stamp) { #if 1 int front_index; (void)data_n; front_index = urg_step2index(urg, 0); printf("%ld [mm], (%ld [msec])\n", data[front_index], time_stamp); #else (void)time_stamp; int i; long min_distance; long max_distance; urg_distance_min_max(urg, &min_distance, &max_distance); for (i = 0; i < data_n; ++i) { long l = data[i]; double radian; long x; long y; if ((l <= min_distance) || (l >= max_distance)) { continue; } radian = urg_index2rad(urg, i); x = (long)(l * cos(radian)); y = (long)(l * sin(radian)); printf("(%ld, %ld), ", x, y); } printf("\n"); #endif }
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; }
static void print_data(urg_t *urg, long data[], int data_n, long time_stamp) { #if 1 int front_index; (void)data_n; // \~japanese 前方のデータのみを表示 front_index = urg_step2index(urg, 0); printf("%ld [mm], (%ld [msec])\n", data[front_index], time_stamp); #else (void)time_stamp; int i; long min_distance; long max_distance; //open .txt file an write data into it //FILE *fp; //char ch; //fp=fopen("result.txt","w"); // \~japanese 全てのデータの X-Y の位置を表示 urg_distance_min_max(urg, &min_distance, &max_distance); for (i = 0; i < data_n; ++i) { long l = data[i]; double radian; long x; long y; if ((l <= min_distance) || (l >= max_distance)) { continue; } radian = urg_index2rad(urg, i); printf("%5.5f,%ld\n", radian/**180/3.141565*/, l+20); //putc(radian*180/3.141565,fp); //putc(l,fp); //x = (long)(l * cos(radian)); //y = (long)(l * sin(radian)); //printf("(%ld, %ld), ", x, y); } //fclose(fp); printf("\n"); #endif }