Ориентации ардуино

rusel6
Offline
Зарегистрирован: 07.02.2012

Есть ли какой способ ориентации ардуино по квартире, на примере телефона по GSM вышкам. Например расставить радио датчики по комнатам. 

maksim
Offline
Зарегистрирован: 12.02.2012

Наверное будет проще ипользовать компас с 2-х осевым акселерометром, например: www.robotshop.su/e-store/catalog/202/965/,  относительно точки отсчета пишите "карту" квартиры и вот вам ориентация по квартере, только в этом случае, при отключении сего девайса и последующем включении, вам придется определять току отсчета заново.

Mastino
Offline
Зарегистрирован: 03.12.2011

maksim пишет:

Наверное будет проще ипользовать компас с 2-х осевым акселерометром, например: www.robotshop.su/e-store/catalog/202/965/,  относительно точки отсчета пишите "карту" квартиры и вот вам ориентация по квартере, только в этом случае, при отключении сего девайса и последующем включении, вам придется определять току отсчета заново.

Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..

step962
Offline
Зарегистрирован: 23.05.2011

Mastino пишет:

Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..

Это так. Но в понятие местонахождения/ориентирования входят не только линейные, но и угловые координаты устройства. Грубо: смотрит ваш робот рыльзем на йух, или в совершенно другом направлении.

2-хосевой акселерометр даст вам необходимый материал для расчета смещения устройства в продольном и поперечном (относительно устройства) направлениях, а компас позволит отслеживать поворот локальной системы координат устройства относительно глобальной системы координат (комната-город-Земля).

step962
Offline
Зарегистрирован: 23.05.2011

rusel6 пишет:

Есть ли какой способ ориентации ардуино по квартире, на примере телефона по GSM вышкам. Например расставить радио датчики по комнатам. 

С радиомаяками сложновато ориентироваться - не удастся с приемлемой точностью за приемлемую цену определить направление на радиомаяк.

Но можно разместить вдоль стен комнаты 4-5 ИК-излучателя, каждый из которых в лучших традициях настоящих маяков имеет свой режим "потух-погас" (c). Остается разместить на устройстве ИК-приемник, сгоношить вокруг него цилиндрический экран с вертикальной прорезью и, вращая этот экран, ловить импульсы от ИК-излучателей. Два запеленгованных излучателя дадут (достаточно) точное положение приемника внутри комнаты. По пеленгам можно будет определять не только координаты устройства, но и его угловое положение.

Почему 4-5 излучателей? Ну, если комната не пустая, то придется избыточностью маяков бороться с невидимостью некоторых из них в определенных зонах комнаты.

Mastino
Offline
Зарегистрирован: 03.12.2011

или купить много таких http://www.pololu.com/catalog/product/701

maksim
Offline
Зарегистрирован: 12.02.2012

step962 пишет:

Mastino пишет:

Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..

Это так. Но в понятие местонахождения/ориентирования входят не только линейные, но и угловые координаты устройства. Грубо: смотрит ваш робот рыльзем на йух, или в совершенно другом направлении.

2-хосевой акселерометр даст вам необходимый материал для расчета смещения устройства в продольном и поперечном (относительно устройства) направлениях, а компас позволит отслеживать поворот локальной системы координат устройства относительно глобальной системы координат (комната-город-Земля).

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

Mastino
Offline
Зарегистрирован: 03.12.2011

да фигня все это. В реальности ничего не выйдет.

leshak
Offline
Зарегистрирован: 29.09.2011

 Ну, при большом желании все выйти может.

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

Компасы-акселерометры - сами по себе не дадут нужной точности, сильная подверженность помехам.

Насколько я понимню сейчас, в основном, используются два подохода:

1. Визуальные метки (линии, QRкоды на полу) и .п. - полохо пременимо в домашних условиях, но может подойти для условий "склада" и т.п.

2.  Радио метки.

Примерно то что вы описали в первом посте. Расставляются радио-маячки. Но, "как в GSM" (по времени прохождения сигнала до них и мощьности) - триангуляция не выйдет. Слишком маленькие расстояния. Уловить "разницу" во времени - очень трудно. Плюс дикие "отражения/переотражения, помехи" на пути.

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

Подход имеет тоже "кучу минусов" (да банальное "включили волновку, радио-картина поменялась").

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

maksim
Offline
Зарегистрирован: 12.02.2012

Mastino пишет:

да фигня все это. В реальности ничего не выйдет.

Проверяли? И что именно не выйдет?

Mastino
Offline
Зарегистрирован: 03.12.2011

maksim пишет:

Mastino пишет:

да фигня все это. В реальности ничего не выйдет.

Проверяли? И что именно не выйдет?

с помощью акселерометра и компаса ван никак не выйдет рассчитать дистанцию.

maksim
Offline
Зарегистрирован: 12.02.2012

Это почему же? Вы векторы в школе проходили?

Mastino
Offline
Зарегистрирован: 03.12.2011

maksim пишет:

Это почему же? Вы векторы в школе проходили?

наш диалог напоминает мне один topic из механического форума где newbie задал вопрос: - у меня в гараже валяется старая бензопила "дружба". Помогите мне сделать из нее одноместный вертолет..

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

 >Вы векторы в школе проходили?

А вы? Видимо у вас в школе преподавали какие-то тайные вектора.

Предположим у нас есть три акселерометра (X,Y,Z). Предположим что "они чудестны", не имеют погрешностей и т.п.

Девайс находится в точке с координатами (0,0,0). Значение акселерометров (0,0,1). Далее, в течении двух секунд акселерометры имели значение (0,0.5,0.5), потом опять пришли в состоние (0,0,1).

Теперь вы, использую магию вашей школы, попробуйте ОДНОЗНАЧНО ответить на вопрос: какие координаты имеет устройство?

Без привлечение еще фиговой тучи датчиков и уточнящих вопросов.

>Но то что это будет не "подключили датчик и считали" - это точно.

Похоже промахнулся с этим. "Большие дяди" озаботились вопросом, значит и нам, возможно, рано или поздно это станет "доступно из коробки". 

http://blogs.computerra.ru/29503

Если же, все-таки, идея "акселеромтеров" не отпускает, то я бы рекомендовал пойти по пути покупки WiiRemote контроллера.

За цену $50-$100. Вы получаете три акселерометра, гироскоп (у второго поколения), кнопки-джойтики, блюутуз интерфейс, инфакрасная камера с трекингом точечьных объектов на железном уровне.

Дрова на комп - есть (семерка так вообще, помоему "подхватывает" из коробки), библиотеки и примеры - тоже. 

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

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

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

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

leshak
Offline
Зарегистрирован: 29.09.2011

Хе-хе... Плохо учат в школе, раз у вас набор трех цифр ассоциируется только с " отрезком в системе координат".

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

Но это лирика. 

Давайте из свого понимания "векторов" интерпретируйте показание датчиков дайте ответ. Попробую не смущать вас векторной записью. Максимально "словами".

Дано: есть три одно-осевых акселерометра. Все друг-другу ортогональны. Направлены по осям X,Y,Z. Ось X - направлена юг-север. Y - запад -восток, ось Z- верх-низ.

Вначале устройство  находится в точке 0,0,0.  Первоначальные  показатели акселерометров:

  • по оси X - ускорение нулевое,
  • по оси Y - нулевое,
  • по оси Z - единица (сила тяжести).
  • Показание компаса, раз вам его так хочется, нулевое. Строго на север.

Дествие: на протяжении 2-х секунд.

  • Акселеромтр на оси X - ноль
  • Акселеромтр на оси Y -  выдает значение 0.5,
  • Акселеромтр на оси Z - 0.5, .
  • Компас -  выдает 0. Направление компаса - строго на север.

Вопрос: какое теперь имеет положение система? В изначальной системе координат? Куда нужно тыкнуть пальцем на карту в квартире?

-------------

Так что, давайте, рассказы про "школу и "воспоминания юности" - опустим. Вот у вас есть девайс, есть показания трех акселерометров и компаса (даже на два акселерометра больше, чем вы хотели, можете "лишнии" - игнорировать). Попробуйте на основании их дать ответ на изначальный вопрос топика: какие текущие координаты у устройства? Используйте ваш мат.аппарат и показания датчиков которых, по вашим словам, достаточно.

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

 

 

maksim
Offline
Зарегистрирован: 12.02.2012

leshak пишет:

 

  • по оси X - ускорение нулевое,
  • по оси Y - нулевое,
  • по оси Z - единица (сила тяжести).
  • Показание компаса, раз вам его так хочется, нулевое. Строго на север.

Дествие: на протяжении 2-х секунд.

  • Акселеромтр на оси X - ноль
  • Акселеромтр на оси Y -  выдает значение 0.5,
  • Акселеромтр на оси Z - 0.5, .
  • Компас -  выдает 0. Направление компаса - строго на север.

Вопрос: какое теперь имеет положение система? В изначальной системе координат? Куда нужно тыкнуть пальцем на карту в квартире?
 

Ответ: обЪект находится в движении, если у 0,5 единица измерения м/с2, то примерно 1 метр от начала координат в северном направлении.

Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?

step962
Offline
Зарегистрирован: 23.05.2011

 На (не самой ранней) заре развития советского ядерного щита ракете 8К84 хватало чуть большего количества датчиков (2 двухстепенных акселерометров и 3 двухстепенных гироблоков), чтобы улетев на 12000 км, ухнуть на цель со средней погрешностью около километра. "Программа" полета записывалась на бобине с фотопленкой. "Бортовой компьютер" - электрогидромеханическая система. 

step962
Offline
Зарегистрирован: 23.05.2011

maksim пишет:

Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?

Естественно, можно. История открытия Нептуна тому подтверждение. 

maksim
Offline
Зарегистрирован: 12.02.2012

Хотя нет примерно 1,5 метра. 

step962
Offline
Зарегистрирован: 23.05.2011

 Ну, если учесть, что ускорение по оси Z в состоянии покоя равно единице (а из курса физики известно, что ускорение свободного падения - 9,81 м/с2), то (0,5*9,81)*(0,5*9,81)*2/2 -> ок. 24 м.

ну и снижение - тоже 24 м.

Ну, и скорости по осям Y и Z - по (0,5*9,81)*2 = ок. 10 м/с.

Все это есссссно для случая, если ускорения даны в глобальной системе координат.

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

maksim
Offline
Зарегистрирован: 12.02.2012

s=a*t^2/2

0,5 * 2^2 / 2 = 1 метр

step962
Offline
Зарегистрирован: 23.05.2011

maksim пишет:

s=a*t^2/2

0,5 * 2^2 / 2 = 1 метр

a=9,81 м/с2 (поскольку ускорение по Z принято за единицу)

 

Упс

(0,5*9,81)*2*2/2 -> ок. 10 м.

ушибся с приложением квадрата в текстовой интерпретации формулы

leshak
Offline
Зарегистрирован: 29.09.2011

Почему "по моему"?

Это по вашему...

Цифру-то "координат" вы нам не выдали. Не векторами, ни интегралами - ничем.

Ответ "система в движении" эквивалентен "текущие координаты я определить не смог". То есть "ответ не известен". Что и требовалось доказать. 

Изначальная задача топикстаретра, "сореентироваться в квартире" предложенным вами набором датчиков - не решена. Вместо того что-бы сказать ему "где он сейчас", вы сказали "ты едешь куда-то". 

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

 

>Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?

Это как раз "по вашему" тоже так вышло. Координат-то - нет.

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

А надеялся, что вы хотя-бы неявно предположите что "наклонов нет/перемещения по вертикали - нет". Тогда был-бы шанс "расчитать векторами". Но даже это у вас не вышло. Несмотря на то что в школе "проходили" (и видимо прошли мимо).

Вообщем с "доп. датчиками или ограничениями" - теоретически возможно. А практически вы упретесь в "точность", "дрейф гироскопа" и т.п. Хоть вы и открещиваетесь от "про точность я ничего не говорил", но ссылку вы дали на конкрентынй дейвайс. Который имеет конкретную точность.  Мы же решаем не задачу "сферического коня в вакууме". Там и без акселерометров можно сразу сказать топик стартеру "вы находитесь в центре квартиры +- 30 метров".

Вот и выходит, что 

  1. Перечисленными вами датчиками - задача не решается
  2. Дополнительными датчиками ее "можно решить", но это будет имеено "строим вертолет на бензопиле дружба", как вам выше и говорили. В легендах - возможно. В реальности.... в вертолет быстрее  поверю.
  3. Вы имеете желание поучать других там, где сами не умеете применить то на что ссылаетесь. Даже неправильно.

В реальности эту задачу решают одновременно несколькими методами. А акселерометры, и гироскопы, и маяки, и GPS, и сонар/радар.

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

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

Но то что школьная формула (которая вам, видимо, в памяти маячила)

тут не прокатит - к гадалке не ходи.  А если мы еще вспомним что измерения у нас дискретны (нет непрерывности),то....

 

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

 Кстати, в условиях квартиры и упростив задачу "комната практически пуста", можно пойти в обратном направлении:

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

Вообщем упрощенное  motion capture, с одним-двумя "контролными точками".

Можно попробовать "вывернуть наизнанку". Расставить датчики по стенам, а на робота посадить ДВЕ камеры (восроизвести бинакулярное зрение). Но боюсь тут уже может не хватит мощи ардуинки, да и точностью-калибровкой возится поболее нужно будет.

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

maksim
Offline
Зарегистрирован: 12.02.2012

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

leshak
Offline
Зарегистрирован: 29.09.2011

 Пока набирал. Вы немного расширили свой ответ. Так что часть моего "опуса" - утеряла актуальность. Но суть - осталась.

  1. Как правильно сказал step962 "потребуется также знание угловых ускорений"
  2. Много прекрасных идей разбилось и "трудности реализации". А доступная элементная база - не очень этому способствует.

Вот с выходом BCM4752 может быть ситуация изменится. Но только потому что кто-то "решил задачу за нас" и упаковал решение в готовый чип.

 

leshak
Offline
Зарегистрирован: 29.09.2011

 >это бесполезный датчик

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

Если вы датчик используете неправильно, то конечно "бесполезен". 

mixail844
Offline
Зарегистрирован: 30.04.2012

а можно расклеить на полу наклеечки,например на каждом "перекрестке квартиры" маахонькие с бар кодами.в каждой наклейке закодировано текущие местоположение(координаты) перекрестков кавартиры и пути(координаты) близлежащих (по прямой) точек в кварире.при помощи "бар-пистолета" считывать точки.кстати есть и безпроводные "пистолеты" так что в принципе можно сразу передавать инфу на комп,тот будет расчитывать траекторию движения "от телека к кухне" и передавать ардуине сразу на колеса - может помочь освободить на ардуине место под другие датчики(команды).а ардуина в свою очередь может и акселерометрами докладывать где она находитья по отношению к последней точки.а двойной интеграл(такое вообще возможно в Arduino IDE?) ускорения дает перемещение.

ntdfish
Offline
Зарегистрирован: 10.06.2012

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

Автор, как продвигается дело?

ourlive
Offline
Зарегистрирован: 26.05.2012

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

Евгений74
Offline
Зарегистрирован: 08.05.2012

А если использовать такой набор: компас, энкодеры на колеса и датчик препятствий. Два массива x[i], и y[j], записывают координаты местоположения робота по х и у. Компас контролирует направление движения.

maksim
Offline
Зарегистрирован: 12.02.2012

Евгений74 пишет:

А если использовать такой набор: компас, энкодеры на колеса... Компас контролирует направление движения.

В итоге такой способ ориентирования в пространстве оказывается самый дешевый и практичный.

ourlive
Offline
Зарегистрирован: 26.05.2012

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

Евгений74
Offline
Зарегистрирован: 08.05.2012

Периодически по углам комнаты можно корректировать координаты и убирать накопившиеся ошибки. Координаты старта это место подзарядки, робот выполняет алгоритм и по его завершению встает на подзарядку, как робот пылесос.

maksim
Offline
Зарегистрирован: 12.02.2012

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

ourlive
Offline
Зарегистрирован: 26.05.2012

"убиться ап стену" т.е. сброс ошибки по недвижимым конструкциям (стнам) будет эффективен  только в идеальных условиях (пустое помещение). Почитайте про те самые пылесосы, они даже не пытаются точно позиционироваться, хаотично носятся шарахаясь обо всё подря (т.е. аккуратно объезжают). А на базу возвращаются по ИК маяку (вероятно), т.к. это единственный датчик абсолютного позиционирования (хотя возможно уже и распознание образов с видеокамеры начали запихивать)

ntdfish
Offline
Зарегистрирован: 10.06.2012

Еще очень смущает как программно реализовать "неподвижные стены".

Я сейчас думаю в каких координатах строить карту. Очевидно что проще в полярных, если используется радар (сонар или ик). Есть ли смысл потом переходить в декартовы координаты.

И другой мучающий меня вопрос, стоит ли строить "полную" карту местности или ограничится радиусом радара.

Кто сталкивался с такими дилемами, как для себя решали?

vworld
vworld аватар
Offline
Зарегистрирован: 26.09.2011

я бы предложил для начала попробовать реализовать:

1) черная полоса и датчик полосы

2) баркода по всей площади

chervyachok
chervyachok аватар
Offline
Зарегистрирован: 22.12.2011

 И еще вариант - по принципу мокап (motion capture). Что бы не ардуино определял свое местоположение а камеры или иксенсоры определяли положение ардуины. 

mixail844
Offline
Зарегистрирован: 30.04.2012

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

Sinister
Offline
Зарегистрирован: 14.06.2012

Года 2 назад читал, что используют инфракрасные метки на потолке для определения местоположения робо-пылесоса.

ntdfish
Offline
Зарегистрирован: 10.06.2012

Типа ориентирования по звездам? Навешать на потолок несколько ИК излучателей и заниматься триангуляцией. Это действительно оригинально.

MAFia
Offline
Зарегистрирован: 26.10.2011

leshak пишет:

  

  • Акселеромтр на оси X - ноль
  • Акселеромтр на оси Y -  выдает значение 0.5,
  • Акселеромтр на оси Z - 0.5, .
  • Компас -  выдает 0. Направление компаса - строго на север.
     


 

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

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

float X, Y; \\Координаты
float S;\\пройденный путь
float V;\\скорость
int Angle; \\Угол (курс, если желаете)
float A; \\Ускорение. ось акселя совпадает с осью компаса
long unsigned int T; \\время

\\получаем ускорение и угол от датчиков

S=V*(millis()-T)*V+(A*(millis()-T)^2)/2; \\вычисляем пройденный путь
V=V+A*(millis()-T); \\вычисляем скорость
T=millis();

\\Вычисляем координаты
X=X+S*cos(A);
Y=Y+S*sin(A);


\\программа дальше

 

MAFia
Offline
Зарегистрирован: 26.10.2011

mixail844, тогда уж лучше шариковую. Я как-то тоже так хотел сделать для робота, использовать вместо 3-его колеса, но получилось тяжело и движки не справились. 

ourlive
Offline
Зарегистрирован: 26.05.2012

MAFia пишет:

  Акселеромтр на оси X - ноль

  • Акселеромтр на оси Y -  выдает значение 0.5,
  • Акселеромтр на оси Z - 0.5, .
  • Компас -  выдает 0. Направление компаса - строго на север.
     


 

акселерометр кривой, в состоянии покоя должна быть единица по z, т.е. 1g земного притяжения

leshak
Offline
Зарегистрирован: 29.09.2011

 

MAFia пишет:

 

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

 

Если вы почитаете внимателней ,то я говорил что "только по акселерометрам" - в ОБЩЕМ случае  сказать не возможно.  Вы ввели доп. ограничения потом взяли мой пример который я приводил как "для задачи в общем виде" и пытаетесь доказать что "задача решаема". Так я тоже сразу об этом говорил 

leshak пишет:

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

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

Sinister
Offline
Зарегистрирован: 14.06.2012

ntdfish пишет:

Типа ориентирования по звездам? Навешать на потолок несколько ИК излучателей и заниматься триангуляцией. Это действительно оригинально.

Не ИК излучатели, а метки спец карандашом невидимым глазом. Типа как в Угнать за 60 секунд.

ourlive
Offline
Зарегистрирован: 26.05.2012

"ИК метки" - т.е. распознание образов? в одном углу крестик, в другом кружок и т.п.?

Sinister
Offline
Зарегистрирован: 14.06.2012

 Углы можно и знаками пометить. А движение скажем из кухни в комнату пометить линией. Где необходимо уменьшение скорости- поставить соотвествующие на на линии.

Russk1j
Offline
Зарегистрирован: 03.05.2012

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