static void finish(void) { // back to idle cc110x_strobe(RF_SIDLE); radio_state = RADIO_IDLE; restore_conf(); /* Have to put radio back to WOR/RX if old radio state * was WOR/RX, otherwise no action is necessary */ if ((old_radio_state == RADIO_WOR) || (old_radio_state == RADIO_RX)) { cc110x_switch_to_rx(); } radio_release(); // restoreIRQ(cpsr); }
static void kcd(pp3d_rob protein, int iteraciones, double tpos, double *initial){ int j, ncol; int conf_in_col; double tcol,tinit; double inicio,fin, aux, tiempo,averagecol; int col_mode_to_be_set; //printf ("proteina %s, escala: %1.6f , iteraciones %d\n", protein->name, escala, iteraciones); ChronoOn(); ChronoTimes(&inicio, &aux); col_mode_to_be_set = p3d_col_mode_kcd; set_DO_KCD_GJK(TRUE); p3d_filter_switch_filter_mechanism(FALSE); p3d_col_set_mode(col_mode_to_be_set); p3d_col_start(col_mode_to_be_set); ChronoTimes(&fin, &aux); tinit= fin - inicio; printf("inicializacion: %4.4f segundos\n", tinit); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); p3d_col_test(); //kcd_robot_collides_itself(0 , JUST_BOOL); ncol= p3d_col_number(); if (ncol) conf_in_col++; averagecol+= ncol; //printf("numero de colisiones es %d \n", ncol); } ChronoTimes(&fin, &aux); ChronoOff(); tiempo= fin - inicio; tcol= tiempo - tpos; averagecol= averagecol / iteraciones; printf("kcd\n"); printf("%8s %7s %7s %7s %31s\n","col_conf","ncol","tinit","tpos","tcol"); printf(" %7d %7.2f %7.2f %7.2f %31.2f\n", conf_in_col, averagecol, tinit, tpos, tcol); restore_conf(initial,protein->njoints); }
static double sistematica2(pp3d_rob protein, double scale, int iteraciones, double *initial){ int j,njoints=protein->njoints; int conf_in_col; double inicio,fin, aux, tiempo,averagecol,usual_averagecol,averagecol0; double tinit,tpos,tposzig,trebuild,tprep,tlongdist,tcol,tcolzig,trebuilt_percent0; Robot_structure *rob; p3d_init_random_seed(0); printf ("numero de joints: %d\n", njoints); printf ("proteina %s, iteraciones %d, escala %4.3f\n", protein->name, iteraciones,escala_cont_pos); /*for (i=0;i<njoints;i++){ printf("%s,%2.2f, %2.2f\n ", protein->joints[i]->name,protein->joints[i]->vmin,protein->joints[i]->vmax); } */ charlatan=0; ChronoOn(); ChronoTimes(&inicio, &aux); bio_set_col_mode(NORMAL_BIOCOL_MODE); #ifdef HYDROGEN_BOND bio_init_molecules(0.8); printf("compilado con HYDROGEN_BOND", tpos); #else bio_init_molecules(scale); #endif rob=bcd_robots[0]; ChronoTimes(&fin, &aux); tinit= fin - inicio; printf("inicializacion: %4.4f segundos\n", tinit); /**************** unuseful action; only to "inject fuel to the machine" ***********/ /* for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); sup_collision(rob->superroot, rob->superroot); } restore_conf(initial,njoints); */ /****************** end of unuseful action ******************************** */ /*tpos */ ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ random_pos(protein); } ChronoTimes(&fin, &aux); tpos= fin - inicio; printf("pos: %4.4f segundos\n", tpos); restore_conf(initial,njoints); //goto abrevia; /*trbuild */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); } ChronoTimes(&fin, &aux); //ChronoOff(); tiempo= fin - inicio; averagecol= averagecol / iteraciones; trebuild= tiempo - tpos; printf("rebuild: %4.4f segundos \n", trebuild); restore_conf(initial,njoints); /* tshordistance */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; tprep= tiempo - (tpos + trebuild); printf("preprog: %4.4f segundos, %3.2f colisiones\n", tprep, averagecol); restore_conf(initial,njoints); abrevia: /* tlongdistance */ ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; tlongdist= tiempo - (tpos + trebuild + tprep); printf("sup: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tlongdist,conf_in_col, averagecol); restore_conf(initial,njoints); tcol= tiempo - tpos; usual_averagecol=averagecol; //goto t0; /* tposzig */ ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ zigzag_change_pos(protein); } ChronoTimes(&fin, &aux); tposzig= fin - inicio; printf("poszig: %4.4f segundos\n", tposzig); restore_conf(initial,njoints); /* tzig */ ChronoTimes(&inicio, &aux); averagecol=0; for (j=0;j<iteraciones;j++){ zigzag_change_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); averagecol+= get_n_collisions(); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; printf("tiempo total escala pequegna %5.2f\n", tiempo); averagecol= averagecol / iteraciones; tcolzig= tiempo - tposzig; restore_conf(initial,njoints); averagecol0= averagecol; t0: /* t0 */ set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions() != averagecol0) printf("\n NO HAY LAS MISMAS COLISIONES!!!\n\n"); printf("colisiones en posicion inicial %d\n", get_n_collisions()); //goto acaba; ChronoTimes(&inicio, &aux); for (j=0;j<iteraciones;j++){ set_n_collisions_to_zero(); //rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; printf("tiempo total escala 0: %5.2f\n", tiempo); trebuilt_percent0= (100 *(tcolzig - tiempo ))/ tcolzig; restore_conf(initial,njoints); acaba: //free_robot(rob); printf("bio\n"); printf("%8s %7s %7s %7s %7s %7s %7s %7s %7s %7s\n", "col_conf", "ncol", "tinit", "tpos", "tbuild", "tshort", "tlong", "tcol", "ncol0", "%build0"); printf(" %7d %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.2f %7.1f %7.2f\n", conf_in_col,usual_averagecol,tinit,tpos,trebuild,tprep,tlongdist,tcol,averagecol0,trebuilt_percent0); /* tiempo surf_distance */ bio_set_col_mode(SURFACE_DISTANCE_BIOCOL_MODE); bio_set_surface_d(0.8); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; printf("SURF_DISTANCE: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tiempo - tpos, conf_in_col, averagecol); restore_conf(initial,njoints); /* tiempo minimum_surf_distance */ bio_set_col_mode(MINIMUM_DISTANCE_BIOCOL_MODE); ChronoTimes(&inicio, &aux); conf_in_col=averagecol=0; for (j=0;j<iteraciones;j++){ random_pos(protein); set_n_collisions_to_zero(); set_minimum_Sdistance_to_max(); rebuild(rob); preprogr_collisions(rob); my_robot_autocollision(rob); if (get_n_collisions()) conf_in_col++; averagecol+= get_n_collisions(); // printf("numero de colisiones es %d \n", get_n_collisions()); } ChronoTimes(&fin, &aux); tiempo= fin - inicio; averagecol= averagecol / iteraciones; printf("MINIMUM_DISTANCE: %4.4f segundos, conf. en colision %d, %3.2f colisiones\n", tiempo - tpos, conf_in_col, averagecol); restore_conf(initial,njoints); bio_set_col_mode(NORMAL_BIOCOL_MODE); ChronoOff(); return tpos; }