Стабилизация на MPU6050

blacksoul
Offline
Зарегистрирован: 01.03.2016

Добрый день.

Пытаюсь застабилизировать камеру при помощи ардуино, mpu6050 и двух сервоприводов.

В сети есть примеры, где датчик лежит на "статичной" платформе и его yaw/pitch/roll просто передаются на соответствующие сервы и, вроде бы, всё просто. В моём случае, по определенным причинам, очень бы хотелось датчик разместить там же, где и камера. Правда в этом случае получается, что данные с датчика двигают сервами, которые в свою очередь двигают сам датчик и далее по кругу.

По идее, это возможно, т.к. у нас всегда есть "правильный" вектор гравитации. Можно "запомнить" его значения в положении, в котором мы хотим застабилизироваться и потом при получении данных от сервы просто стремиться вернуть систему в изначальное положение. По идее, надо только разобраться с кватернионами, но что-то никак не могу сообразить =(

Хотелось бы услышать мнение разбирающихся в этом людей. Спасибо.

 

Famouspilot
Famouspilot аватар
Offline
Зарегистрирован: 19.01.2016

Собственно, тоже интересно услышать ответ на эту тему, т.к. я и сам сейчас пытаюсь разобраться с этим датчиком, буду его использовать для определения пространственного положения самолета (как прибор - авиагоризонт), и, также, для стабилизации камеры (приведения к горизонту). 

Могу сказать, что просто использовать акселерометр не получится, т.к. если ваш объект с камерой будет двигаться, то вектор сил в определенные моменты ускорения и замедления будет сдвигаться, а это значит, что положение камеры нужно считать по данным от гироскопа, а акселерометр использовать как "поправку". Еще скорее всего придется применить фильтрацию, т.к. поступающие данные от гироскопа и акселерометра зашумлены и имеют некоторую ошибку... Но если вы все это применили, то мне на самом деле нечему вас учить)

blacksoul
Offline
Зарегистрирован: 01.03.2016

Famouspilot пишет:

Еще скорее всего придется применить фильтрацию, т.к. поступающие данные от гироскопа и акселерометра зашумлены и имеют некоторую ошибку... Но если вы все это применили, то мне на самом деле нечему вас учить)

я в этом деле начинающий, так что учиться еще много чему надо =)

Но для начала хотелось получить хотя бы приблизительно похожую картинку, а потом уже "развлекаться" с поправками и фильтрами

Famouspilot
Famouspilot аватар
Offline
Зарегистрирован: 19.01.2016

На самом деле, я тоже начинающий)

Но могу сказать, что для простенькой стабилизации вполне можно просчитать угол с помощью арктангенса или арккотангенса (в зависимости от расположения датчика), а потом скормить его сервоприводам... Т.е. ваш датчик показал какие-то три значения, вы находите сначала угол крена, затем просчитываете длину этого вектора и находите угол тангажа при помощи просчитанного вектора и оставшегося третьего... Это если использовать только акселерометр, вроде бы так. И на него будут влиять любые ускорения или замедления системы, т.е. камера будет сдвигаться вверх/вниз, или влево/вправо, и поэтому нужно использовать гироскоп. К тому же, без гироскопа не удастся корректировать направление подвеса (курс, вроде так).

Вроде в нете есть несколько статей об этом датчике, в некоторых есть даже скетчи-примеры, а если поискать, то наверняка можно найти какую-то библиотеку, которая сама все считывает, фильтрует и корректирует значения, и возвращает просчитанные углы положения в пространстве.

Кстати, мне кажется, что расположение датчика на самой камере несколько усложняет задачу, как по мне, куда проще было бы вынести его куда-нибудь в другое место, т.к. стабилизированному положению камеры для датчика, находящегося в подвижной системе координат (например, квадрокоптер), будет соостветствовать ЛИШЬ ОДНО значение углов сервоприводов, а для датчика, находящегося в подвижной системе координат, которая зависит от еще одной подвижной системы координат (т.е. подвес для камеры на квадрокоптере), будет таких углов очень много... дело конечно ваше, но я бы использовал первый вариант, т.к. он просчитает положение объекта в пространстве, и с этими углами можно будет еще и корректировать камеру.

 

blacksoul
Offline
Зарегистрирован: 01.03.2016

Famouspilot пишет:

Кстати, мне кажется, что расположение датчика на самой камере несколько усложняет задачу, как по мне, куда проще было бы вынести его куда-нибудь в другое место, т.к. стабилизированному положению камеры для датчика, находящегося в подвижной системе координат (например, квадрокоптер), будет соостветствовать ЛИШЬ ОДНО значение углов сервоприводов, а для датчика, находящегося в подвижной системе координат, которая зависит от еще одной подвижной системы координат (т.е. подвес для камеры на квадрокоптере), будет таких углов очень много...

Тут Вы, конечно, правы. Не просто так, в инете полно примеров с вариантом 1, и я не нашел ниодного с вариантом 2 =(

Просто в моём случае, решение по варианту 1 выливается в еще один датчик.

Вот и думаю, что будет проще. Решить проблему программным или аппаратным способом =)