Получение реального положения в пространстве

Здесь принимаются все самые невообразимые вопросы... Главное - не стесняйтесь. Поверьте, у нас поначалу вопросы были еще глупее :)
Ответить
10s
Родился
Сообщения: 15
Зарегистрирован: Вт май 14, 2013 21:31:04
Откуда: Пермь, Пермский край, Россия

Сообщение 10s »

Есть у меня акселерометр LIS302DL. Даташит( http://www.st.com/st-web-ui/static/acti ... 135460.pdf ). Нашел у него прикольную функцию: включения фильтра ускорения свободного падения. Проще говоря, если фильтр включен, то пока к акселерометру не прикладывается ускорение, в регистрах данных X,Y,Z будут нули (или почти нули). Если же выключить фильтр, то данные в регистрах X,Y,Z будут зависеть от ориентации акселерометра в пространстве. То есть он будет работать как гироскоп.
Возникла такая идея: как-то обработать показания с фильтром и без, получить и гироскоп и аксель из акеселя. В целом, если я правильно все понимаю, в x y z без фильтра входит ускорение земли + ускорения с фильтром. И если как-то вычесть эти векторы, то мы получим абсолютное ускорение свободного падения на которое не влияет ускорение самого акселерометра.
Не могли бы вы подсказать, по каким формулам все это считать?
Реклама
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

10s писал(а):То есть он будет работать как гироскоп.
Не совсем так. Акселерометр и гироскоп - совсем разные понятия.
В свое время я делал для одной вещи датчик, определяющий положение в пространстве.
Надо понимать, что если Вы, например, возьмете трехосевой акселерометр и будете поворачивать его вокруг вертикальной оси, сохраняя при этом горизонтальность вращения плоскости, образуемой двумя другими осями (так, чтобы проекция вектора g на вертикальную ось была равна единице, а проекции вектора g на остальные оси была равна нулю), то показания со всех трех осей не изменятся.
Поясню. Допустим, Вы хотите определять пространственное положение игрушечного танка, при этом ось Z акселерометра будет проходить перпендикулярно основанию танка, ось X - параллельно горизонтальной осевой линии танка, а ось Y - перпендикулярно осям Z и X, как показано на рисунке, то при повороте танка на гусеницах вокруг своей оси на горизонтальной поверхности, Вы никак не сможете отследить факт поворота, если не ставить дополнительные датчики (например, энкодеры) на его гусеницы.
Изображение
Если бы у Вас был настоящий гироскоп, то задачу пространственной ориентации можно было бы решить без дополнительных датчиков.
10s писал(а):Не могли бы вы подсказать, по каким формулам все это считать?
Теорема косинусов, школьный курс тригонометрии.
В даташите на акселерометр обязательно указано, какие значения выходных данных соответствуют единичной (ось параллельна вектору g) и нулевой (ось перпендикулярна вектору g) проекциям вектора g на измерительную ось.
А дальше по теореме косинусов находите угол между истинной вертикалью (осью вектора g) и Вашими измерительными осями.
Но помните о том, что я сказал в первой части своего сообщения. Есть ограничения в применении этого метода. Более того, саму "ось вектора g" можно считать "истинной вертикалью" не во всех случаях. Так что все зависит от области, в которой Вы хотите применить этот метод определения координат, а также от требуемой точности. Где-то подойдет, где-то нет.

Данные, поступающие от акселерометра, обязательно будут зашумлены (по многим причинам). Так что перед вычислениями придется применять какие-либо методы обработки "сырых" данных. Начиная от простейшего математического ожидания и заканчивая применением каких-либо фильтров, например, фильтра Калмана.
Реклама
10s
Родился
Сообщения: 15
Зарегистрирован: Вт май 14, 2013 21:31:04
Откуда: Пермь, Пермский край, Россия

Сообщение 10s »

Большое спасибо за столь емкий ответ, но остались некоторые неточности.
Я всю жизнь думал что гироскоп не показывает угол рысканья. Мой опыт основан на mpu6050 (гироскоп и аксель) использованном в связке с ардуино и библиотекой из интернета. После втыкания в значения регистров x y z, никакой зависимости ни одного из них от вращения не наблюдалось.
Школьный курс тригонометрии в голове еще не полностью т.к сам учусь в 10 классе. Я так понимаю тупо векторно вычитать вектор с фильтром из вектора без фильтра?
Спасибо.
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

10s писал(а):Я всю жизнь думал что гироскоп не показывает угол рысканья.
Вы какой гироскоп имеете в виду? Посмотрите вот здесь.
Настоящий гироскоп - это то, что в статье описано как "механический гироскоп". Он прекрасно определяет рыскание. А все новомодные "твердотельные", "пьезоэлектрические" и прочие, относящиеся в статье к классу "вибрационных гироскопов" на самом деле обладают свойствами гироскопа лишь частично. Поэтому их правильнее называть акселерометрами или датчиками угловой скорости. А название "гироскоп" для них, на мой взгляд, не более, чем рекламный трюк.
10s писал(а):Мой опыт основан на mpu6050 (гироскоп и аксель)... После втыкания в значения регистров x y z, никакой зависимости ни одного из них от вращения не наблюдалось.
Если Вы вращали акселерометр так, как показал я в первом сообщении, то Вы и не должны были ничего увидеть, так как при таком вращении проекция вектора g на измерительные оси не меняется. Кроме того, если Вы проводили измерения в режиме измерения угловой скорости, то для того, чтобы увидеть изменения, нужно не вращать, а перемещать акселерометр.
10s писал(а):Я так понимаю тупо векторно вычитать вектор с фильтром из вектора без фильтра?
Однозначно сказать нельзя. Нужно рассматривать область применения и метод проведения измерений.
Реклама
Эиком - электронные компоненты и радиодетали
10s
Родился
Сообщения: 15
Зарегистрирован: Вт май 14, 2013 21:31:04
Откуда: Пермь, Пермский край, Россия

Сообщение 10s »

Метод: попеременно включать и выключать фильтр. Получается что два измерения будут проходить примерно 50 раз в секунду.
Область применения: привязываем платку из аксля еепрома и контроллера к камню, и кидаем его. Надо найти его положение (возможное вращение), и при этом на основе данных об ускорении высчитывать скорость.
Спасибо.
Реклама
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

10s писал(а):Метод: попеременно включать и выключать фильтр.
Область применения: привязываем платку из аксля еепрома и контроллера к камню, и кидаем его.
Тут возникает один момент, мне лично не совсем понятный.
Это потребует выполнения дополнительных экспериментов. Суть вот в чем. Когда Вы будете выполнять замер в статике, то из-за движения камня к постоянной составляющей ускорения, необходимой для определения пространственного положения, будет добавляться добавочная величина, обусловленная добавочным ускорением двигающегося объекта. Да, я понял, что Вы собираетесь чередовать замеры "статики" и "динамики", проблема в том, что совпадут ли размерности ускорений в разных режимах. Как бы не пришлось подбирать поправочные коэффициенты.
10s писал(а):Получается что два измерения будут проходить примерно 50 раз в секунду.
Для определения положения летящего камня это очень мало.
Летящий камень может за секунду 7 метров пролететь и при этом раз 5 вокруг собственной оси повернуться.
Реклама
10s
Родился
Сообщения: 15
Зарегистрирован: Вт май 14, 2013 21:31:04
Откуда: Пермь, Пермский край, Россия

Сообщение 10s »

Ну мне же не высокоточное устройство делать + можно включить режим опроса в 400гц, и тогда частота двойного опроса будет 200гц.
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Сообщение Alkul »

10s писал(а):можно включить режим опроса в 400гц, и тогда частота двойного опроса будет 200гц.
Ну, что Вам сказать... пробуйте.
Родился
Сообщения: 1
Зарегистрирован: Ср май 28, 2014 12:40:55

Сообщение tensor2014 »

Вам удалось это сделать? Выложите код! Заранее благодарю!
Ответить

Вернуться в «Теория»