// 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); } } }
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); }
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"; }
// 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); }
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); } } }
// 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); } }
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); }
// 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); //} }
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); }
// 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); }
// 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); }
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; } }
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); } }
// 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)); }
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); } } }
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); } }
// 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); } }
// 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); } }
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); } }
// 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); }
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); } }
void testusuario::calibrationStart(xn::SkeletonCapability &capability, XnUserID nId, void *pCookie) { XnUInt32 epochTime = 0; xnOSGetEpochTime(&epochTime); cout << "Calibration Started for ID = " << nId<< endl; }
// 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); }
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); }