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());
}
Example #2
0
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;
}