Стабилизация на MPU6050
- Войдите на сайт для отправки комментариев
Добрый день.
Пытаюсь застабилизировать камеру при помощи ардуино, mpu6050 и двух сервоприводов.
В сети есть примеры, где датчик лежит на "статичной" платформе и его yaw/pitch/roll просто передаются на соответствующие сервы и, вроде бы, всё просто. В моём случае, по определенным причинам, очень бы хотелось датчик разместить там же, где и камера. Правда в этом случае получается, что данные с датчика двигают сервами, которые в свою очередь двигают сам датчик и далее по кругу.
По идее, это возможно, т.к. у нас всегда есть "правильный" вектор гравитации. Можно "запомнить" его значения в положении, в котором мы хотим застабилизироваться и потом при получении данных от сервы просто стремиться вернуть систему в изначальное положение. По идее, надо только разобраться с кватернионами, но что-то никак не могу сообразить =(
Хотелось бы услышать мнение разбирающихся в этом людей. Спасибо.
Собственно, тоже интересно услышать ответ на эту тему, т.к. я и сам сейчас пытаюсь разобраться с этим датчиком, буду его использовать для определения пространственного положения самолета (как прибор - авиагоризонт), и, также, для стабилизации камеры (приведения к горизонту).
Могу сказать, что просто использовать акселерометр не получится, т.к. если ваш объект с камерой будет двигаться, то вектор сил в определенные моменты ускорения и замедления будет сдвигаться, а это значит, что положение камеры нужно считать по данным от гироскопа, а акселерометр использовать как "поправку". Еще скорее всего придется применить фильтрацию, т.к. поступающие данные от гироскопа и акселерометра зашумлены и имеют некоторую ошибку... Но если вы все это применили, то мне на самом деле нечему вас учить)
Еще скорее всего придется применить фильтрацию, т.к. поступающие данные от гироскопа и акселерометра зашумлены и имеют некоторую ошибку... Но если вы все это применили, то мне на самом деле нечему вас учить)
я в этом деле начинающий, так что учиться еще много чему надо =)
Но для начала хотелось получить хотя бы приблизительно похожую картинку, а потом уже "развлекаться" с поправками и фильтрами
На самом деле, я тоже начинающий)
Но могу сказать, что для простенькой стабилизации вполне можно просчитать угол с помощью арктангенса или арккотангенса (в зависимости от расположения датчика), а потом скормить его сервоприводам... Т.е. ваш датчик показал какие-то три значения, вы находите сначала угол крена, затем просчитываете длину этого вектора и находите угол тангажа при помощи просчитанного вектора и оставшегося третьего... Это если использовать только акселерометр, вроде бы так. И на него будут влиять любые ускорения или замедления системы, т.е. камера будет сдвигаться вверх/вниз, или влево/вправо, и поэтому нужно использовать гироскоп. К тому же, без гироскопа не удастся корректировать направление подвеса (курс, вроде так).
Вроде в нете есть несколько статей об этом датчике, в некоторых есть даже скетчи-примеры, а если поискать, то наверняка можно найти какую-то библиотеку, которая сама все считывает, фильтрует и корректирует значения, и возвращает просчитанные углы положения в пространстве.
Кстати, мне кажется, что расположение датчика на самой камере несколько усложняет задачу, как по мне, куда проще было бы вынести его куда-нибудь в другое место, т.к. стабилизированному положению камеры для датчика, находящегося в подвижной системе координат (например, квадрокоптер), будет соостветствовать ЛИШЬ ОДНО значение углов сервоприводов, а для датчика, находящегося в подвижной системе координат, которая зависит от еще одной подвижной системы координат (т.е. подвес для камеры на квадрокоптере), будет таких углов очень много... дело конечно ваше, но я бы использовал первый вариант, т.к. он просчитает положение объекта в пространстве, и с этими углами можно будет еще и корректировать камеру.
Кстати, мне кажется, что расположение датчика на самой камере несколько усложняет задачу, как по мне, куда проще было бы вынести его куда-нибудь в другое место, т.к. стабилизированному положению камеры для датчика, находящегося в подвижной системе координат (например, квадрокоптер), будет соостветствовать ЛИШЬ ОДНО значение углов сервоприводов, а для датчика, находящегося в подвижной системе координат, которая зависит от еще одной подвижной системы координат (т.е. подвес для камеры на квадрокоптере), будет таких углов очень много...
Тут Вы, конечно, правы. Не просто так, в инете полно примеров с вариантом 1, и я не нашел ниодного с вариантом 2 =(
Просто в моём случае, решение по варианту 1 выливается в еще один датчик.
Вот и думаю, что будет проще. Решить проблему программным или аппаратным способом =)