August 27th, 2021

QuatCore

Аффинный алгоритм+инф обмен, УСПЕХ

Когда первый раз увидел "целевую информацию", очень удивился значениям 0x0002, 0x0002, 0x0001, 0x01B7, 0x002A и 0xFE7E на месте ковариационной матрицы шума измерений. Ну, я знал, что ковариационной матрицы там пока нет, это пространство используется для "промежуточных вычислений", но мне казалось, там должна была лежать матрица аффинного преобразования, выражающая, как из координат мишеней "в метрах" получить их же координаты "в пикселях", чтобы они максимально соответствовали тому, что мы "увидели" на текущем кадре. Последние 4 значения соответствовали, а вот первые две "двойки" - бред какой-то...

Наконец, перечитав свои старые посты, разобрался, в чём же тут дело!
[Spoiler (click to open)]
Оказывается, первые два значения я "затираю" в процедуре нахождения масштаба. Раньше чебышевскую и манхэттенскую метрики я укладывал на стек ([SP] и [SP+1]), но решил [SP+1] не трогать, т.к там лежит "количество точек", которое ещё понадобится чуть позже.

Да, двоечка и там, и там - похожи на правду.


Вроде бы всё поправил - и нормировку, и "часы реального времени", прошиваю повторно - и опять чего-то не то...


Мне аж показалось, прибор меня материт как может! Там, где должны быть результаты (вектор и кватернион) - сплошные нули, и какие-то совершенно непонятные "промежуточные данные"...
Collapse )


Другое дело, никакой ругани, смайлики сплошные :)

Первый раз запросили целевую информацию - получили фактически нули. Затем послали "Синхронизация (с СД)" с нулевой отметкой времени и снова запросили целевую информацию. И затем ещё раз, только в этот раз слово данных 00 50, означающее, что прошло 80 раз по 100 мс. Смотрим ответы в двух последних случаях.

00 30, точнее 30 00 (вечно Endian мешается) - ответное слово, "всё в порядке".
3C 3C - заголовок массива "целевая информация".
01 00, точнее 00 01 - слово признаков (флагов), пока только один "зажжён", режим захвата.
Ещё раз 01 00, т.е 00 01 - метка времени, когда данные были обработаны. Да, на обработку ушло более 195 мкс, но меньше 390 мкс, всё правильно. Во второй раз 01 A0, т.е A0 01 - да, это взяли 7-битное значение 0x50, сделали эти 7 бит старшими (вышло 0xA000) и прибавили единичку, которая ушла на обработку. Всё верно.

00 00 - скорость сближения, её пока не считали
09 00, то есть 00 09 - общая экспонента для вектора. Означает дальность между 29-1 = 256 метров и 29 = 512 метров.
91 95, т.е 0x9591 = 38289 - мантисса для координаты X. В целом, дальность составляет 38289/32768 * 256 = 299,13 метров.
31 00, т.е 0x0031 = 49 - мантисса для координаты Y. В кои-то веки совпало с предыдущим разом. По-моему, тут я в 4 раза завысил величину, а должен получаться 9,5 сантиметра сдвиг вправо (корабль стоит совершенно строго на нормали к стыковочному узлу, в 300 метрах от станции, но прибор смещён на 9,6 сантиметра влево). Да, 49/32768 * 256 м / 4 = 9,6 см.

3d fe, т.е 0xFE3D = -451 - мантисса для координаты Z. Также в точности совпало с предыдущим разом. Это должно означать -451 / 32768 * 256 м / 4 = -0,88 м. Да, потому что мы стоим на 88 см ВЫШЕ стыковочного узла.

ff 7f, т.е 0x7FFF = 32767 - скалярная часть кватерниона, фактически единица.
А остальные компоненты нулевые. Всё верно.

Фуух, заработало...

Теперь хочу ещё реализовать atan(y/x) и с его помощью выдачу результатов в виде углов, а там пора и к обнаружению точек на изображении вернуться, я же это безобразие так и не отладил до конца!
I like trains

Ещё котики и поезда

Первый раз встретил котика в Лосином острове, до этого встречал лишь гиену и павиана лосей и пятнистых оленей.

Но этот прям дикий - только на 5х позволил себя запечатлеть, пытался подойти поближе - он убегал!
IMG20210826150203.jpg
А по расцветке прям как консьерж из Энергии!


Двухэтажный Штадлер на МЦК, в "ласточкином гнезде" в Андроновке, редкий зверь:
IMG20210827161214.jpg

Под катом четыре секции "Машки" подряд и ещё немного Штадлера и котика

Collapse )