kharlashkin 239 #401274 Posted August 21, 2017 еще бы физ. движок подключить с мультиплАером, классно бы было. Вопрос скорее всего в том, что игр с прямым управлением персонажа даже для VR нет и вряд ли в ближайшее время появятся. Разве что в какие-то игры для Kinect попробовать подключить. Тут выявилось несколько других проблем. После подключение магнитометра непосредственно в вычисления DMP - точность кватерниона повысилась, но дрифт по оси Z никуда не делся. После активных вращений и возвращение датчика в первоначальное положение, кватернионы уже не будут как первоначальные. Хотя примерно после 10 секунд после активации, данные стабилизируются и в неподвижном положении очень точны. Этот же датчик с таким же кодом но без подключенного в DMP магнитометра имеет постоянный дрифт. Конфигурация DMP сразу имеет в своем арсенале матрицу корректировки данных от магнитометра, никак не могу пока понять каким образом этот "некий функционал" работает - документации маловато. 0x02, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_00 inv_set_compass_calibration 0x02, 0x44, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_01 0x02, 0x48, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_02 0x02, 0x4C, 0x04, 0x40, 0x00, 0x00, 0x00, // CPASS_MTX_10 0x02, 0x50, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_11 0x02, 0x54, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_12 0x02, 0x58, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_20 0x02, 0x5C, 0x04, 0x00, 0x00, 0x00, 0x00, // CPASS_MTX_21 0x02, 0xBC, 0x04, 0xC0, 0x00, 0x00, 0x00, // CPASS_MTX_22 Моя реализация корректировки по компасу пока не до конца продуманна - я пробую получать из кватерниона вычисленного в DMP вектор гравитации, затем получаю вектор нормали к плоскости образованной векторами компаса и гравитации, потом вычисляю из того- же кватерниона вектор, который должен быть коллинеарным вектору нормали, вычисляю угол между ними и доворачиваю объект. 1 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,147 #401281 Posted August 21, 2017 @kharlashkin, желаю удачи в этом трудном деле. Вопрос скорее всего в том, что игр с прямым управлением персонажа даже для VR нет и вряд ли в ближайшее время появятся. Разве что в какие-то игры для Kinect попробовать подключить. можно слепить на Unity. только хз как этот двиг к ардуинке подключить. Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #404548 Posted September 19, 2017 (edited) Можно сказать на финишной прямой ;) Учитывая, что датчик в коробке находиться на столе рядом с клавой, мышей, usb-хабом и 2-мя мониторами (менее 20 см) и под столом ПК (менее 30 см) в помещении результаты думаю неплохие. И самое главное, если взять коробок и неистово начать его вертеть, а затем положить его на место - данные о положении меняются очень незначительно (в пределах пары градусов). Пока нужно ставить эксперименты и проверять - всё ли так как мне кажется сейчас ;) Прошу прощения огромная фатальная ошибка. Edited September 19, 2017 by kharlashkin 2 Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #404593 Posted September 20, 2017 Прошу прощения огромная фатальная ошибка. Так получилось, что в скетче я перепутал переменные - таким образом мой кватернион коррекции по компасу с помощью низкочастотного фильтра просто тупо стремился к нулевому вида (1, 0, 0, 0) и умножая полученный из DMP датчика на него у меня и получался вот тот супер стабильный ;) Смутило что когда я коробок двигал - кубик вращался, но это только за счет того что фильтр не отрабатывает моментально. В общем не спал пол ночи, результатом является вот это: Особенно интересным выглядит вращение беспорядочное в конце - это я за шнурок кручу-верчу коробку с датчиком и возвращая коробок в первоначальное положение - получаю практически те же значения, что и в положении покоя. Так же видно, что есть некоторая задержка корректировки - пока не придумал что с ней делать, ну и немного трясет кубик по оси Z. Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #404643 Posted September 20, 2017 Пока ничего лучше не смог придумать, кроме как корректировать получаемый кватернион в момент прохождения датчика горизонта... Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,147 #404646 Posted September 20, 2017 @kharlashkin, класс! Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #406166 Posted October 5, 2017 Долго возился с привязкой получаемого кватерниона с "костью" головы в Blender - как-то все запутанно там. Кость имеет свои координаты, получаемые командой: bpy.data.armatures['Armature'].bones['head'].matrix.to_quaternion() # Blender Render Но новые координаты задаются не от глобального кватерниона, а от нулевого видом (1.0, 0.0 , 0.0, 0.0). Ничего лучше не придумал (пока), при обновлении положения кости, сначала кватернион, обратный реальной позиции умножить на нужный поворот, затем умножить на реальный, к тому же направление осей датчика должно совпадать с направлением осей кости. В принципе, эту математику можно "зашить" напрямую в ардуинку (ресурсов то предостаточно пока), но тогда получиться прямая привязка расположения датчиков и существующего скелета, или переложить расчеты на Blender. Но можно столкнуться с нехваткой ресурсов при записи положений от множества датчиков. В общем, идет работа помаленьку. 1 Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #406330 Posted October 6, 2017 Есть вопрос к сообществу, сам уже гуглил, пока думаю над правильным ответом. Учитывая как и что я собираюсь делать с несколькими датчиками, а именно если для каждого датчика вешать свой контроллер и на нём обрабатывать нужную математику, то встанет вопрос организации проводной сети с мастер и ведомыми контроллерами, смотрю пока в сторону RS-485. У кого есть какие мысли по этому поводу? Ещё один вопрос встал - мало крутить "конечностями" в пространстве, неплохо бы ещё учитывать перемещения в нём, в принципе можно получать кроме кватерниона данные об ускорении датчика из данных гироскопа и акселерометра и на базе этих векторов высчитывать новые расстояния и координаты перемещения от начальных. Опять же - совет нужен. 2 Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #406521 Posted October 8, 2017 В 06.10.2017 в 15:55, kharlashkin сказал: вопрос организации проводной сети Чет я в смятении... Проверял передачу одного текстового сообщения вида кватернион с точностью 6 цифр после запятой. Получается при 50 fps не успевает передать на скорости 19200 бод/сек, а у меня таких датчиков в перспективе будет не менее 16-ти. Думаю разделить на 3 ветки датчики (левая, правая и центральная стороны), каждую завернуть в свой порт. Будет ли в таком случае успевать мастер-контроллер собирать данные и передавать по Bluetooth? 1 Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #408834 Posted October 25, 2017 В 08.10.2017 в 19:34, kharlashkin сказал: Получается при 50 fps не успевает передать на скорости 19200 бод/сек Нужно просто передавать не текст, а сами данные - тот же float занимает всего 4 байта для Arduino. Почему никто не подсказал... 1 Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #480796 Posted April 14, 2020 Два с половиной года лежал проект на полке. В этот новый год решил реанимировать, что из этого получилось - по ссылке. 2 Quote Share this post Link to post Short link Share on other sites
Oleg_Oldis 0 #507407 Posted August 20, 2021 Доброго времени суток интересно менялось ли или дорабатывалась система на протяжении года или так и оставили? Quote Share this post Link to post Short link Share on other sites
kharlashkin 239 #507409 Posted August 20, 2021 2 минуты назад, Oleg_Oldis сказал: Доброго времени суток интересно менялось ли или дорабатывалась система на протяжении года или так и оставили? Добрый день и вам. Ну скажем так, была разработана платка где все компоненты совмещены, сделано было 40 таких платок (2 комплекта). Сильно покопал тему перемещения в пространстве, пока сильно не получается допилить из-за отсутствия большого помещения для расчетов триангуляции. Разработал похожий прототип для обновленного датчика ICM-20948, работает не хуже. Перевел передачу протокола между датчиками и точкой доступа на mqtt-sn. С одной стороны вроде толкаю его, с другой плохо толкается, так что не сильно усердствую. Как то так. 1 Quote Share this post Link to post Short link Share on other sites