Example #1
0
double PID::Compute()
{
	timeChange = millis() - lastTime;

	if (fixedSampleRate == true && timeChange < sampleTime)
	{
		// Don't update the PID loop
		return *Output;
	} //Else, uses the time since last update to calculate PID


	updateOldData();

	error = calculateError();

	PTerm = *kp*(error);
	DTerm = *kd*(error - lastError) / timeChange;
	ITerm += *ki*(error)*timeChange;

	StandardCalc::boundValueBetween(&ITerm, outMin, outMax);

	*Output = -(PTerm + ITerm + DTerm);



	// Output is useful for testing
	return *Output;
}
Example #2
0
void NaoIK::calIK(){
    if(verbo > 8)
        std::cout << "[NaoIK::calIK] Compute the inverse kinematics "<< std::endl;

    updateOldData();
    UpdateDesiredMarkers();
    updateIKInfo();
    upperbodyIK();
    lowerbodyIK();
    ZMPBalancer();
    wholeIK();
    calIK_PSEUDO();
}