Управляем чем угодно откуда угодно

Управлялка на QT

Обсуждение клиентского ПО для доступа к виртурилке, управления и мониторинга

Re: Управлялка на QT

Сообщение phoenix367 » 28 апр 2014, 01:04

QuaternionProd - выполняет векторное (внешнее) произведение двух кватернионов.
QuaternionConj - возвращает кватернион, сопряженный исходному.

Код
Код: Выделить всё
processedData.rawGyroX = gyroX * M_PI / 180;
    processedData.rawGyroY = gyroY * M_PI / 180;
    processedData.rawGyroZ = gyroZ * M_PI / 180;

преобразует сырые данные от гироскопа из градусов в радианы.

После того, как число циклов калибровки достигло заданного значения, записываем поправочные значения в AHRS processor. По остальным аспектам калибровки и компенсации шумов я написал в предыдущем комментарии.

Код: Выделить всё
        if (loopCount == calibrationDelay)
        {
            calibration = false;
           
            gyroState.offsetX /= calibrationDelay;
            gyroState.offsetY /= calibrationDelay;
            gyroState.offsetZ /= calibrationDelay;
           
            ahrsProcessor.setGyroOffsets(gyroState.offsetX, gyroState.offsetY,
                    gyroState.offsetZ);
            ahrsProcessor.setOffsetQuaternion(offsetQ);
            showCalibration(false);
        }
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Управлялка на QT

Сообщение sanya555 » 28 апр 2014, 10:35

Спасибо за ответ.
И хотел бы еще спросить не стыкались ли вы с проблемой использования потоков? Я на винде настроил Eclipse под CodeSourcery, проект для считки данных с датчиков собрался нормально, как только я захотел запихнуть все это в отдельный поток начались проблемы. Я увидел что вы в своем проекте тоже использовали класс <thread>. В общем я подключаю класс thread, использую пространство std, а сам экземпляр создать не получается. в самом классе все методы закрыты после строки
Код: Выделить всё
#ifndef __GXX_EXPERIMENTAL_CXX0X__
# include <bits/c++0x_warning.h>
#else
......

Быть может вы стыкались с таким?
И еще вопрос, у вас не было глюков со считыванием данных с датчиков, а то бывает что все работает и внезапно перестает отвечать?
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Управлялка на QT

Сообщение phoenix367 » 28 апр 2014, 12:40

С потоками никаких проблем не было. Все работает из коробки, правда я не под винду разрабатываю. Возможно вы не включили флаг для поддержки c++11. С датчиками да, проблема. Предположительно они отваливаются из-за помех на линии связи и большой длины соединительных проводов. Соответственно можнго попробовать уменьшить длину соединений до минимума.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Управлялка на QT

Сообщение sanya555 » 28 апр 2014, 16:46

Поставил флаг, скомпилилось, но выдает ошибку

Код: Выделить всё
terminate after throwing an instance of "std::system_error"
what(): Operation not permitted

Такого у вас не было?
UPD:
Запустил потоки, решил это добавлением в строку линкования -pthread.
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Управлялка на QT

Сообщение sanya555 » 29 апр 2014, 11:27

Все таки на netbeans не получается скомпилить правильно, не могли вы показать свое окно свойств проэкта, меня интересует вкладка компилятор с++>> дополнительные параметры
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Управлялка на QT

Сообщение phoenix367 » 30 апр 2014, 23:31

Ниже приведены скриншоты настроек
Изображение
Изображение
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Управлялка на QT

Сообщение sanya555 » 01 май 2014, 12:11

Спасибо!! Все заработало.
И вот еще вопрос возник
Код: Выделить всё
float AHRSProcessor::filterGyroValue(float rawGyroValue, float& offset)
{
    float gyroAngle = (rawGyroValue - offset) / GYROSCOPE_SENSITIVITY;
   
    if (fabs(gyroAngle) < gyroThreshold && gyroAngle != 0.0f)
    {
        offset = 0.9f * offset + 0.1f * rawGyroValue;
        gyroAngle = 0.0f;
    }
   
    return gyroAngle;
}


Что это за значения 0,9f, 0.1f?
И еще один вопрос - параметр softIronMatrix используется только если есть магнитометр?
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Управлялка на QT

Сообщение phoenix367 » 01 май 2014, 15:36

softIronMatrix используется только когда включен магнитометр. В остальных случаях он игнорируется
значения 0,9f, 0.1f определяют степень влияния шума гироскопа на величину смещения. Выбраны они были от балды, но с тем расчетом, чтобы случайные флуктуации оказывали слабое воздействие на смещение.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Re: Управлялка на QT

Сообщение sanya555 » 05 май 2014, 17:07

Спасибо, написал, собрал проект, но почему то датчики все время слетают. По одному перебробывал, выяснилось что проблема с датчиком ITG3200, он у меня даже минуту не держится, но в чем дело понять никак не могу, питал и от 5В и от 3,3В, длинна шнурка 20 см, вы говорили что у вас была такая проблема, как вы ее решили?
sanya555
 
Сообщения: 74
Зарегистрирован: 10 фев 2014, 13:20

Re: Управлялка на QT

Сообщение phoenix367 » 05 май 2014, 23:16

Ну до конца она не решена. В качестве воркэраунда сейчас используется мультиплексор I2C SCL сигнала на К155ЛИ5 для возможности работы с датчиками и энергонезависимыми часами на DS1307. Побочным эффектом применения мультиплексора является усиления сигнала SCL, и, как следствие, улучшение стабильности процесса чтения данных с датчиков. Правда иногда сбои все равно происходят - видимо потому, что сигнал SDA не усиливается, а уровень подтяжки к 1 недостаточен.

Возможно проблема решится с помощью платы, которую я сейчас проектирую. Она доступна в репозитории проекта в формате diptrace, но я ее еще не травил и работоспособность не проверял. Кроме того, там в схеме много вещей, заточенных под конкретную конфигурацию оборудования.
phoenix367
 
Сообщения: 193
Зарегистрирован: 09 сен 2013, 00:19

Пред.След.

Вернуться в Софт на управляющих устройствах (iOS, Android, Win/Mac/Linux)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron