Example #1
0
void RTIMU::calibrateAccel()
{
    if ((getAccelCalibrationValid()==false) && (m_accelCalibrationMode==false) )
        return;
	
    // printf("%s", RTMath::displayRadians("Accel 1)", m_imuData.accel));

    if (m_imuData.accel.x() >= 0)
        m_imuData.accel.setX(m_imuData.accel.x() / m_settings->m_accelCalMax.x());
    else
        m_imuData.accel.setX(m_imuData.accel.x() / -m_settings->m_accelCalMin.x());

    if (m_imuData.accel.y() >= 0)
        m_imuData.accel.setY(m_imuData.accel.y() / m_settings->m_accelCalMax.y());
    else
        m_imuData.accel.setY(m_imuData.accel.y() / -m_settings->m_accelCalMin.y());

    if (m_imuData.accel.z() >= 0)
        m_imuData.accel.setZ(m_imuData.accel.z() / m_settings->m_accelCalMax.z());
    else
        m_imuData.accel.setZ(m_imuData.accel.z() / -m_settings->m_accelCalMin.z());

    // printf("%s", RTMath::displayRadians("Accel 2)", m_imuData.accel));

    if (m_settings->m_accelCalEllipsoidValid) {
        RTVector3 ev = m_imuData.accel;
        ev -= m_settings->m_accelCalEllipsoidOffset;

        m_imuData.accel.setX(ev.x() * m_settings->m_accelCalEllipsoidCorr[0][0] +
            ev.y() * m_settings->m_accelCalEllipsoidCorr[0][1] +
            ev.z() * m_settings->m_accelCalEllipsoidCorr[0][2]);

        m_imuData.accel.setY(ev.x() * m_settings->m_accelCalEllipsoidCorr[1][0] +
            ev.y() * m_settings->m_accelCalEllipsoidCorr[1][1] +
            ev.z() * m_settings->m_accelCalEllipsoidCorr[1][2]);

        m_imuData.accel.setZ(ev.x() * m_settings->m_accelCalEllipsoidCorr[2][0] +
            ev.y() * m_settings->m_accelCalEllipsoidCorr[2][1] +
            ev.z() * m_settings->m_accelCalEllipsoidCorr[2][2]);
    }

    // printf("%s", RTMath::displayRadians("Accel 3)", m_imuData.accel));

}
void RTIMU::calibrateAccel()
{
    if (!getAccelCalibrationValid())
        return;

    if (m_imuData.accel.x() >= 0)
        m_imuData.accel.setX(m_imuData.accel.x() / m_settings->m_accelCalMax.x());
    else
        m_imuData.accel.setX(m_imuData.accel.x() / -m_settings->m_accelCalMin.x());

    if (m_imuData.accel.y() >= 0)
        m_imuData.accel.setY(m_imuData.accel.y() / m_settings->m_accelCalMax.y());
    else
        m_imuData.accel.setY(m_imuData.accel.y() / -m_settings->m_accelCalMin.y());

    if (m_imuData.accel.z() >= 0)
        m_imuData.accel.setZ(m_imuData.accel.z() / m_settings->m_accelCalMax.z());
    else
        m_imuData.accel.setZ(m_imuData.accel.z() / -m_settings->m_accelCalMin.z());
}