예제 #1
0
VectorFloat AttitudeLoop::ComputePP(Quaternion qM, VectorFloat omegaM) {
    Quaternion qErr;
    VectorFloat axisErr;

    Serial.print("Printing qRef ");
    fQRef.print();
    Serial.print("Printing qM ");
    qM.print();
    qErr = fQRef.conjugate() * qM;
    Serial.print("Printing qErr ");
    qErr.print();

    if(qErr.w < 0) axisErr = VectorFloat(qErr);
    else axisErr = -VectorFloat(qErr);

    Serial.print("Printing axisErr ");
    axisErr.print();
    Serial.print("Printing omegaM ");
    omegaM.print();
    Serial.print("Printing torque without I ");
    (axisErr*fPQ - omegaM*fPOmega).print();
    fTorque = fI * (axisErr*fPQ - omegaM*fPOmega);
    Serial.print("Printing fTorque ");
    fTorque.print();


    return fTorque;
}
예제 #2
0
void Calibrator::newPoint(int motor, float p, VectorFloat omega, VectorFloat alpha, VectorFloat acceleration, Quaternion q) {
	cout << p;
	omega.print();
	alpha.print();
	acceleration.print();
	q.print();
	fP[motor].push_back(p);
	fOmega[motor].push_back(omega);
	fAlpha[motor].push_back(alpha);
	fA[motor].push_back(acceleration);
	fQ[motor].push_back(q);
}