// Callback: Finished calibration
 static void XN_CALLBACK_TYPE UserCalibration_CalibrationComplete (xn::SkeletonCapability& capability, XnUserID nId, XnCalibrationStatus eStatus, void* pCookie)
 {
   XnUInt32 epochTime = 0;
   xnOSGetEpochTime(&epochTime);
   OpenNITrackerLoopback* self = (OpenNITrackerLoopback*) pCookie;
   std::cerr << "got here: " << __FILE__ << " : " << __LINE__ << std::endl;
   if (eStatus == XN_CALIBRATION_STATUS_OK)
   {
     // Calibration succeeded
     printf("%d Calibration complete, start tracking user %d\n", epochTime, nId);		
     self->g_UserGenerator.GetSkeletonCap().StartTracking(nId);
     self->publishEvent ("tracking", nId);
   }
   else
   {
     // Calibration failed
     printf("%d Calibration failed for user %d\n", epochTime, nId);
     if (self->g_bNeedPose)
     {
       self->g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(self->g_strPose, nId);
       self->publishEvent ("posedetection", nId);
     }
     else
     {
       self->g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
       self->publishEvent ("calibrating", nId);
     }
   }
 }
Ejemplo n.º 2
0
void XN_CALLBACK_TYPE UserTracker::User_LostUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	printf("%d Lost user %d\n", epochTime, nId);
    removeUser(nId);
}
Ejemplo n.º 3
0
void NiRecorder::print_text(const QString &text_ref)
{
    XnUInt32 epoch_time = 0;
    xnOSGetEpochTime(&epoch_time);

    std::cout << (QString().setNum(epoch_time) + QString(": ") + text_ref).toAscii().data() << "\n";
}
Ejemplo n.º 4
0
// Callback: An existing user was lost
void XN_CALLBACK_TYPE User_LostUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
{
	XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	ROS_INFO("%d Lost user %d\n", epochTime, nId);
  publishUserLost(nId);
}
Ejemplo n.º 5
0
void XN_CALLBACK_TYPE UserCalibration_CalibrationComplete(xn::SkeletonCapability& capability, XnUserID nId, XnCalibrationStatus eStatus, void* pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    if (eStatus == XN_CALIBRATION_STATUS_OK)
    {
        // Calibration succeeded
        printf("%d Calibration complete, start tracking user %d\n", epochTime, nId);		
        g_UserGenerator.GetSkeletonCap().StartTracking(nId);
    }
    else
    {
        // Calibration failed
        printf("%d Calibration failed for user %d\n", epochTime, nId);
        if(eStatus==XN_CALIBRATION_STATUS_MANUAL_ABORT)
        {
            printf("Manual abort occured, stop attempting to calibrate!");
            return;
        }
        if (g_bNeedPose)
        {
            g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
        }
        else
        {
            g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
        }
    }
}
Ejemplo n.º 6
0
// Callback: New user was detected
void XN_CALLBACK_TYPE User_NewUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    XnUserID aUsers[MAX_NUM_USERS];
    XnUInt16 nUsers;
	g_UserGenerator.GetUsers(aUsers, nUsers);
    printf("%d New User %d\n", epochTime, nId);
    // New user found
    //validate the number of users
    XnUInt16 usersTracked=0;
    for(XnUInt16 i=0; i<nUsers; i++)
    {
    	if(g_UserGenerator.GetSkeletonCap().IsTracking(aUsers[i])==TRUE)
    		usersTracked++;
    }
    if(usersTracked >= numOfUser)
    {
    	printf("%d users are currently being tracked, no more users allowed\n",numOfUser);
    	return;
    }
    if (g_bNeedPose)
    {
        g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
    }
    else
    {
        g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
    }
}
Ejemplo n.º 7
0
void XN_CALLBACK_TYPE UserTracker::UserCalibration_CalibrationStart(xn::SkeletonCapability& capability, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	printf("%d Calibration started for user %d\n", epochTime, nId);
    
}
Ejemplo n.º 8
0
// Callback: New user was detected
void XN_CALLBACK_TYPE User_NewUser(xn::UserGenerator& /*generator*/, XnUserID nId, void* /*pCookie*/)
{
	XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	printf("%d New User %d\n", epochTime, nId);
	//}
}
Ejemplo n.º 9
0
void testusuario::poseDetected(xn::PoseDetectionCapability &capability, const XnChar *strPose, XnUserID nId, void *pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    printf("%d Pose %s detected for user %d\n", epochTime, strPose, nId);
    instance->cam->userG[0].GetPoseDetectionCap().StopPoseDetection(nId);
    instance->cam->userG[0].GetSkeletonCap().RequestCalibration(nId, TRUE);
}
 // Callback: An existing user was lost
 static void XN_CALLBACK_TYPE User_LostUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
 {
   OpenNITrackerLoopback* self = (OpenNITrackerLoopback*) pCookie;
   XnUInt32 epochTime = 0;
   xnOSGetEpochTime(&epochTime);
   printf("%d Lost user %d\n", epochTime, nId);	
   self->publishEvent ("lost", nId);
 }
Ejemplo n.º 11
0
// Callback: Detected a pose
void XN_CALLBACK_TYPE UserPose_PoseDetected(xn::PoseDetectionCapability& capability, const XnChar* strPose, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    printf("%d Pose %s detected for user %d\n", epochTime, strPose, nId);
    g_UserGenerator.GetPoseDetectionCap().StopPoseDetection(nId);
    g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
}
Ejemplo n.º 12
0
// Callback: An existing user was lost
void XN_CALLBACK_TYPE User_LostUser(xn::UserGenerator& /*generator*/, XnUserID nId, void* /*pCookie*/){

  //TODO : soit suppression de l'utilisateur de la map, soit archivage. Les poses du squelette archivées ne doivent pas être supprimées car on peut les réutiliser.
  m_skeleton.erase(nId);

  XnUInt32 epochTime = 0;
  xnOSGetEpochTime(&epochTime);
  printf("%d Lost user %d\n", epochTime, nId);	
}
Ejemplo n.º 13
0
void XN_CALLBACK_TYPE testusuario::lostUser(xn::UserGenerator &generator, XnUserID nId, void *pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    cout << "Lost user, ID = " << nId<< endl;
    if(instance->sendTuio && (instance->tds->isCreated[nId] || instance->tds->isCreatedHand[nId])){
        instance->removeUserTuio[nId]=true;
        //instance->tds->removeUserSkeleton(nId);
        //instance->tds->isCreated[nId]=false;
    }
}
Ejemplo n.º 14
0
void XN_CALLBACK_TYPE UserTracker::UserPose_PoseDetected(xn::PoseDetectionCapability& capability, const XnChar* strPose, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	//printf("%d Pose %s detected for user %d\n", epochTime, strPose, nId);
    UserGenerator *userGenerator = static_cast<xn::UserGenerator*>(pCookie);
    if(userGenerator)
    {
        userGenerator->GetPoseDetectionCap().StopPoseDetection(nId);
        userGenerator->GetSkeletonCap().RequestCalibration(nId, TRUE); 
    }
    
}
Ejemplo n.º 15
0
// Callback: New user was detected
void XN_CALLBACK_TYPE User_NewUser(xn::UserGenerator& /*generator*/, XnUserID nId, void* /*pCookie*/){
  XnUInt32 epochTime = 0;
  xnOSGetEpochTime(&epochTime);
  printf("%d New User %d\n", epochTime, nId);
  // New user found
  if (g_bNeedPose)    
    g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
  else
    g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
  
  // ICI ajout de l'utilisateur
  Skeleton s(nId);
  m_skeleton.insert(std::pair<XnUserID, Skeleton>(nId,s));
}
Ejemplo n.º 16
0
void XN_CALLBACK_TYPE UserTracker::UserCalibration_CalibrationComplete(xn::SkeletonCapability& capability, XnUserID nId, XnCalibrationStatus eStatus, void* pCookie)
{
    
    XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
    XnStatus status;
    xn::UserGenerator *userGenerator = static_cast<xn::UserGenerator*>(pCookie);
	if (eStatus == XN_CALIBRATION_STATUS_OK)
	{
		// Calibration succeeded
		printf("%d Calibration complete, start tracking user %d\n", epochTime, nId);
        if(userGenerator)
		status = userGenerator->GetSkeletonCap().StartTracking(nId);
        cout << xnGetStatusString(status);

        //setUserID(nId);
        //        if(m_UserGenerator.GetSkeletonCap().IsTracking(nId))
        //        {
        XnSkeletonJointPosition Torso;
        if(userGenerator)
        userGenerator->GetSkeletonCap().GetSkeletonJointPosition(nId, XN_SKEL_TORSO, Torso);
        printf("%d: (%f,%f,%f) [%f]\n", nId,Torso.position.X, Torso.position.Y, Torso.position.Z,Torso.fConfidence);
        //printf("this is called");
        
        addUser( nId, ci::Vec3f((Torso.position.X + APP_RES_X/2.0f) * APP_RES_X/640.0f, (-Torso.position.Y + APP_RES_Y/2.0f) * APP_RES_Y/320.0f, Torso.position.Z));
        //        }
        
	}
	else
	{
		// Calibration failed
		//printf("%d Calibration failed for user %d\n", epochTime, nId);
        if(eStatus==XN_CALIBRATION_STATUS_MANUAL_ABORT)
        {
            printf("Manual abort occured, stop attempting to calibrate!");
            return;
        }
		if (g_bNeedPose)
		{
            if(userGenerator)
			userGenerator->GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
		}
		else
		{
            if(userGenerator)
			userGenerator->GetSkeletonCap().RequestCalibration(nId, TRUE);
		}
	}
}
Ejemplo n.º 17
0
void XN_CALLBACK_TYPE testusuario::newUser(xn::UserGenerator &generator, XnUserID nId, void *pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    cout << "New user, ID = " << nId<< endl;
    // New user found
    if (instance->needPose)
    {
        generator.GetPoseDetectionCap().StartPoseDetection(instance->g_strPose, nId);
    }
    else
    {
        generator.GetSkeletonCap().RequestCalibration(nId, TRUE);
    }
}
Ejemplo n.º 18
0
// Callback: Finished calibration
void XN_CALLBACK_TYPE  SimKinect::UserCalibration_CalibrationComplete(xn::SkeletonCapability& capability, XnUserID nId, XnCalibrationStatus eStatus, void* pCookie) {
  XnUInt32 epochTime = 0;
	
  xnOSGetEpochTime(&epochTime);
  if (eStatus == XN_CALIBRATION_STATUS_OK) {
    // Calibration succeeded
    printf("%d Calibration complete, start tracking user %d\n", epochTime, nId);		
    user_generator.GetSkeletonCap().StartTracking(nId);
  }
  else {
    // Calibration failed
    printf("%d Calibration failed for user %d\n", epochTime, nId);
    user_generator.GetSkeletonCap().RequestCalibration(nId, TRUE);
  }
}
Ejemplo n.º 19
0
// Callback: New user was detected
void XN_CALLBACK_TYPE User_NewUser(xn::UserGenerator& /*generator*/, XnUserID nId, void* /*pCookie*/)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    printf("%d New User %d\n", epochTime, nId);
    // New user found
    if (g_bNeedPose)
    {
        g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
    }
    else
    {
        g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
    }
}
Ejemplo n.º 20
0
void testusuario::calibrationComplete(xn::SkeletonCapability &capability, XnUserID nId, XnCalibrationStatus eStatus, void *pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    if (eStatus == XN_CALIBRATION_STATUS_OK)
    {
        // Calibration succeeded
        cout << "Calibration Succeded for ID = " << nId<< endl;
        instance->cam->userG[0].GetSkeletonCap().StartTracking(nId);
    }
    else
    {
        // Calibration failed
        cout << "Calibration Failed for ID = " << nId<< endl;
        instance->cam->userG[0].GetSkeletonCap().RequestCalibration(nId, TRUE);
    }
}
  // Callback: New user was detected
  static void XN_CALLBACK_TYPE User_NewUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
  {
    OpenNITrackerLoopback* self = (OpenNITrackerLoopback*) pCookie;
    if(nId > 15) 
    {	
      XnStatus res = self->g_UserGenerator.GetPoseDetectionCap().StopPoseDetection(nId);
      if (res != XN_CALIBRATION_STATUS_OK)
      {	
        std::cout << "Error StopPoseDetection";
      }
      res = self->g_UserGenerator.GetSkeletonCap().AbortCalibration(nId);
      if (res != XN_CALIBRATION_STATUS_OK)
      {	
        std::cout << "Error AbortCalibration";
      }
      res = self->g_UserGenerator.GetSkeletonCap().StopTracking(nId);
      if (res != XN_CALIBRATION_STATUS_OK)
      {	
        std::cout << "Error StopTracking";
      }
      self->g_UserGenerator.GetPoseDetectionCap().Release();
      self->g_UserGenerator.GetSkeletonCap().Release();
      return;
    }
    // New user found
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    printf("%d New User %d\n", epochTime, nId);
    self->publishEvent ("new", nId);

    if (self->g_bNeedPose)
    {
      std::cerr << "starting pose deteciton: " << __FILE__ << " : " << __LINE__ << std::endl;
      self->g_UserGenerator.GetPoseDetectionCap().StartPoseDetection(self->g_strPose, nId);
      self->publishEvent ("posedetection", nId);
    }
    else
    {
      std::cerr << "request calibration: " << __FILE__ << " : " << __LINE__ << std::endl;
      self->g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);
      self->publishEvent ("calibrating", nId);
    }
  }
Ejemplo n.º 22
0
// Callback: Detected a pose
void XN_CALLBACK_TYPE UserPose_PoseDetected(xn::PoseDetectionCapability& /*capability*/, const XnChar* strPose, XnUserID nId, void* /*pCookie*/){
  //TODO : archivage du squelette, puis mise à jours du squelette.
  // Si la distance est trop éloignée, reprendre le squelette précédent (peut être faire une transition entre les deux ?)
  Skeleton new_s(nId);
  float distance = m_skeleton.find(nId)->second.distance(new_s);
  if(distance < SEUIL_DISTANCE)
    m_skeleton.find(nId)->second = new_s;
  //  else 
  // possibilité de détecter la pose courante et voir si elle n'a pas déjà été enregistrée (à un delta près), probablement il faut revoir la fonction distance du squelette
  // si on perd le personnage mais qu'on en trouve un nouveau dans une pose connue, on peu essayer de faire une transition.

  //TODO export du squelette
  XnUInt32 epochTime = 0;
  xnOSGetEpochTime(&epochTime);
  printf("%d Pose %s detected for user %d\n", epochTime, strPose, nId);
  g_UserGenerator.GetPoseDetectionCap().StopPoseDetection(nId);
  g_UserGenerator.GetSkeletonCap().RequestCalibration(nId, TRUE);

  
}
Ejemplo n.º 23
0
void XN_CALLBACK_TYPE UserTracker::User_NewUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie)
{
    XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	printf("%d New User %d\n", epochTime, nId);
    UserGenerator *userGenerator = static_cast<xn::UserGenerator*>(pCookie);

	// New user found
	if (g_bNeedPose)
	{
		userGenerator->GetPoseDetectionCap().StartPoseDetection(g_strPose, nId);
	}
	else
	{
       if(userGenerator)
		userGenerator->GetSkeletonCap().RequestCalibration(nId, TRUE);
	}
    
    
}
Ejemplo n.º 24
0
void testusuario::calibrationStart(xn::SkeletonCapability &capability, XnUserID nId, void *pCookie)
{
    XnUInt32 epochTime = 0;
    xnOSGetEpochTime(&epochTime);
    cout << "Calibration Started for ID = " << nId<< endl;
}
Ejemplo n.º 25
0
// Callback: New user was detected
void XN_CALLBACK_TYPE  SimKinect::User_NewUser(xn::UserGenerator& generator, XnUserID nId, void* pCookie) {
  XnUInt32 epochTime = 0;
  xnOSGetEpochTime(&epochTime);
  printf("%d New User %d\n", epochTime, nId);
  user_generator.GetSkeletonCap().RequestCalibration(nId, TRUE);
}
Ejemplo n.º 26
0
void XN_CALLBACK_TYPE User_ReEnter(xn::UserGenerator& /*generator*/, XnUserID user, void* /*pCookie*/)
{
	XnUInt32 epochTime = 0;
	xnOSGetEpochTime(&epochTime);
	printf("%d User %d has re-entered the scene\n", epochTime, user);
}