![]() |
![]() |
#1 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Сегодня появилось свободное время и я модифицировал волновой алгоритм поиска кратчайшего пути
Для чего я его модифицировал? Дело в том что, волновой алгоритм прокладывает путь по кратчайшему расстоянию , то есть рисует диагональные линии под разными углами Такой маршрут для навигации робота будет просто кошмаром Роботу для движения по помещению желательно двигаться параллельно стенам. Двигаясь параллельно стене робот может контролировать свое положение с помощью атчиков расстояния или сонаром, с диагоналями все гораздо сложнее При помощи этой утилиты робот сможет найти выход из любого лабиринта. Осталось только научить его двигаться по этому маршруту ![]() Карта предложенная мной роботу. 0-препятствия 1-свободно(нет препятствий) Код:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5-путь проложенный роботом |
![]() |
![]() |
![]() |
#2 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Очень интересно. А где код для Ардуино посмотреть?
|
![]() |
![]() |
![]() |
#3 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Эта утилита написана для роутера с CyberWrt, хотя при желании можно и на ардуину портировать
P.S. Оперативки у ардуины не хватит Если только для маленьких карт максимум 20х20 |
![]() |
![]() |
![]() |
#4 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
У меня - хватит. Темку про доп. память к Ардуино, надеюсь помните?
![]() |
![]() |
![]() |
![]() |
#5 |
Junior Member
Регистрация: 27.10.2014
Сообщений: 26
Вес репутации: 0 ![]() |
![]()
Admin то что нужно! Именно так я и представлял' подскажи где почитать про саму логику алгоритма? Буду пробовать сам это описать в ардуино "индусским кодом"
![]() |
![]() |
![]() |
![]() |
#7 |
Member
Регистрация: 17.01.2013
Сообщений: 34
Вес репутации: 0 ![]() |
![]()
Как предложение-запоминание пройденого пути по импульсам энкодеров,пишем кол.-во импульсов,по завершении цикла,читаем память и едем на базу.
|
![]() |
![]() |
![]() |
#8 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Одними энкодерами на обойтись. Пробуксовки, погрешность угла поворота и прочие тонкости, приведут к большому отклонению от маршрута
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Регистрация: 14.06.2015
Адрес: СССР
Сообщений: 122
Вес репутации: 0 ![]() |
![]()
Да. Нужно регулярное повторное сканирование пространства и совмещение карты препятствий со свежеполученными данными для уточнения собственного положения тележки.
|
![]() |
![]() |
![]() |
#10 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9824 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]()
Сканировать карту квартиры каждый раз не обьязательно
Можно все упростить Представьте что человеку показали приблизительную карту неизвестного ему помещения(без размеров) и цель на этой карте Потом завязали ему глаза, завели в это помещение и еще для надежности покрутили во все стороны. Для поиска конечной точки маршрута человек сначала: 1 - нащупает ближайшую стену 2 - найдет ориентир, например проем в стене расположенный близко к углу или угол стены не стандартный и т.д. 3 - начнет движение в сторону конечной точки, нащупывая стены Для данной задачи не нужны дальномеры, гироскопы, акселерометры, магнитометры, энкодеры и прочие датчики, достаточно только зарядную станцию с ИК маяком и круговой ИК бампер. Карту можно нарисовать в ручную, приблизительную, без расстояний Я по этой причине и алгоритм прокладки маршрута адаптировал, что бы он прокладывался по стенам, а не по кротчайшему пути |
![]() |
![]() |
![]() |
Метки |
робот навигация |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|