GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.2 (7)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Домашний робот, полигон и игровые алгоритмы
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 3:45
Цитата:
Автор: daner
с удовольствием отвечу на ваши вопросы. только общий курс по робототехники устраивать не буду. так что спрашивайте ***конкретно***.
...

Примерно понял, спасибо...

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

Если я правильно понял, мне нужно для начала отработать на листочке и составить формулы для расчета всей механики бота и особенно его поворотной части(перемещение "по дугам"), а только потом подавать мои формулы на вход графа при заполнении решеток.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 6:14
Цитата:
Автор: Tester64
Если я правильно понял, мне нужно для начала отработать на листочке и составить формулы для расчета всей механики бота и особенно его поворотной части(перемещение "по дугам"), а только потом подавать мои формулы на вход графа при заполнении решеток.


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

задача добраться от точки А в точку Б, в основном делится на следуюшиe этапы:
1. конвертировать карту в граф
2. найти путь в графе от узла соответ. точке А к узлу соответ. точке Б
3. получить список точек перемешeния в координатах карты ( из найденного пути на графе).
4. двигаться от точки к точке (по прямой) пока не попадете в район точки Б

Каждый из этих этапов можно делать разными способами.

Собственно этими 4-мя этапами описываeться далеко не только навигация в пространстве. Практически это ядро цикла принятия решения агента планирующего свой действия. Добавьте сюда возможность оценивать качество/выгоду своих действий + определят на сколько текущий план соответствует реальности + коррекция карты (т.е. модели мира в котором находится робот) в соответствии с наблюдаемыми фактами и вы получите: адаптивного, не реактивного (т.е. планирующего), рационального, целеустремленного, автономного агента/робота .
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 9:30
Цитата:
механику робота вам нужно в первую очередь для того движка который вы пишите (вы же не хотите пользоваться уже готовыми инструментами )
Механика робота достаточно простая и описывается относительно простыми формулами из области тригонометрии (с трудом вспоминал школу). Не нашел ни одного инструмента который дает мне это, но не забирает автономности моей системы и возможности превратить полигон в некое подобие игрушки-скринсейвера для отладки без открыва от основной работы.

Цитата:
задача добраться от точки А в точку Б, в основном делится на следуюшиe этапы:
Примерно понял... Звучит просто... Но...
1,2,3) Мой бот - аналоговый (относительно конечно). Поворот "руля" указывается в дробных угла, скорость тоже дробная, как и время пробега без изменения угла. С любой точки можно поехать назад(как в автомобиле). Разброс в характеристиках описывается десятками или даже сотнями коомбинациями. Матрица возможных треков напоминает многослойную градиентарную окраску поверхности. С любой точки трека можно поехать назад.

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

Пока карта "статическая"(препятсвия не двигаются) можно сначала составить полный трек, по которому бот (согласно №4) спокойно пройдет в точку. Учитывая что бот - виртуальный, то ошибку при следовании по треку можно пока не учитывать.

Как оптимизировать маршрут в реальном времени на обычном комьютере, а не загружать коомбинациями небольшую стойку серверов?

Одной из мыслей, которые я сейчас отрабатываю - это
1) при помощи математики получить радиус необходимый для попадания в определенную точку
2) запустить многопоточный анализатор коомобинаций деления треков соединяющих начало и конец на точки останова так, чтобы обойти все препядствия. Карта разбивается на большие квадраты и пытаюсь не повторять не удачные треки в одних и тех-же квадратах.
3) Ввожу коефициент "удачности" как близкость к границам препядствий (изнутри) и в идеале "снаружи препядствия". Второй коефициент - длина маршрута - для сортировки удачных маршрутов в поисках оптимального
4) В удачных маршрутах можно раздробить на более мелкие квадраты точки приостановки

Дорисовал в паинте (немного криво, но вроде наглядно):
[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 9:55
Цитата:
Автор: Tester64
Примерно понял... Звучит просто... Но...
.....


не, видимо не поняли.
оставьте все эти повороты и прочую фигню.
дескретизируте пространство (решеткой), дальше ищите путь как по шахматной доске (А*). когда получите точки следования (ячейки) на решетки будете переходить от одной точки к другой (уже не дискретно). точно попадать на точку не нужно, главное приблизиться на достаточное расстояние.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 10:01
Я бы расширил препятствия на толщину робота, по оставшимся пикслам можно двигаться. Проводим прямую, где она натыкается н расширенное препятствие делаем ветвление влево-вправо, проверяем оба варианта. Сдвигаемся на пиксел в сторону и опять проводим прямую до конечной точки.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 10:21
Цитата:
Автор: NO.
Я бы расширил препятствия на толщину робота


это само собой разумеется. только не на толщину, а на половину толщины (т.е. на радиус)
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 11:10
Цитата:
Я бы расширил препятствия на толщину робота, по оставшимся пикслам можно двигаться. Проводим прямую, где она натыкается н расширенное препятствие делаем ветвление влево-вправо, проверяем оба варианта. Сдвигаемся на пиксел в сторону и опять проводим прямую до конечной точки.
В конец запутали!
У меня АНАЛОГОВЫЙ полигон, квадраты на схеме шириной 0.5 метра (для понимания навигации). Бот может поворачиваться на любой угол в пределах от -40 до 40 градусов с дробностью до 8 знаков (тип Real в Delphi). В таких-же пределах и скорость - в дробях до 8 знаков метра в такт, где 3-10 тактов в секунду (в среднем 5-25 см в секунду). Препядствия (подражая реалу) пытался сделать в кирпич толщиной. Если стена представляет собой лежащую трубу или железный лист то толщина на карте будет почти нулевой и будет видна просто как линия.

Пока полигон примитивный - для простых алгоритмов, но в иделе можно нарисовать хоть 5 комнатную квартиру с кухней и туалетом или загроможденный мусором/коробками гигантский однокомнатный склад. Или даже наклонный спуск/подьем на другой этаж. Или поездку в лифте.

Или речь идет о квадратах на которые стоит разбивать пол для ускорения отсеивания неучачных "виражей"?
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 12:27
Ну и зачем нужна такая точность?
На моей планете прессформы для пластмассы делаются с точностью фрезеровального станка - 0,01мм. Потом предмет такого размера при небольших перепадах температуры будет менять размер на пару миллиметров. Итого из 8 знаков 5 будут хранить какой-то АНАЛОГОВЫЙ мусор.
[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 12:48
Цитата:
Автор: Tester64
Или речь идет о квадратах на которые стоит разбивать пол для ускорения отсеивания....


вот о них речь и идет.
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 12:57
Real вообще экзотика, я последний раз использовал на 286 машинах без сопроцессора, году так в 92.
"Тип Real, как уже упоминалось, стоит особняком. Во-первых, в нём используется другой порядок следования битов, а, во-вторых, не используется денормализованная форма. Я не стал детально разбираться с типом Real, потому что сейчас это нужно разве что историкам, но никак не программистам."
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374&mode=print
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 13:30
Цитата:
Real вообще экзотика...
Спасибо за статью... часто натыкался на подобные ошибки, округление и не использование точного сравнения решало проблему. Но мне и самому не нужна такая точность - просто нужны были дроби. А результаты либо сравниваются на больше/меньше (не равно), либо идут параметрами в формулы(sin/cos/round/trunc), либо выводятся в округленном до понятного (метрах/сантиметрах) виде.

По идее, точности в милиметр (0.001 метра) мне должно хватить при боте длиной в 0.3-0.5 метра! Когда-то просчитывал, что в реале меньше возможно только на радиоуправлении или на прошитых чипах с облегченным акуммулятором, а больше уже не удобно.

А какой тип Вы бы посоветовали как альтернативу?
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 14:22
http://ru.wikipedia.org/wiki/Двоичное_разбиение_пространства
[Ответ][Цитата]
NO.
Сообщений: 10700
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 19 дек 12 16:22
Алгоритмы поиска пути
http://pmg.org.ru/ai/stout.htm
[Ответ][Цитата]
Fractaler
Сообщений: 2490
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 20 дек 12 7:58
Цитата:
Автор: Tester64

А вычислять оптимальную траекторию "полёта", её корректировка планируется на внешнем процессоре (Wi-Fi и т.п., +внешние видеокамеры с обратной связью для корректировки маршрута) или это будет "улитка" ("мы не ищем лёгких путей, нужно быть ко всему готовым, всё своё носим с собой!")?
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 20 дек 12 13:05
Цитата:
Автор: Fractaler
В идеале это будет именно "улитка", но "социальная"

Когда-то (года 2-3 назад) просчитывал необходимое для подобного робота. Остановился на том что проще встроить полноценный субноут(ноут, планшет, мини-комп) и положить туда ВСЮ логику - с каждым годом они становятся сильнее и дешевле. А через WiFi сделать только:
-дистанционное вмешательство в программу (доработка "на ходу", указание на ошибки, подтверждение успешного обучения),
-ускорение сложной логики за счет включенного домашнего компа(иногда выключаю) или домашнего сервера(файлового или медиа-центра), или подключение к облаку.
-передачу команд с "пульта" (умный дом приказал..., на WiFi пульте нажали кнопку...).
-"ручное" упрвление ботом через интернет(с домашней странички или с мобилки).

Но это не скоро! По моим расчетам подобная "машинка" мне обойдеся в реале не меньше 800-1500$ (без дорогих датчиков и стоимости разработки основной управляющей микросхемы). И даже когда(и если) его сделаю/куплю, то не знаю до конца куда его можно применить без программ логики управления. Поэтому и решил для упрощения разработки сначала УБРАТЬ из логики полигона "видеокамеры с обратной связью" и дать АБСОЛЮТНОЕ знание своей позиции и окружающей обстановки.

Хотя и это (видеокамеры) у меня запланировано. Мой полигон написан на OpenGL, причем УЖЕ использую 3D схему, на которую смотрю сверху. А значит, если более детально отрисовать обьекты (шкафы, ковры, кресла, столы, обои на стенах, окна, двери) то можно получать кадры для видокамеры с любой точки комнаты - хоть с крышки бота, хоть с угла квартиры, хоть с люстры. Так-же можно сэмулировать данные как для датчика движения, так и для инфракрасной, лазерного, ультразвукового, кинекта...

[Ответ][Цитата]
 Стр.2 (7)1  [2]  3  4  5  6  7<< < Пред. | След. > >>