Как стать автором
Обновить
57
0
Александр Клёнов @1div0

Пользователь

Отправить сообщение
Хорошо. Представьте, что коптер неподвижно лежит ровно по уровню на земле, а его датчик показывает ускорение, направленное на юго-восток, величиной = 3g.

Вопрос: что вы, как разработчик коптера, планируете делать с показаниями датчика?
Боюсь Вы не уловили суть. Пожалуйста, обратите особое внимание на текст статьи, начиная со слов «Например, мы знаем, что если акселерометр поставить в уровень с горизонтом...»
Даже не сокращённая, это она и есть ))
MARG — это не фильтр. Это аббревиатура, означающая реализацию ИНС с магнитометром. Приведённый вами документ — это сокращённая версия отчёта, перевод которой находится перед вами — это данная статья.
Напишите пожалуйста статью об используемом фильтре. Или, если хорошо разбираетесь — о фильтре Махони.
Хорошо. А то я сижу перечитываю раз десятый ).
Вы правы. В рамках данной статьи длина кватерниона не меняется и в принципе можно без нормализации.
Если интересно — вот Excel-файл с макросами на котором я тренировался: файл.
Спасибо за замечание. Не хотел загромождать статью теоретическими деталями.

Про то, что одно и то же вращение можно описать двумя кватернионами, вроде бы и так понятно.
Например давайте опишем движение стрелки часов, если ось стрелки совпадает с осью X.

В первом кватернионе вектор оси будет направлен от лицевой стороны циферблата (w = 0,7071; x = 0,7071; y = 0; z = 0), а разворот будет осуществляться по часовой стрелке. Во втором кватернионе вектор оси и направление поворота осуществляются в обратную сторону.

Про наборы углов Эйлера и складывание рамок — это скорее для статьи про углы Эйлера-Крылова. Про наборы углов может быть интересной деталью — приведите пожалуйста пример. Если я правильно понимаю, речь о том. что например, только тангаж 90 равен курс 180, тангаж 90, крен 180.
Спасибо. Действительно статья о кватернионах не предполагает освещение вопроса о складывании рамок.

Должен спросить — что Вы понимаете под Cx и Cy?
Обратный кватернион предполагает только обратный разворот без масштабирования, поэтому нормализуется.

То есть если все компоненты кватерниона умножить на число, например на 3, то после поворота вектора таким кватернионом, длина вектора увеличится в 3 раза.

Давайте рассмотрим прикладную сторону вопроса и посмотрим на исходники от NVIDIA. Вот эта функция только отражает кватернион:

inline Quaternion conjugate(Quaternion::Arg q)
{
	return scale(q, Vector4(-1, -1, -1, 1));
}


А эта функция отражает и нормализует:
inline Quaternion inverse(Quaternion::Arg q)
{
	return conjugate(normalize(q));
}


Где функция нормализации выглядит так:
inline Quaternion normalize(Quaternion::Arg q, float epsilon = NV_EPSILON)
{
	float l = length(q);
	nvDebugCheck(!isZero(l, epsilon));
	Quaternion n = scale(q, 1.0f / l);
	nvDebugCheck(isNormalized(n));
	return n;
}
12 ...
9

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Зарегистрирован
Активность