コード例 #1
0
ファイル: logger.cpp プロジェクト: tjr1/proprio
bool Logger::logVariables_sparsely(double ts, int a, bool b, int c, int d, cVector3d e, cVector3d f, cVector3d g)
{
	if (GLOBAL_FLAG_INITIALIZED == true)
	{
		// Get Time Stamp
		double new_time_stamp = this->getTimeStamp();

		// Check if data is redundant
		bool same_data = true;

		if (log_STATE_MACHINE.size() > 0)
		{
			same_data = same_data && (a == log_STATE_MACHINE.back());		//STATE_MACHINE
			same_data = same_data && (b == log_reward_delievered.back());	//GLOBAL_FLAG_ardin_delieverReward
			same_data = same_data && (c == log_cap_sen_sipper.back());		//ardout_capSen_sipperTube
			same_data = same_data && (d == log_cap_sen_handle.back());		//ardout_capSen_handleOutside
			same_data = same_data && e.equals(log_position.back());			//cur_position
			same_data = same_data && f.equals(log_linearVelocity.back());	//cur_linearVelocity
			same_data = same_data && g.equals(log_force.back());			//cur_force
		}
		else
			same_data = false;
		
		if (same_data == true)
			same_data_time_stamp.push_back(new_time_stamp);

		// Data is the same & vector isn't null & time has elapsed longer than limit
		if ( (same_data == true) && \
			 (same_data_time_stamp.size() > 0) && \
			 (new_time_stamp - same_data_time_stamp.front() > SAME_DATA_DISCARD_TIME_LIMIT) )
		{
			// discard information
			return false;
		}
		else
		{
			if ( (same_data_time_stamp.size() > 0) && \
				 (new_time_stamp - same_data_time_stamp.front() > SAME_DATA_DISCARD_TIME_LIMIT) )
			{
				this->logVariables(same_data_time_stamp.back(), \
								   log_STATE_MACHINE.back(), \
								   log_reward_delievered.back(), \
								   log_cap_sen_sipper.back(), \
								   log_cap_sen_handle.back(), \
								   log_position.back(), \
								   log_linearVelocity.back(), \
								   log_force.back());	
				same_data_time_stamp.clear();
			}
			this->logVariables(new_time_stamp, a, b, c, d, e, f, g);

			if (same_data == false)
				same_data_time_stamp.clear();

			// successful logging
			return true;
		}	

		
	}
	
	return true;
}