From 48bcb0d57e7f13ce8b67e00a97a3219a0c1a18de Mon Sep 17 00:00:00 2001 From: David Johnson <johnsond@flux.utah.edu> Date: Fri, 18 Mar 2005 17:32:15 +0000 Subject: [PATCH] Modifications to file_dumper, should work good now. --- robots/vmcd/file_dumper.c | 178 +++++++++++++++++++------------------- 1 file changed, 87 insertions(+), 91 deletions(-) diff --git a/robots/vmcd/file_dumper.c b/robots/vmcd/file_dumper.c index 5d76d7b823..26f4b8ae22 100644 --- a/robots/vmcd/file_dumper.c +++ b/robots/vmcd/file_dumper.c @@ -20,7 +20,7 @@ #include <fcntl.h> #include "log.h" -#include "mtp.h" +//#include "mtp.h" #include <math.h> #include "mezz.h" @@ -50,45 +50,45 @@ static void sigusr1(int signal) mezz_frame_count += 1; } -#define ROBOT_HEIGHT 0.12f +/* #define ROBOT_HEIGHT 0.12f */ -void radial_trans(struct robot_position *p_inout) -{ - float distance_from_center, theta, vtheta, offset; - struct robot_position dp; - struct robot_position rp; +/* void radial_trans(struct robot_position *p_inout) */ +/* { */ +/* float distance_from_center, theta, vtheta, offset; */ +/* struct robot_position dp; */ +/* struct robot_position rp; */ - dp.x = 0.0; - dp.y = 0.0; - dp.theta = 0.0; +/* dp.x = 0.0; */ +/* dp.y = 0.0; */ +/* dp.theta = 0.0; */ - rp = *p_inout; +/* rp = *p_inout; */ - mtp_polar(&dp, &rp, &distance_from_center, &theta); - vtheta = atan2f(z_offset, distance_from_center); - offset = ROBOT_HEIGHT / tanf(vtheta); - mtp_cartesian(&dp, distance_from_center - offset, theta, p_inout); -} +/* mtp_polar(&dp, &rp, &distance_from_center, &theta); */ +/* vtheta = atan2f(z_offset, distance_from_center); */ +/* offset = ROBOT_HEIGHT / tanf(vtheta); */ +/* mtp_cartesian(&dp, distance_from_center - offset, theta, p_inout); */ +/* } */ /** * Transform a local camera coordinate to a real world coordinate. * * @param p The position to transform. */ -void local2global_posit_trans(struct robot_position *p_inout) -{ - float old_x = p_inout->x; +/* void local2global_posit_trans(struct robot_position *p_inout) */ +/* { */ +/* float old_x = p_inout->x; */ - assert(p_inout != NULL); +/* assert(p_inout != NULL); */ - p_inout->x = p_inout->y + x_offset; - p_inout->y = old_x + y_offset; - p_inout->theta -= M_PI_2; -} +/* p_inout->x = p_inout->y + x_offset; */ +/* p_inout->y = old_x + y_offset; */ +/* p_inout->theta -= M_PI_2; */ +/* } */ void print_packets(mezz_mmap_t *mm) { - struct robot_position rp; +/* struct robot_position rp; */ mezz_objectlist_t *mol; int lpc; int i,j; @@ -108,74 +108,69 @@ void print_packets(mezz_mmap_t *mm) int found_first_blob = 0; - for (i = 0; i < mm->bloblist.count; ++i) { - if (found_first_blob) { - break; - } - for (j = 0; j < mm->bloblist.count; ++j) { - if (found_first_blob) { - break; - } - if (j != i) { - if (!done_blobs[i] && !done_blobs[j] && - mm->bloblist.blobs[i].object == - mm->bloblist.blobs[j].object ) { - - found_first_blob = 1; - - done_blobs[i] = done_blobs[j] = 1; - - // print out the blob centroids - fprintf(output_FILE, - "a(%f,%f) b(%f,%f)", - mm->bloblist.blobs[i].ox, - mm->bloblist.blobs[i].oy, - mm->bloblist.blobs[j].ox, - mm->bloblist.blobs[j].oy - ); - - fprintf(output_FILE, - " -- wc(%f,%f,%f)\n", - mol->objects[0].px, - mol->objects[0].py, - mol->objects[0].pa - ); - fflush(stdout); - } - } - } - } - -#if 0 - for (lpc = 0; lpc < mol->count; ++lpc) { - if (mol->objects[lpc].valid) { /* Don't send meaningless data. */ - - /* Copy the camera-coordinates, then */ - rp.x = mol->objects[lpc].px; - rp.y = mol->objects[lpc].py; - rp.theta = mol->objects[lpc].pa; - - fprintf(output_FILE," - local[%d]: x = %f, y = %f, theta = %f\n", - lpc,rp.x,rp.y,rp.theta - ); - - radial_trans(&rp); - + for (i = 0; i < mm->objectlist.count; ++i) { + mezz_object_t *obj = &(mm->objectlist.objects[i]); + if (obj->valid) { fprintf(output_FILE, - " - radial[%d]: x = %f, y = %f, theta = %f\n", - lpc,rp.x,rp.y,rp.theta + "[%d] a(%f,%f) b(%f,%f)", + i, + obj->ablob.ox, + obj->ablob.oy, + obj->bblob.ox, + obj->bblob.oy ); - - /* ... transform them into global coordinates. */ - local2global_posit_trans(&rp); - fprintf(output_FILE, - " - global[%d]: x = %f, y = %f, theta = %f\n", - lpc,rp.x,rp.y,rp.theta + " -- wc(%f,%f,%f)\n", + obj->px, + obj->py, + obj->pa ); - } + } } -#endif + + // old "algorithm" for finding which blobs belong to which objects... + // faulty cause blobs aren't declared as valid/invalid like objects are. + +/* for (i = 0; i < mm->bloblist.count; ++i) { */ +/* if (found_first_blob) { */ +/* break; */ +/* } */ +/* for (j = 0; j < mm->bloblist.count; ++j) { */ +/* if (found_first_blob) { */ +/* break; */ +/* } */ +/* if (j != i) { */ +/* if (!done_blobs[i] && !done_blobs[j] && */ +/* mm->bloblist.blobs[i].object == */ +/* mm->bloblist.blobs[j].object ) { */ + +/* found_first_blob = 1; */ + +/* done_blobs[i] = done_blobs[j] = 1; */ + +/* // print out the blob centroids */ +/* fprintf(output_FILE, */ +/* "a(%f,%f) b(%f,%f)", */ +/* mm->bloblist.blobs[i].ox, */ +/* mm->bloblist.blobs[i].oy, */ +/* mm->bloblist.blobs[j].ox, */ +/* mm->bloblist.blobs[j].oy */ +/* ); */ + +/* fprintf(output_FILE, */ +/* " -- wc(%f,%f,%f)\n", */ +/* mol->objects[0].px, */ +/* mol->objects[0].py, */ +/* mol->objects[0].pa */ +/* ); */ + + +/* fflush(output_FILE); */ +/* } */ +/* } */ +/* } */ +/* } */ + } void usage() { @@ -263,7 +258,8 @@ int main(int argc, char *argv[]) signal(SIGPIPE, SIG_IGN); if (mezz_init(0, mezz_file) == -1) { - errorc("unable to initialize mezzanine\n"); + error("unable to initialize mezzanine\n"); + //errorc("unable to initialize mezzanine\n"); exit(2); } mezzmap = mezz_mmap(); @@ -366,9 +362,9 @@ int main(int argc, char *argv[]) default_section_title_len = section_counter; if (output_file != NULL) { - output_FILE = fopen(output_file,"a"); + output_FILE = fopen(output_file,"w"); if (output_FILE == NULL) { - error("error: could not open output file for appending\n"); + error("error: could not open output file for writing\n"); exit(1); } } -- GitLab