void DefaultObserver::get_observed_state(const double *prev_measurement, const double* prev_action, const double *current_measurement, const int cycle_ctr, double *observed_state) { __ss.str(""); for (int i=0; i<__observed_state_dim; i++) { observed_state[i] = current_measurement[i]; __ss << observed_state[i] << " "; } if (__verbose) IOUT("Observation: " << __ss.str()); }
static void out(register cell xval, stack wam) { register term xref; static char ibuf[MAX1]; FDEREF(xval); if(g.stop-g.sbuf>(bp_long)max.SBUF-MAX1) { warnmes("string buffer (-i option) exceeded or infinite term"); return; } if(VAR(xval)) { /* obsolete ASSERT2((void*)g.shared[BBoardStk].base<(void*)htable && (void*)htable<(void*)wam[HeapStk].base, xval); */ VOUT(HeapStk,COUT('x')) BOUT(COUT('b')) TVOUT(htable,max.DICT*3*sizeof(cell),COUT('h')) MVOUT(COUT('m')); } else { if(INTEGER(xval)) {IOUT(OUTPUT_INT(xval));} else { if(!GETARITY(xval)) {SOUT(NAME(xval));} /* operators can be handled here easily else if(g.DIF==xval) { out(xref+1,wam), SOUT(NAME(s)); out(xref+2,wam); } */ else if IS_LIST(xval) { COUT('['); out((cell)(++xref),wam); ++xref; FDEREF(T2C(xref)); while(IS_LIST(xval)) { COUT(','); out((cell)(++xref),wam); ++xref; FDEREF(T2C(xref)); } if(g.NIL!=xval) { COUT('|'); out((cell)xref,wam); } COUT(']'); } else if (BP_FLOAT(xval)) { FLOAT_OUT(ints_to_double( (half)(xref[1]), (half)(xref[2]), (half)(xref[3]))); } else { register no i; SOUT(NAME(xval)); COUT('('); for (i=1; i<GETARITY(xval); i++) { out(xref[i],wam); COUT(','); } out((cell)(xref+i),wam); COUT(')'); } } }
bool JoystickController::init(const int observed_state_dim, const int action_dim, double deltat, const char *fname, const char* chapter) { joydev = "/dev/input/js1"; rumbdev = "/dev/input/event7"; udim = action_dim; odim = observed_state_dim; xwork = SetDef(); fail_controller = 0; fail_controller_name = ""; fail_controller_fname = fname; fail_controller_active = false; for (int i=0; i<MAX_CONTROLLER; i++) { aux_controller[i] = 0; aux_controller_name[i] = ""; aux_controller_fname[i] = fname; aux_controller_button[i] = i; aux_controller_active[i] = false; } if (!read_options(fname, chapter==0 ? "Controller" : chapter)) { EOUT("in reading options."); return false; } if (fail_controller_name!="") { fail_controller = ControllerFactory::getTheControllerFactory()->create(fail_controller_name.c_str()); if (fail_controller == 0) { EOUT ("No implementation found for Controller (" << fail_controller_name << ")!"); return false; } if (!fail_controller->init(observed_state_dim, action_dim, deltat, fail_controller_fname.c_str())) { EOUT("Can not init fail_controller"); return false; } } for (int i=0; i<MAX_CONTROLLER; i++) { if (aux_controller_name[i]!="") { aux_controller[i] = ControllerFactory::getTheControllerFactory()->create(aux_controller_name[i].c_str()); if (aux_controller[i] == 0) { EOUT ("No implementation found for Controller (" << aux_controller_name[i] << ")!"); return false; } if (!aux_controller[i]->init(observed_state_dim, action_dim, deltat, aux_controller_fname[i].c_str())) { EOUT("Can not init aux_controller" << i+1); return false; } IOUT("Inited aux_controller" << i+1 << " " << aux_controller_name[i]); } } joy = 0; try { joy = new Joystick(joydev.c_str()); } catch (std::exception& e) { joy = 0; EOUT("No Joystick available ... on " << joydev << " : " << e.what()); return false; } rumb = new Rumble(rumbdev.c_str()); return true; }