Как загрузить карту помещения в контроллер Arduino

Тема в разделе "Arduino & Shields", создана пользователем Den1975, 21 мар 2014.

  1. Den1975

    Den1975 Нерд

    Заинтересовался можно ли сделать несложную систему с удаленным в пределах 30-50 метров доступом (в прямой видимости).

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

    При этом в память робота должна быть загружена карта помещения

    Далее передать с компа по WiFI данные в контроллер роботележки, чтобы он, вычислив свои координаты и приняв полученные, отправился в точку Б .
    После переезда в точку Б роботележка должна автоматически вернуться в точку А.
    Да, в любой точке движения робот должен передавать свои текущие координаты в компьютерную программу или программу на Android.

    Это для начала (голова от идей разрывается - все так интересно)
    Далее хотел бы добавить в программу на компе или Android устройстве расписание движения от точки А до точки Б и чтобы все это система отслеживала в автоматическом режиме.
    Ну и в итоге тележка должна по расписанию двигаться от точки А до точки Б (с введенными для нее координатами).


    Что вижу для себя:
    Имею дома WIFI сеть Билайн.
    Думаю, что для реализации в железе нужно приобрести роутер MR3020 и использовать его как WEB сервер для Ардуино.
    Признаюсь - люблю читать занимательные статьи на форуме и в инете и в принципе можно реализовать, но глубокими познаниями к сожалению еще не оброс.

    Прошу совета у тех, кто "съел собаку" и уже делал что то подобное:

    -в части подключения роутера к ардуино и его настройке для работы с домашней WI FI сетью;

    -в части какую простенькую программку для реализации идеи можно использовать на компе под управлением Windows или на samsung Android устройстве;

    -что из железа мне еще может потребоваться для полного счастья и реализации задумки
    У меня есть Arduino Mega, роботележка с двумя моторами, моторшилд, УЗ сонар, датчики линии. Все это в банальном варианте самодвижущейся телеги с определением препятствий на пути работает. Также есть Трёхосный компас на базе чипа Honeywell HMC5883L (хотел поэкспериментировать с ним в ближайшее время подключив к уже имеющейся роботележки), WiFi Bee — модуль беспроводной связи на базе трансивера Microchip MRF24WB0MA и встроенного микроконтроллера ATmega328p.
    Полагаю, что для реализации проекта по идее нужно приобрести Модуль GPS Bee - для вычисления текущих координат (хотя GPS в помещении не работает).
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    GPS даст погрешность несколько метров даже на открытой местности в идеальных условиях.
    Я как раз сегодня тестировал GPS-ГЛОНАСС приемник, который будет установлен на спутник. Антенна находилась на крыше здания, работал совмещенный режим. Погрешность была 3-4 метра.
     
  3. Den1975

    Den1975 Нерд

    Да, это правда. Идеальных устройств нет.
    Вопрос - а как пылесосы строят карту помещения ?
    Но хотелось бы создать и просто загрузить ее в контроллер.
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

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

    Создать карту можно в виде обычного двумерного массива.
    Например, вот карта помещения, ограниченного стенами с одним препятствием в центре
    Код (Text):
    1111111111
    1000000001
    1000110001
    1000000001
    1111111111
     
  5. NR55RU

    NR55RU Гик

    В теме самостяотельного передвижения тележки из точки А точку Б есть только одна проблема.
    Определение местоположения тележки, без решения этой проблемы все остальное уже не важно.
    На тему GPS Мегакотейка уже сказал, а ему в этом вопросе можно верить, он в теме :)
    Я тоже теоретически не однократно думал о том как определять место положении телеги.
    Есть несколько на мой взгляд общих идей.

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

    2. Научить тележку знать направление своего движения и скорость движения, тогда мы можем вычислять куда она переместилась. Чем точнее будут данные тем точнее будем знать где она. Из минусов тут лишь то что тележка должна всегда стартовать с некой точной позиции и любая кошка поталкавшая тележку пока она не активна может заставить ее удивится тому почему она стукнулась лбом там где ничего нет :)
    В итоге идея только на расчетном местоположении хороша лишь в лабораторной среде :)

    3. А вот это уже из уровня мастер-класса. Научить телегу сканировать пространство составляя карту окружения, и определять себя относительно этого пространства, тут просто дико сложная математическая работа и похоже это уже будет примерно на тот как определяет свое местоположение человек, конечно тут полно проблем которые тележке не решить, например час назад она проскандировала обстановку а тут бац появился стул, пространство не совпадет а определить часть пространства что совпадает а часть что изменилось это еще та работенка ... НО ... как то смотрел весьма интересную передачу о гонках автоматических машин.
    То есть суть была в том что машины сами (настоящие машины, в о основном были джипы) должны были в какой-то там почти пустыми по пустынной дороге проехать из точки А в точку Б по дороге (кажется чет около 100км), там сканерами машины были обвешаны как елка игрушками, они строили 3Д карту пространства спереди машины и по ней дикими алгоритмами определяли границы дороги.
    В общем там целые группы ребят из M.I.T и прочих не скучных универов работали над проектами.

    P.s. Из десятка машин до финиша доехали то ли 2 то ли 3, остальные "потерялись" по дороге, некоторые потерялись уже на старте :)
     
    Последнее редактирование: 22 мар 2014
  6. Den1975

    Den1975 Нерд

    Я рассматриваю задачу, чтобы задавать координату в которую нужно ехать как это мы все делаем на GPS навигаторе и робот ехал туда куда ему укажут. Но поскольку GPS не работает в помещении, то крепко задумася как это сделать. Можно установить в помещении фиксированные маяки и робот при движении будет их периодически определять, сравнивая пройденное расстояние от базы (фиксированная точка) до маяка, потом следующего маяка.
    Не знаю, может быть маяки представить через RFID пассивные метки, а в роботе установить RFID считыватель. И так код за кодом. То есть периметр помещения задать кодами меток.
    наверное бредовая идея, но кто знает.
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Придется очень много меток ставить.
    Вариант с графическими метками на полу не рассматриваете?
     
  8. Megakoteyka

    Megakoteyka Оракул Модератор

    http://ru.wikipedia.org/wiki/DARPA_Grand_Challenge
    Так что не все так плохо в этом направлении :)
    Google вот активно занимается беспилотными автомобилями и что-то мне подсказывает, что все у них получится (в техническом плане).
    У Volvo по этому поводу тоже есть интересные мысли.

    А вот что происходило 15 ноября 1988 г, когда компьютеры были большими, а программы маленькими:
    Источник.

    NR55RU, Вам наверняка будет интересен данный сайт ;)
     
  9. Megakoteyka

    Megakoteyka Оракул Модератор

    Гироскоп+акселерометр образуют инерциальную систему навигации. Такая система обязательно будет накапливать ошибку, так что нужно как-то ее сбрасывать время от времени.

    Я сам уже давно думаю, как определить точные координаты робота в помещении без рисования сетки на полу и прочей порчи имущества - пока ничего толкового не придумал. Хочется красивого, изящного решения :)
     
  10. geher

    geher Гуру

    Метки на потолке. А именно люстра, светильники, лепнина, периметр потолка. Если потолок не виден, двигаться по счислению или попытаться выполнить алгоритм по выезду на свободное пространство с обходом препятствий.
     
  11. geher

    geher Гуру

    Там над выбором маршрута не микроконтроллеры трудятся, а серьезные многопроцессорные ЭВМ.
     
  12. Megakoteyka

    Megakoteyka Оракул Модератор

    Распознавать контроллером люстру, светильники и лепнину, да еще и отличать их друг от друга - та еще задачка :) К тому же метки должны быть универсальными, иначе придется под каждое новое помещение прошивку переписывать.
     
  13. Den1975

    Den1975 Нерд

    Интереснейшая тема как оказалось. Графические метки на полу это интересно,
    но фактически то же движение по линии. Может на радиосигнал направлять ?
    Что имею ввиду - в помещение, куда должен доехать робот ставим передатчик радиосигнала. На роботе приемник. Допустим роботу нужно в такое то время выехать в какое то помещение. Подаем сигнал на передатчик установленный в помещение куда нужно ехать роботу. Робот воспринимает этот сигнал и движется на него по принципу поиска максимального уровня сигнала. алгоритм объезда препятствия на пути в принципе уже реализовал давно и считаю этот вопрос для Arduino не проблемой.
    Сейчас гляжу появилсь новая фишка Arduino-совместимая плата от Intel с 32-битным процессором класса Intel Pentium в магазине Амперка. Может ее использовать. Эта штука посерьезней будет чем Arduino Mega
     
  14. Den1975

    Den1975 Нерд

    А все таки давайте Arduino заставим выбирать маршрут если силенок у него хватит и у нас творческой мысли.
     
  15. geher

    geher Гуру

    Речь идет о том, чтобы разместить на указанных предметах на потолке и замаскировать в них некие маркеры, например, ИК излучатели или точечные светильники определенного цвета, в небольшом количестве. Можно попробовать сделать пару лазер-приемник и небольшие уголковые отражатели для более точного наведения на метки.
    Карта комнаты представлена в виде прямоугольника комнаты и прямоугольников предметов мебели.
    Поведение робота примерно такое.
    Очнулся в комнате. Пошарил по верху в поисках меток (тотальное сканирование верхней полусферы). Если нашел меньше трех меток, попытался выехать на открытое пространство. Если нашел три метки, вычислил свои координаты в комнате и текущее положение относительно сторон света (стен комнаты). Поехал по счислению. Если возникло неожиданное препятствие, попытался сориентироваться, как при включении. Если ошибка в координатах в пределах нормальной погрешности, объехал по алгоритму объезда препятствий.
    Конечно, это требует дополнительных затрат на активные метки. Да и не всегда такой подход применим, поскольку в комнате должна быть достаточно большая свободная площадь, с которой видно нужное количество меток. Точность определения будет небольшая, но всяко выше, чем у GPS. И недостаток точности можно компенсировать счислением, используя коррекцию при встрече с ожидаемым препятствием.

    Другой вариант, существенно более дорогостоящий. Если исходить из сообщений прессы, используется достаточно часто. В помещении развертывается наземная инфраструктура GPS и используется спрециализированный приемник.
     
    Последнее редактирование: 22 мар 2014
  16. Megakoteyka

    Megakoteyka Оракул Модератор

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

    Megakoteyka Оракул Модератор

    Задача поиска маршрута по карте легко решается на графах, я этим в универе на лабах занимался.
    Проблема не в выборе маршрута, а в определении собственного положения. Если робот будет знать свои координаты - проблема будет решена.
     
  18. Alexey0027

    Alexey0027 Нуб

    Добрый день. Уже написал свое предложение подобного решения выше, но повторюсь, может покритикуете. В общем аппарат ставим на пороге комнаты , он имеет ик сенсор , ультрозвук и инкодеры. Жимкаем кнопку , он считает это место точкой отправки. Далее робот УЗ промеряет от этой точки самое дальнее расстояние и делит его пополам , находит середину. Вся процедура выглядит так , в точке отправки , робот крутит головой с УЗ и создает массив, шаг поворота мы знаем, далее находим самое дальнее расстояние делим пополам , едем на вычисленную точку. Робот считает чт он нашел середину пути от точки старта до противоположной стороны. Далее от средины он делает новое измерение по кругу и ищет середину прямой перпендикулярной той по которой ехал прежде.И так далее. впринципе после первого скана на точке старта можно уже нарисовать периметр, соеденив координаты точек массива от первого -того что на угле ноль до последнего . Мы получим картинку периметра. А двигаться по инкодеру, сверяясь с массивом. Сам еще не попробовал, но думаю работать будет.
     
  19. NR55RU

    NR55RU Гик

    Мегакотейка, за ссылку спасибо :)
    Как только вы его найдете, думаю можно будет звонить в Гугл с вопросом как скоро они смогут подготовить ваш личный кабинет :)

    А вообще у меня была общая идея такого порядка, она конечно имеет ряд ограничений, но ...
    В общем следующие.
    Допустим возмем квартиру, как правило в сущности квартира имеет форму квадрта или прямоугольника, прсото внутри разбита на комнаты.
    Устаналиваем в 4 уга этого прямоугольника небольшие радиомодули.
    Каждый модуль имеет свой идентификатор, а данные по модулям и их местоположению на "карте" знает тележка. Сам модуль знает только свой ID и ему пофигу куда его положат, задача простая, получил сигнал проверил ID в сигнале если ID твой ответил, все.
    Тележка посылает "пинг" в эфир, его принимают все модули но отвечает только тот чей ID указан в пинге.
    По времени прохождения пинга тележка рассчитывает расстояние до модуля, дальше делает то же самое с другими модулями, зная расстояние до каждого и зная где они стоят на карте рассчитывает где она сама находится.

    Ну в общих чертах, как-то так :)
     
    Samedy091020 нравится это.
  20. Megakoteyka

    Megakoteyka Оракул Модератор

    Это GPS в отдельно взятом помещении получается :)
    Проблема только в том, что радиосигнал распространяется со скоростью света, не так-то просто точно измерить время его прохождения на масштабах порядка метров.