Официальный сайт компании Arduino по адресу arduino.cc
Ориентации ардуино
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 17/04/2012 - 17:01
Есть ли какой способ ориентации ардуино по квартире, на примере телефона по GSM вышкам. Например расставить радио датчики по комнатам.
Наверное будет проще ипользовать компас с 2-х осевым акселерометром, например: www.robotshop.su/e-store/catalog/202/965/, относительно точки отсчета пишите "карту" квартиры и вот вам ориентация по квартере, только в этом случае, при отключении сего девайса и последующем включении, вам придется определять току отсчета заново.
Наверное будет проще ипользовать компас с 2-х осевым акселерометром, например: www.robotshop.su/e-store/catalog/202/965/, относительно точки отсчета пишите "карту" квартиры и вот вам ориентация по квартере, только в этом случае, при отключении сего девайса и последующем включении, вам придется определять току отсчета заново.
Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..
Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..
Это так. Но в понятие местонахождения/ориентирования входят не только линейные, но и угловые координаты устройства. Грубо: смотрит ваш робот рыльзем на йух, или в совершенно другом направлении.
2-хосевой акселерометр даст вам необходимый материал для расчета смещения устройства в продольном и поперечном (относительно устройства) направлениях, а компас позволит отслеживать поворот локальной системы координат устройства относительно глобальной системы координат (комната-город-Земля).
Есть ли какой способ ориентации ардуино по квартире, на примере телефона по GSM вышкам. Например расставить радио датчики по комнатам.
С радиомаяками сложновато ориентироваться - не удастся с приемлемой точностью за приемлемую цену определить направление на радиомаяк.
Но можно разместить вдоль стен комнаты 4-5 ИК-излучателя, каждый из которых в лучших традициях настоящих маяков имеет свой режим "потух-погас" (c). Остается разместить на устройстве ИК-приемник, сгоношить вокруг него цилиндрический экран с вертикальной прорезью и, вращая этот экран, ловить импульсы от ИК-излучателей. Два запеленгованных излучателя дадут (достаточно) точное положение приемника внутри комнаты. По пеленгам можно будет определять не только координаты устройства, но и его угловое положение.
Почему 4-5 излучателей? Ну, если комната не пустая, то придется избыточностью маяков бороться с невидимостью некоторых из них в определенных зонах комнаты.
или купить много таких http://www.pololu.com/catalog/product/701
Поделитесь как компас может показывать местонахождение? Как мне известно компас показывает направление..
Это так. Но в понятие местонахождения/ориентирования входят не только линейные, но и угловые координаты устройства. Грубо: смотрит ваш робот рыльзем на йух, или в совершенно другом направлении.
2-хосевой акселерометр даст вам необходимый материал для расчета смещения устройства в продольном и поперечном (относительно устройства) направлениях, а компас позволит отслеживать поворот локальной системы координат устройства относительно глобальной системы координат (комната-город-Земля).
Вот подумал я, а ведь-двух осевой и не нужно, достаточно одно-осевого акселерометра и компаса или гироскопа, но если использовать гироскоп, то помимо определения точки отсчета (изначального положения) нужно будет еще определять нулевой угол (изначальное направление).
да фигня все это. В реальности ничего не выйдет.
Ну, при большом желании все выйти может.
Но то что это будет не "подключили датчик и считали" - это точно. В помещении это задача на порядки сложней, чем на улице. Тут скорее нужно даже не ардуиновские форумы смотреть, а исследовательские работы университетов.
Компасы-акселерометры - сами по себе не дадут нужной точности, сильная подверженность помехам.
Насколько я понимню сейчас, в основном, используются два подохода:
1. Визуальные метки (линии, QRкоды на полу) и .п. - полохо пременимо в домашних условиях, но может подойти для условий "склада" и т.п.
2. Радио метки.
Примерно то что вы описали в первом посте. Расставляются радио-маячки. Но, "как в GSM" (по времени прохождения сигнала до них и мощьности) - триангуляция не выйдет. Слишком маленькие расстояния. Уловить "разницу" во времени - очень трудно. Плюс дикие "отражения/переотражения, помехи" на пути.
Поэтому вначале устройство "калибруется". Делается "замер" как выглядит "радио картина" (радио-слепок) в каждой точке квартиры. И просто "запоминается" вместе с координатами. Построить "мат.модель" что-бы предсказать ее или "вычислять на ходу", а не бегать-мерять - практически не реально. Ну а дальше робот едет, делает замер. Сравнивает "с эталонами" (и тут тоже без математики не обойтись, банально "равно" тут не подойдет) и найдя "похожий" радио-слепок берет его координаты.
Подход имеет тоже "кучу минусов" (да банальное "включили волновку, радио-картина поменялась").
Вообщем задача конечно решаемая, но ее "универсальное,элегантное и дешевое решение" спокойно потянет на научную работу, или создание успешной фирмы и заработыванием на этом много $$.
да фигня все это. В реальности ничего не выйдет.
Проверяли? И что именно не выйдет?
да фигня все это. В реальности ничего не выйдет.
Проверяли? И что именно не выйдет?
с помощью акселерометра и компаса ван никак не выйдет рассчитать дистанцию.
Это почему же? Вы векторы в школе проходили?
Это почему же? Вы векторы в школе проходили?
наш диалог напоминает мне один topic из механического форума где newbie задал вопрос: - у меня в гараже валяется старая бензопила "дружба". Помогите мне сделать из нее одноместный вертолет..
>Вы векторы в школе проходили?
А вы? Видимо у вас в школе преподавали какие-то тайные вектора.
Предположим у нас есть три акселерометра (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 и играете в спортивные игры. Боритесь бичем компьютерщика - низкой подвижностью.
Вот как раз я проходил, а вот вы как-то пропустили... я вам говорю про векторы, а вы мне про отрезок в системе координат. Вектор имеет направление и длину, направление определяем компосом, длину одно-осевым акселерометром, про точность я ничего не говорил.
Хе-хе... Плохо учат в школе, раз у вас набор трех цифр ассоциируется только с " отрезком в системе координат".
В хороших школах, кроме того что дают "понятие" вектор, расказывают что он может иметь еще и различные "интерпретации" - геометрическое, физичекое и т.п.
Но это лирика.
Давайте из свого понимания "векторов" интерпретируйте показание датчиков дайте ответ. Попробую не смущать вас векторной записью. Максимально "словами".
Дано: есть три одно-осевых акселерометра. Все друг-другу ортогональны. Направлены по осям X,Y,Z. Ось X - направлена юг-север. Y - запад -восток, ось Z- верх-низ.
Вначале устройство находится в точке 0,0,0. Первоначальные показатели акселерометров:
Дествие: на протяжении 2-х секунд.
Вопрос: какое теперь имеет положение система? В изначальной системе координат? Куда нужно тыкнуть пальцем на карту в квартире?
-------------
Так что, давайте, рассказы про "школу и "воспоминания юности" - опустим. Вот у вас есть девайс, есть показания трех акселерометров и компаса (даже на два акселерометра больше, чем вы хотели, можете "лишнии" - игнорировать). Попробуйте на основании их дать ответ на изначальный вопрос топика: какие текущие координаты у устройства? Используйте ваш мат.аппарат и показания датчиков которых, по вашим словам, достаточно.
И только после ответа на этот вопрос, будет интерестно слушать, что же мы пропустили в школе (вдруг действительно что-то пропустили).
Дествие: на протяжении 2-х секунд.
Вопрос: какое теперь имеет положение система? В изначальной системе координат? Куда нужно тыкнуть пальцем на карту в квартире?
Ответ: обЪект находится в движении, если у 0,5 единица измерения м/с2, то примерно 1 метр от начала координат в северном направлении.
Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?
На (не самой ранней) заре развития советского ядерного щита ракете 8К84 хватало чуть большего количества датчиков (2 двухстепенных акселерометров и 3 двухстепенных гироблоков), чтобы улетев на 12000 км, ухнуть на цель со средней погрешностью около километра. "Программа" полета записывалась на бобине с фотопленкой. "Бортовой компьютер" - электрогидромеханическая система.
Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?
Естественно, можно. История открытия Нептуна тому подтверждение.
Хотя нет примерно 1,5 метра.
Ну, если учесть, что ускорение по оси Z в состоянии покоя равно единице (а из курса физики известно, что ускорение свободного падения - 9,81 м/с2), то (0,5*9,81)*(0,5*9,81)*2/2 -> ок. 24 м.
ну и снижение - тоже 24 м.
Ну, и скорости по осям Y и Z - по (0,5*9,81)*2 = ок. 10 м/с.
Все это есссссно для случая, если ускорения даны в глобальной системе координат.
Для связанной с телом - то бишь локальной системы координат - потребуется также знание угловых ускорений, которые могут существенно оживить итоговую траекторию. Вырвавшийся из рук полунадутый воздушный шарик прекрасный тому пример.
s=a*t^2/2
0,5 * 2^2 / 2 = 1 метр
s=a*t^2/2
0,5 * 2^2 / 2 = 1 метр
a=9,81 м/с2 (поскольку ускорение по Z принято за единицу)
Упс
(0,5*9,81)*2*2/2 -> ок. 10 м.
ушибся с приложением квадрата в текстовой интерпретации формулы
Почему "по моему"?
Это по вашему...
Цифру-то "координат" вы нам не выдали. Не векторами, ни интегралами - ничем.
Ответ "система в движении" эквивалентен "текущие координаты я определить не смог". То есть "ответ не известен". Что и требовалось доказать.
Изначальная задача топикстаретра, "сореентироваться в квартире" предложенным вами набором датчиков - не решена. Вместо того что-бы сказать ему "где он сейчас", вы сказали "ты едешь куда-то".
Кстати даже этот ответ неверный. Может еду, а может просто наклонился на 45 градусов вправо и тихо стою. Входных данных для различия этих ситуаций - не достаточно. Есть еще бесконечно количество комбинаций "движение-наклон", которое даст точно такие же показания акселерометров и компаса.
>Т.е. по вашему нельзя определить пройденый путь обЪекта зная его ускорения и время этих ускорений?
Это как раз "по вашему" тоже так вышло. Координат-то - нет.
"По моему" - можно. Проблема в том ускорений вы не знаете. Ускорение - векторная величина. Вы знаете их скалярные величины (вернее проэкции). А нужны вектора (да-да.... мы таки знаем что такое вектор). А узнать вектор вы можете получить только либо взяв дополнительные датчики (вращения, гироскоп), либо наложив дополнительные условия на задачу. Сделать их константами (пол идеально горизонтальный, перекосов наклонов от подвески - не бывает и т.п.).
А надеялся, что вы хотя-бы неявно предположите что "наклонов нет/перемещения по вертикали - нет". Тогда был-бы шанс "расчитать векторами". Но даже это у вас не вышло. Несмотря на то что в школе "проходили" (и видимо прошли мимо).
Вообщем с "доп. датчиками или ограничениями" - теоретически возможно. А практически вы упретесь в "точность", "дрейф гироскопа" и т.п. Хоть вы и открещиваетесь от "про точность я ничего не говорил", но ссылку вы дали на конкрентынй дейвайс. Который имеет конкретную точность. Мы же решаем не задачу "сферического коня в вакууме". Там и без акселерометров можно сразу сказать топик стартеру "вы находитесь в центре квартиры +- 30 метров".
Вот и выходит, что
В реальности эту задачу решают одновременно несколькими методами. А акселерометры, и гироскопы, и маяки, и GPS, и сонар/радар.
Потом все данные, фильтруют, предсказыают, усредняют, вычисляют ошибки ..... получают координаты с какой-то погрешностью.
Вообщем это интерестная, актуальная и сложная исследовательская задача. Если получится ее решить "на коппеечной рассыпухе + ардуино" - великий респект тому человеку.
Но то что школьная формула (которая вам, видимо, в памяти маячила)
тут не прокатит - к гадалке не ходи. А если мы еще вспомним что измерения у нас дискретны (нет непрерывности),то....
Кстати, в условиях квартиры и упростив задачу "комната практически пуста", можно пойти в обратном направлении:
Маячок-диод ставить на само устройство. А по углам комнаты растыкать "камеры". По разнице картинок можно довольно просто и однозначно вычислять местонахождение маячка. До тех пор, пока маячок есть в поле зрения хотя-бы двух камер - задача относительно проста (при достаточном разрешении камер).
Вообщем упрощенное motion capture, с одним-двумя "контролными точками".
Можно попробовать "вывернуть наизнанку". Расставить датчики по стенам, а на робота посадить ДВЕ камеры (восроизвести бинакулярное зрение). Но боюсь тут уже может не хватит мощи ардуинки, да и точностью-калибровкой возится поболее нужно будет.
Вообщем "общего решения" - похоже нет. Но в конкретных условиях, под конкретную задачу подобрать что-то "приемлимой точности-гиморойности" - все-таки можно.
Пока не было возможности поиграться с акселерометром, предполагал что данный датчик измеряет линейное ускорение, но судя по всему выше написанному в отдельности это бесполезный датчик.
Пока набирал. Вы немного расширили свой ответ. Так что часть моего "опуса" - утеряла актуальность. Но суть - осталась.
Вот с выходом BCM4752 может быть ситуация изменится. Но только потому что кто-то "решил задачу за нас" и упаковал решение в готовый чип.
>это бесполезный датчик
А "отдельности" - любой датчик бесполезен. Смотря под какую задачу. Если вы делаете "шагомер" - очень даже полезен. Если вам нужно электронные весы калибровать в горизонте, жесты простые распознавать - опять полезен.
Если вы датчик используете неправильно, то конечно "бесполезен".
а можно расклеить на полу наклеечки,например на каждом "перекрестке квартиры" маахонькие с бар кодами.в каждой наклейке закодировано текущие местоположение(координаты) перекрестков кавартиры и пути(координаты) близлежащих (по прямой) точек в кварире.при помощи "бар-пистолета" считывать точки.кстати есть и безпроводные "пистолеты" так что в принципе можно сразу передавать инфу на комп,тот будет расчитывать траекторию движения "от телека к кухне" и передавать ардуине сразу на колеса - может помочь освободить на ардуине место под другие датчики(команды).а ардуина в свою очередь может и акселерометрами докладывать где она находитья по отношению к последней точки.а двойной интеграл(такое вообще возможно в Arduino IDE?) ускорения дает перемещение.
Видел на одной типографной фабрике, как роботы ездят по складу и развозят палеты с бумагой. Они умеют парковаться на свое место, находить нужный палет, отвозить его в павильную точку, объезжать препятсвия, останавливаться, если перед ними появляется человек. По зданию расклеяны яркие метки, стоят вроде как антены. Визуально видно, что роботы имеют камеры. Что там у них внутри сказать сложно.
Автор, как продвигается дело?
автор не указал необходимую точность позиционирования, как вариант, можно даже аккустические маяки использовать (где нибудь в диапазоне ультразвука, чтоб на уши не давили). простейшая система из двух ухов вполне сможет определить направление на маяк, а если сигнал будет изменяющимся по определённому алгоритну, от и расстояние до маяка. в совокупности с несколькими замерами дальномера и механическим счётом перемещения (оборотов колеса) в обычной квартире можно позиционироваться достаточно точно. борьба с эхом и иными переотражениями вероятно также не составят особых сложностей (просто перенести опыт с тех же сотовых сетей). количество маяков можно выбрать только опытным путём. а вот кодить всё это дело будет сложно.. есть ещё лидары всякие, можно позиционироваться по контурам объектов и расстоянию до них.
А если использовать такой набор: компас, энкодеры на колеса и датчик препятствий. Два массива x[i], и y[j], записывают координаты местоположения робота по х и у. Компас контролирует направление движения.
А если использовать такой набор: компас, энкодеры на колеса... Компас контролирует направление движения.
В итоге такой способ ориентирования в пространстве оказывается самый дешевый и практичный.
что такое накопление ошибки наверное знаете, потому его нужно как то корректировать (если конечно в задачу аппарата не входит один раз проехать по маршруту и самоуничтожиться). да и каждый раз вручную устанавливать координаты старта это не красиво, хотя и допустимо (если в задачу робота будет входить - съездить за пивом к холодильнику и вернуться точно к дивану у телевизора, а не - погонять кошку по квартире)
Периодически по углам комнаты можно корректировать координаты и убирать накопившиеся ошибки. Координаты старта это место подзарядки, робот выполняет алгоритм и по его завершению встает на подзарядку, как робот пылесос.
Если вы будете такой способ использовать как единственный способ ориентирования, то да ошибка будет копиться и в итоге робот совсем потеряется в пространстве, но как дополнительный, например для оперделения положения комнаты, в которую нужно попасть или в которую робот уже заезжал, то этот способ наверное будет в самый раз.
"убиться ап стену" т.е. сброс ошибки по недвижимым конструкциям (стнам) будет эффективен только в идеальных условиях (пустое помещение). Почитайте про те самые пылесосы, они даже не пытаются точно позиционироваться, хаотично носятся шарахаясь обо всё подря (т.е. аккуратно объезжают). А на базу возвращаются по ИК маяку (вероятно), т.к. это единственный датчик абсолютного позиционирования (хотя возможно уже и распознание образов с видеокамеры начали запихивать)
Еще очень смущает как программно реализовать "неподвижные стены".
Я сейчас думаю в каких координатах строить карту. Очевидно что проще в полярных, если используется радар (сонар или ик). Есть ли смысл потом переходить в декартовы координаты.
И другой мучающий меня вопрос, стоит ли строить "полную" карту местности или ограничится радиусом радара.
Кто сталкивался с такими дилемами, как для себя решали?
я бы предложил для начала попробовать реализовать:
1) черная полоса и датчик полосы
2) баркода по всей площади
И еще вариант - по принципу мокап (motion capture). Что бы не ардуино определял свое местоположение а камеры или иксенсоры определяли положение ардуины.
а еще вариант,использовать за основу обычную лазерную мышку,правда вот клиренс будет низковат и не понятно как будет себя вести датчик на стыках у плитки(если есть) и плохо(рассеивающе) отражающей поверхости.так же где то видел статью о реализации бар-код считывателя на основе той же мышки))
Года 2 назад читал, что используют инфракрасные метки на потолке для определения местоположения робо-пылесоса.
Типа ориентирования по звездам? Навешать на потолок несколько ИК излучателей и заниматься триангуляцией. Это действительно оригинально.
Эээ, по-моему, в вопросе фигурировал не летающий робот, т.е он всегда почти горизонтален (ну ведь не в Пизанской башне человек живет). И теперь скажите, КАК может быть ускорение по вертикальной оси 0.5? То, что вы описали, возможно, если аксель наклонен на какой-то угол и движется с ускорением. Но он-то горизонтален.
Вот пример программы, которая может определять координаты. Но только если движение робота будет происходит вперед-назад-повороты и не будет движения вбок. Если есть движение и в бок, то нужен 2-осевой аксель, одна ось - по напр. движению, другая - перпендикулярна ему.
mixail844, тогда уж лучше шариковую. Я как-то тоже так хотел сделать для робота, использовать вместо 3-его колеса, но получилось тяжело и движки не справились.
Акселеромтр на оси X - ноль
акселерометр кривой, в состоянии покоя должна быть единица по z, т.е. 1g земного притяжения
Эээ, по-моему, в вопросе фигурировал не летающий робот, т.е он всегда почти горизонтален (ну ведь не в Пизанской башне человек живет). И теперь скажите, КАК может быть ускорение по вертикальной оси 0.5? То, что вы описали, возможно, если аксель наклонен на какой-то угол и движется с ускорением. Но он-то горизонтален.
Если вы почитаете внимателней ,то я говорил что "только по акселерометрам" - в ОБЩЕМ случае сказать не возможно. Вы ввели доп. ограничения потом взяли мой пример который я приводил как "для задачи в общем виде" и пытаетесь доказать что "задача решаема". Так я тоже сразу об этом говорил
А узнать вектор вы можете получить только либо взяв дополнительные датчики (вращения, гироскоп), либо наложив дополнительные условия на задачу. Сделать их константами (пол идеально горизонтальный, перекосов наклонов от подвески - не бывает и т.п.).
P.S. Про баркоды на полу, маячки, наблюдение со стороны (мошин капчур) - тоже все описывал. потом, зачем-то, это начали предлагать по второму кругу.
Типа ориентирования по звездам? Навешать на потолок несколько ИК излучателей и заниматься триангуляцией. Это действительно оригинально.
Не ИК излучатели, а метки спец карандашом невидимым глазом. Типа как в Угнать за 60 секунд.
"ИК метки" - т.е. распознание образов? в одном углу крестик, в другом кружок и т.п.?
Углы можно и знаками пометить. А движение скажем из кухни в комнату пометить линией. Где необходимо уменьшение скорости- поставить соотвествующие на на линии.
Ребят, не в курсе, если на роботе в лесу использовать электромагнитный компас, будет ли его хватать для сохранения направления движения после обхода какого-то объекта? Пусть даже траектория до и после будет параллельна, главное двигаться в том же направлении. В идеале конечно выйти на ту же траекторию, но совсем не представляю, как это возможно. Сильных помех и наводок не должно быть, кроме как от самого робота. Единственное из-за неровного рельефа возможны наклоны и крены. Это тоже наверное скажется на показаниях сенсора. Еще наверное гироскоп можно поставить..