Revision: 6339 http://playerstage.svn.sourceforge.net/playerstage/?rev=6339&view=rev Author: gerkey Date: 2008-04-16 10:59:37 -0700 (Wed, 16 Apr 2008)
Log Message: ----------- working on timing Modified Paths: -------------- code/player/trunk/server/drivers/planner/wavefront/Makefile.am code/player/trunk/server/drivers/planner/wavefront/plan.c code/player/trunk/server/drivers/planner/wavefront/plan_control.c code/player/trunk/server/drivers/planner/wavefront/plan_plan.c code/player/trunk/server/drivers/planner/wavefront/wavefront.cc Modified: code/player/trunk/server/drivers/planner/wavefront/Makefile.am =================================================================== --- code/player/trunk/server/drivers/planner/wavefront/Makefile.am 2008-04-16 17:24:32 UTC (rev 6338) +++ code/player/trunk/server/drivers/planner/wavefront/Makefile.am 2008-04-16 17:59:37 UTC (rev 6339) @@ -3,7 +3,7 @@ noinst_LTLIBRARIES += libwavefront.la endif -AM_CPPFLAGS = -Wall -g -O3 -I$(top_srcdir) `pkg-config --cflags gdk-pixbuf-2.0` +AM_CPPFLAGS = -Wall -g -I$(top_srcdir) `pkg-config --cflags gdk-pixbuf-2.0` -O3 libwavefront_la_SOURCES = plan.c plan_plan.c plan_waypoint.c plan.h \ plan_control.c wavefront.cc heap.h heap.c Modified: code/player/trunk/server/drivers/planner/wavefront/plan.c =================================================================== --- code/player/trunk/server/drivers/planner/wavefront/plan.c 2008-04-16 17:24:32 UTC (rev 6338) +++ code/player/trunk/server/drivers/planner/wavefront/plan.c 2008-04-16 17:59:37 UTC (rev 6339) @@ -135,7 +135,7 @@ } t1 = get_time(); - printf("plan_set_obstacles: %.6lf\n", t1-t0); + //printf("plan_set_obstacles: %.6lf\n", t1-t0); } void Modified: code/player/trunk/server/drivers/planner/wavefront/plan_control.c =================================================================== --- code/player/trunk/server/drivers/planner/wavefront/plan_control.c 2008-04-16 17:24:32 UTC (rev 6338) +++ code/player/trunk/server/drivers/planner/wavefront/plan_control.c 2008-04-16 17:59:37 UTC (rev 6339) @@ -41,8 +41,8 @@ // Check whether the straight-line path is clear if((cost = _plan_check_path(plan, cell, ncell)) < 0.0) { - printf("no path from (%d,%d) to (%d,%d)\n", - cell->ci, cell->cj, ncell->ci, ncell->cj); + //printf("no path from (%d,%d) to (%d,%d)\n", + //cell->ci, cell->cj, ncell->ci, ncell->cj); continue; } Modified: code/player/trunk/server/drivers/planner/wavefront/plan_plan.c =================================================================== --- code/player/trunk/server/drivers/planner/wavefront/plan_plan.c 2008-04-16 17:24:32 UTC (rev 6338) +++ code/player/trunk/server/drivers/planner/wavefront/plan_plan.c 2008-04-16 17:59:37 UTC (rev 6339) @@ -67,7 +67,7 @@ t1 = get_time(); - printf("computed global path: %.6lf\n", t1-t0); + //printf("computed global path: %.6lf\n", t1-t0); return(0); } @@ -136,7 +136,7 @@ t1 = get_time(); - printf("computed local path: %.6lf\n", t1-t0); + //printf("computed local path: %.6lf\n", t1-t0); return(0); } Modified: code/player/trunk/server/drivers/planner/wavefront/wavefront.cc =================================================================== --- code/player/trunk/server/drivers/planner/wavefront/wavefront.cc 2008-04-16 17:24:32 UTC (rev 6338) +++ code/player/trunk/server/drivers/planner/wavefront/wavefront.cc 2008-04-16 17:59:37 UTC (rev 6339) @@ -588,7 +588,7 @@ this->scans_count = MIN(this->scans_count,this->scans_size); this->scans_idx = (this->scans_idx + 1) % this->scans_size; - printf("%d scans\n", this->scans_count); + //printf("%d scans\n", this->scans_count); // run through the scans to see how much room we need to store all the // hitpoints @@ -639,11 +639,11 @@ } } - printf("setting %d hit points\n", this->scan_points_count); + //printf("setting %d hit points\n", this->scan_points_count); plan_set_obstacles(plan, this->scan_points, this->scan_points_count); t1 = get_time(); - printf("ProcessLaserScan: %.6lf\n", t1-t0); + //printf("ProcessLaserScan: %.6lf\n", t1-t0); if(this->graphics2d_id.interf) { @@ -857,6 +857,7 @@ bool rotate_waypoint=false; bool replan; int rotate_dir=0; + double m0=0.0,m1; pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,NULL); @@ -867,17 +868,25 @@ for(;;) { + GlobalTime->GetTimeDouble(&t); + + m1 = get_time(); + printf("loop time: %.6lf\n", m1-m0); + m0 = get_time(); + pthread_testcancel(); ProcessMessages(); if(!this->have_map && !this->new_map_available) { - usleep(CYCLE_TIME_US); + double currt,tdiff; + GlobalTime->GetTimeDouble(&currt); + tdiff = MAX(0.0, (CYCLE_TIME_US) - (currt-t)*1e6); + usleep((unsigned int)rint(tdiff)); continue; } - GlobalTime->GetTimeDouble(&t); if((t - last_publish_time) > 0.25) { @@ -888,7 +897,11 @@ if(!this->enable) { this->StopPosition(); - usleep(CYCLE_TIME_US); + double currt,tdiff; + GlobalTime->GetTimeDouble(&currt); + tdiff = MAX(0.0, (CYCLE_TIME_US) - (currt-t)*1e6); + printf("sleeping: %u\n", (unsigned int)rint(tdiff)); + usleep((unsigned int)rint(tdiff)); continue; } @@ -1004,8 +1017,29 @@ free(line.points); } + if(this->graphics2d_id.interf && this->plan->path_count) + { + player_graphics2d_cmd_polyline_t line; + line.points_count = this->plan->path_count; + line.points = (player_point_2d_t*)malloc(sizeof(player_point_2d_t)*line.points_count); + line.color.alpha = 0; + line.color.red = 255; + line.color.green = 0; + line.color.blue = 0; + for(int i=0;i<this->plan->path_count;i++) + { + line.points[i].px = PLAN_WXGX(this->plan,this->plan->path[i]->ci); + line.points[i].py = PLAN_WYGY(this->plan,this->plan->path[i]->cj); + } + this->graphics2d->PutMsg(this->InQueue, + PLAYER_MSGTYPE_CMD, + PLAYER_GRAPHICS2D_CMD_POLYLINE, + (void*)&line,0,NULL); + free(line.points); + } + t1 = get_time(); - printf("planning: %.6lf\n", t1-t0); + //printf("planning: %.6lf\n", t1-t0); if(!this->velocity_control) { @@ -1092,8 +1126,8 @@ double maxd=2.0; double distweight=10.0; - printf("pose: (%.3lf,%.3lf,%.3lf)\n", - this->localize_x, this->localize_y, RTOD(this->localize_a)); + //printf("pose: (%.3lf,%.3lf,%.3lf)\n", + //this->localize_x, this->localize_y, RTOD(this->localize_a)); if(plan_get_carrot(this->plan, &wx, &wy, this->localize_x, this->localize_y, maxd, distweight) < 0) @@ -1143,6 +1177,10 @@ double amin = DTOR(5.0); double amax = DTOR(20.0); + double goald = sqrt((this->localize_x-this->target_x)* + (this->localize_x-this->target_x) + + (this->localize_y-this->target_y)* + (this->localize_y-this->target_y)); double d = sqrt((this->localize_x-wx)*(this->localize_x-wx) + (this->localize_y-wy)*(this->localize_y-wy)); double b = atan2(wy - this->localize_y, wx - this->localize_x); @@ -1152,7 +1190,7 @@ double ad = angle_diff(b, this->localize_a); // Are we on top of the goal? - if(d < this->dist_eps) + if(goald < this->dist_eps) { if(!rotate_dir) { @@ -1190,7 +1228,7 @@ this->StopPosition(); t1 = get_time(); - printf("control: %.6lf\n", t1-t0); + //printf("control: %.6lf\n", t1-t0); } else // !velocity_control { @@ -1243,7 +1281,10 @@ // no more waypoints, so wait for target achievement //puts("waiting for goal achievement"); - usleep(CYCLE_TIME_US); + double currt,tdiff; + GlobalTime->GetTimeDouble(&currt); + tdiff = MAX(0.0, (CYCLE_TIME_US) - (currt-t)*1e6); + usleep((unsigned int)rint(tdiff)); continue; } // get next waypoint @@ -1283,7 +1324,11 @@ } } - usleep(CYCLE_TIME_US); + double currt,tdiff; + GlobalTime->GetTimeDouble(&currt); + tdiff = MAX(0.0, (CYCLE_TIME_US) - (currt-t)*1e6); + usleep((unsigned int)rint(tdiff)); + printf("sleeping: %u\n", (unsigned int)rint(tdiff)); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit