void KalmanFilter::init(Eigen::Vector3f jerk_std, 
			Eigen::Vector3f measur_std,
			float delta_t,
			Eigen::Matrix<float, 9, 1> x_k1,
			Eigen::Matrix<float, 9, 9> init_cov)
{
  x_k_n_ =  x_k1;
  P_k_n_ = init_cov;

  H_.fill(0.);
  H_(0,0) = 1.;
  H_(1,1) = 1.;
  H_(2,2) = 1.;

  R_.fill(0.);
  R_(0,0) = pow(measur_std(0),2);
  R_(1,1) = pow(measur_std(1),2);
  R_(2,2) = pow(measur_std(2),2);

  sigma_jerk_ = Eigen::Matrix3f::Zero();
  sigma_jerk_(0,0) = pow(jerk_std(0),2);
  sigma_jerk_(1,1) = pow(jerk_std(1),2);
  sigma_jerk_(2,2) = pow(jerk_std(2),2);

  if (delta_t <=0)
    delta_t_ = 1/30; // We aim for 30 FPS
  else  
    delta_t_ = delta_t;
  
  delta_change();
}
inline 
int compare_points(void *x, void *y)
{
	point& a = *( (point*) x );
	point& b = *( (point*) y );
	if( H==NULL )
		return cmp( D_(a.i,a.j), D_(b.i,b.j) );
	else
		return cmp( D_(a.i,a.j)+H_(a.i,a.j), D_(b.i,b.j)+H_(b.i,b.j) );
}
Exemple #3
0
static void receive_avstream(conn* conn)
{
#define RTP_HEADER_SIZE 12
#define PACKET_SIZE	188
    unsigned char payload[PACKET_SIZE + RTP_HEADER_SIZE] = {0};
    for(;;) {
    	int nread = recvfrom(conn->sockfd, (void *)payload, sizeof(payload), 0, ( struct sockaddr *)&conn->serveraddr,  (socklen_t *)&conn->client_addr_len);
    	if(nread < 0) { // timeout
    		ERR("no stream");
    		continue;
    	}

    	if(nread != PACKET_SIZE + RTP_HEADER_SIZE) {
    		ERR("rtp: %d / %d", nread, PACKET_SIZE + RTP_HEADER_SIZE);
    		H_(payload, 16);
    	}
    	else {
    		fprintf(stderr, "@\r");
#if (RTP_HEADER_SIZE == 12)
    		memmove(payload, &payload[12], 188);
#endif
    		KASSERT(payload[0] == 0x47);
    		unsigned short pid = ((uint16_t)(payload[1] & 0x1f) << 8) + payload[2];
    		if(pid == 0) { // PAT
    			dvbpsi_PushPacket(conn->hdvbpsi, payload);
    		}
    	}
//    	H_(payload, 16);
    }
	leave(conn);
}
// test the heap validity
void check_heap( int i, int j )
{
	for( int x=0; x<n; ++x )
		for( int y=0; y<p; ++y )
		{
			if( heap_pool_(x,y)!=NULL )
			{
				point& pt = * (point*)heap_pool_(x,y)->fhe_data;
				if( H==NULL )
				{
					if( D_(i,j)>D_(pt.i,pt.j) )
						ERROR_MSG("Problem with heap.\n");
				}
				else
				{
					if( D_(i,j)+H_(i,j)>D_(pt.i,pt.j)+H_(pt.i,pt.j) )
						ERROR_MSG("Problem with heap.\n");
				}
			}
		}
}
Vector Controller::computedxFP(const Matrix &H, const Vector &v,
                               const Vector &w, const Vector &x_FP)
{
    Matrix H_=H;
    Vector w_=w;
    w_.push_back(1.0);
    
    H_(0,3)=x_FP[0]-H_(0,3);
    H_(1,3)=x_FP[1]-H_(1,3);
    H_(2,3)=x_FP[2]-H_(2,3);
    Vector dx_FP_pos=v+(w_[0]*cross(H_,0,H_,3)+
                        w_[1]*cross(H_,1,H_,3)+
                        w_[2]*cross(H_,2,H_,3));    

    H_(0,3)=H_(1,3)=H_(2,3)=0.0;
    Vector dx_FP_rot=H_*w_;
    dx_FP_rot.pop_back();

    return cat(dx_FP_pos,dx_FP_rot);
}
void KalmanOwt::initialize(const double device_time, const double localTimeSecs) {
  x_.setZero();
  x_[0] = localTimeSecs - device_time;

  P_.setZero();
  P_(0,0) = config.sigmaInitOffset * config.sigmaInitOffset;
  P_(1,1) = config.sigmaInitSkew * config.sigmaInitSkew;

  applyConfig();

  H_.setZero();
  H_(0,0) = 1;

  lastUpdateDeviceTime_ = device_time;
  isInitialized_ = true;
}
Exemple #7
0
void TimeSyncFilter::initialize(double device_time, double local_time) {
  x_.setZero();
  x_[0] = local_time - device_time;

  P_.setZero();
  P_(0, 0) = kSigmaInitOffset * kSigmaInitOffset;
  P_(1, 1) = kSigmaInitSkew * kSigmaInitSkew;

  Q_.setZero();
  Q_(0, 0) = kSigmaOffset * kSigmaOffset;
  Q_(1, 1) = kSigmaSkew * kSigmaSkew;

  R_ = kSigmaMeasurementTimeOffset * kSigmaMeasurementTimeOffset;

  H_.setZero();
  H_(0, 0) = 1;

  last_update_device_time_ = device_time;
  is_initialized_ = true;
}
static void GrokNavigationMask(void) {
    extern int navigation_mask;

    navigation_mask = GMenuItemParseMask(H_("NavigationMask|None"));
}