kharlashkin Posted August 21, 2017 Author Share 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 Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 21, 2017 Share Posted August 21, 2017 @kharlashkin, желаю удачи в этом трудном деле. Вопрос скорее всего в том, что игр с прямым управлением персонажа даже для VR нет и вряд ли в ближайшее время появятся. Разве что в какие-то игры для Kinect попробовать подключить. можно слепить на Unity. только хз как этот двиг к ардуинке подключить. @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted September 19, 2017 Author Share Posted September 19, 2017 (edited) Можно сказать на финишной прямой ;) Учитывая, что датчик в коробке находиться на столе рядом с клавой, мышей, usb-хабом и 2-мя мониторами (менее 20 см) и под столом ПК (менее 30 см) в помещении результаты думаю неплохие. И самое главное, если взять коробок и неистово начать его вертеть, а затем положить его на место - данные о положении меняются очень незначительно (в пределах пары градусов). Пока нужно ставить эксперименты и проверять - всё ли так как мне кажется сейчас ;) Прошу прощения огромная фатальная ошибка. Edited September 19, 2017 by kharlashkin 2 @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted September 20, 2017 Author Share Posted September 20, 2017 Прошу прощения огромная фатальная ошибка. Так получилось, что в скетче я перепутал переменные - таким образом мой кватернион коррекции по компасу с помощью низкочастотного фильтра просто тупо стремился к нулевому вида (1, 0, 0, 0) и умножая полученный из DMP датчика на него у меня и получался вот тот супер стабильный ;) Смутило что когда я коробок двигал - кубик вращался, но это только за счет того что фильтр не отрабатывает моментально. В общем не спал пол ночи, результатом является вот это: Особенно интересным выглядит вращение беспорядочное в конце - это я за шнурок кручу-верчу коробку с датчиком и возвращая коробок в первоначальное положение - получаю практически те же значения, что и в положении покоя. Так же видно, что есть некоторая задержка корректировки - пока не придумал что с ней делать, ну и немного трясет кубик по оси Z. @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted September 20, 2017 Author Share Posted September 20, 2017 Пока ничего лучше не смог придумать, кроме как корректировать получаемый кватернион в момент прохождения датчика горизонта... @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted September 20, 2017 Share Posted September 20, 2017 @kharlashkin, класс! @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted October 5, 2017 Author Share 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 Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted October 6, 2017 Author Share Posted October 6, 2017 Есть вопрос к сообществу, сам уже гуглил, пока думаю над правильным ответом. Учитывая как и что я собираюсь делать с несколькими датчиками, а именно если для каждого датчика вешать свой контроллер и на нём обрабатывать нужную математику, то встанет вопрос организации проводной сети с мастер и ведомыми контроллерами, смотрю пока в сторону RS-485. У кого есть какие мысли по этому поводу? Ещё один вопрос встал - мало крутить "конечностями" в пространстве, неплохо бы ещё учитывать перемещения в нём, в принципе можно получать кроме кватерниона данные об ускорении датчика из данных гироскопа и акселерометра и на базе этих векторов высчитывать новые расстояния и координаты перемещения от начальных. Опять же - совет нужен. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted October 8, 2017 Author Share Posted October 8, 2017 В 06.10.2017 в 15:55, kharlashkin сказал: вопрос организации проводной сети Чет я в смятении... Проверял передачу одного текстового сообщения вида кватернион с точностью 6 цифр после запятой. Получается при 50 fps не успевает передать на скорости 19200 бод/сек, а у меня таких датчиков в перспективе будет не менее 16-ти. Думаю разделить на 3 ветки датчики (левая, правая и центральная стороны), каждую завернуть в свой порт. Будет ли в таком случае успевать мастер-контроллер собирать данные и передавать по Bluetooth? 1 @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted October 25, 2017 Author Share Posted October 25, 2017 В 08.10.2017 в 19:34, kharlashkin сказал: Получается при 50 fps не успевает передать на скорости 19200 бод/сек Нужно просто передавать не текст, а сами данные - тот же float занимает всего 4 байта для Arduino. Почему никто не подсказал... 1 @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted April 14, 2020 Author Share Posted April 14, 2020 Два с половиной года лежал проект на полке. В этот новый год решил реанимировать, что из этого получилось - по ссылке. 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Oleg_Oldis Posted August 20, 2021 Share Posted August 20, 2021 Доброго времени суток интересно менялось ли или дорабатывалась система на протяжении года или так и оставили? @ Quote Link to comment Short link Share on other sites More sharing options...
kharlashkin Posted August 20, 2021 Author Share Posted August 20, 2021 2 минуты назад, Oleg_Oldis сказал: Доброго времени суток интересно менялось ли или дорабатывалась система на протяжении года или так и оставили? Добрый день и вам. Ну скажем так, была разработана платка где все компоненты совмещены, сделано было 40 таких платок (2 комплекта). Сильно покопал тему перемещения в пространстве, пока сильно не получается допилить из-за отсутствия большого помещения для расчетов триангуляции. Разработал похожий прототип для обновленного датчика ICM-20948, работает не хуже. Перевел передачу протокола между датчиками и точкой доступа на mqtt-sn. С одной стороны вроде толкаю его, с другой плохо толкается, так что не сильно усердствую. Как то так. 1 @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.