/// <summary> /// Read the initial state for this feature from the Settings. This reads the /// state \vct{y}_i and the robot position from which it was first /// observed, \vct{x}_p^{orig} . These are not stored in the class, so are /// returned as parameters. /// </summary> /// <param name="settings">The Settings class from which to read the data</param> /// <param name="yi">To be filled in with the initial feature state, \vct{y}_i .</param> /// <param name="xp_orig">To be filled in with the robot position from which the feature was first observed, \vct{x}_p^{orig} .</param> public void read_initial_state(Settings.Section section, Vector yi, Vector xp_orig) { ArrayList values; yi.Resize(FEATURE_STATE_SIZE); values = section.get_entry("yi"); yi.ReadASCII((String)values[0]); uint size = get_motion_model().POSITION_STATE_SIZE; xp_orig.Resize(size); values = section.get_entry("xp_orig"); xp_orig.ReadASCII((String)values[0]); }
/// <summary> /// Read the initial state vector and covariance from a stream. /// Since state \f$ x_v \f$ and covariance \f$ P_{xx} \f$ are not stored in /// the class, these are passed by reference to be filled in by this function. /// </summary> /// <param name="stream"></param> /// <param name="initial_xv"></param> /// <param name="initial_Pxx"></param> public void read_initial_state(BinaryReader stream, ref Vector initial_xv, ref MatrixFixed initial_Pxx) { // Make sure the vector and matrix are the correct sizes initial_xv.Resize(STATE_SIZE); initial_Pxx.Resize(STATE_SIZE, STATE_SIZE); initial_xv.Fill(0.0f); initial_Pxx.Fill(0.0f); for (int r = 0; r < STATE_SIZE; r++) initial_xv[r] = stream.ReadSingle(); for (int r = 0; r < STATE_SIZE; r++) for (int c = 0; c < STATE_SIZE; c++) initial_Pxx[r, c] = stream.ReadSingle(); }