GotAI.NET

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

 

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

 Все темы | Новая тема Стр.1 (7)След. > >>   Поиск:  
 Автор Тема: Домашний робот, полигон и игровые алгоритмы
Tester64
Сообщений: 1910
Домашний робот, полигон и игровые алгоритмы
Добавлено: 10 дек 12 18:12
Пишу свой полигон для отладки алгоритмов в робототехнике. Решил начать с нуля и постепенно, и, главное, очень маленькими и продуманными шагами развивать своего бота(робота).

Давно мечтал завести себе такого в "реале", но как представлю сколько времени и финансов уйдет на его создание, руки опускаются. Поэтому решил создать "для начала" виртуальную среду похожую на ту, где этот бот бы "жил" и заняться пока ТОЛЬКО его алгоритмами. Причем для простоты стоит забыть о заряде акамулятора и внешних датчиках (видеокамеры, ультразвук, инфракрасные камеры, лазеры) - бот и так знает где он находится и что творится вокруг - есть детальная векторная карта в сантиметрах(долях метра хоть до микрон).

Бот представляет собой простую платформу на 4х колесах с двумя програмно-управляемыми двигателями (шаговыми или аналоговыми). У бота 2 колеса ведущие, а два (еще не решил) либо свободно вращающиеся, либо дублирующие для первых(как в гусеницах). Короче - обычная детская игрушка-машинка с двумя колесиками на двигателях или танчик.

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

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

Управлять можно ТОЛЬКО двигателями колес, задавая их "скорость/силу/мощность" и "направление вращения". Через простые формулы можно задавать сразу "угол поворота" и "общую скорость/силу/мощность" для всего бота (как в автомобиле).

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

Посоветуйте с какой стороны подойти к этим задачам! Понимаю что проблема имеет простое алгоримтическое (процедурное) решение и не требует использовать НА ЭТОМ этапе никаких сложных ИИ-наработок (вроде нейронные сетей). Подозреваю что это задача из области перебора коомбинаций из наиболее близких решений + поиск пути в лабиринте. Уверен что все это давно решено в большинстве игрушек вроде стратегий реального времени(сбор припасов), стрелялках или танчиках(для логики ботов-противников). Но я с подобными "игровыми" алгоритмами раньше не стыкался и не хочу вычитывать литературу с "похожими" названиями, но не имеющих никакого отношения к этой теме. Как и книги из серии "пишем игры" или "ИИ в играх" на 300-500 страниц со всеми возможными вариантами логики для описания поведения персонажей. В идеале распишите "своими словами" (а не давайте ссылки) на то как решаются подобные задачи в играх.

Для отладки алгоритмов планирую произвольным методом "кидать" цель и гараж и ожидать что в течении минуты бот найдет решение. Иногда можно произвольно менять начальное положение и угол бота. Можно делать запись всех его передвижений в это время и потом просматривать удачные или/и не удачные ходы для исправления/доработки алгоритма.

Полигон выполнен (под Windows) в виде простой утилитки с иконкой в области часов и маленьким "информационным" окошком поверх остальных с рисунком комнаты. Может сворачиваться не останавливаясь (что-бы не мешал работать). Может считать логику движений не отрисовывая графику (раз в 10-100 быстрее получается). Может работать как скринсейвер(если доведу, будет выглядеть подобно знаменитым аквариумам - глаз отдыхает). Писал на Delphi без использования API(кроме мелочей не относящися к самому полигону - скину форм, иконке в часах), а значит реально перевести на мультиплатформенный Lazarus (когда придумаю ответ на вопорос "зачем?"). Графику рисовал на чистом OpenGL(без движков), который тоже мультиплатформенный. На сегодня берет не больше 15-20%(в экономном 3-4%) на двух-ядерном процессоре, на компьютере который не выключается даже на ночь. Простор для отладчика...

P.S.
Заранее прошу не обсуждать здесь другие "полигоны", которые развиты лучше моего и имеют намного больше возможностей чем гонять прямоугольник внутри другого прямоугольника. Возможно они и могут работать в облаках, мультиплатформены и могут отрисовывать детально корпус 3D робота. У меня же были другие цели. В идеале я когда-нибудь сделаю реального домашнего бота своими руками и "залью" в него мою логику. А пока хочу создать работающий список "инструментов-рефлексов", которыми возможно когда-нибудь смогу оперировать - "пойди туда", "стань там и так", "подбери", "догони", "обойди/осмотри територию". Меня сейчас интересуют ТОЛЬКО алгоритмы для управления подобной "машинкой".

Так-же прошу не кидать сюда ссылки на готовые решения вроде библиотек Робо-зрения или игрвые движки где подобные решения уже встроены. Мне нужна ТОЛЬКО теория и принципы работы, на основе которых я смог бы "кодить" с НУЛЯ. Пусть у меня будет криво, медленно и с ошибками, но это должно быть моим - иначе я не пойму куда и как двигаться дальше. А так-же не хочется осознавать что мой бот - отличается от подобных только перестановкой готовых чужих модулей.

Еще прошу не обсуждать здесь принадлежность подобных задач к области ИИ. Задача - прикладная и к "разумности"/ИИ на ЭТОМ этапе не имеет никакого отношения.
[Ответ][Цитата]
Андрей
Сообщений: 3943
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 10 дек 12 23:24
Цитата:
Автор: Tester64
С ходовой пока не разобрался из-за сложности расчета математики влияния "сопротивления покрытия пола" на угол поворота.
Вот и сделайте это первой задачей, которую будет решать Ваш ИИ, а не Вы!
Привычка решать все задачи самому - это худшая привычка строителя ИИ.
Строителю ИИ самостоятельно необходимо решить только одну единственную инженерную задачу - создать механизм, обучающийся решать задачи. Всё! Все остальные задачи он должен решить сам так, как это делает человек - обучаясь сначала тому "как правильно" и потом обучаясь "правильно" подгонять своё тело и окружение из состояния "то, что есть" в состояние "как правильно".

Цитата:
Автор: Tester64
Еще прошу не обсуждать здесь принадлежность подобных задач к области ИИ.
Ну тогда Вам, простите, на другой форум.
[Ответ][Цитата]
Вольфрамовый клaпaн
Сообщений: 13070
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 10 дек 12 23:47
Tester64, спросите Андрея, сколько ИИ (и всего прочего) он построил и не обращайте внимания на его слова, ибо ни одного...
[Ответ][Цитата]
Fractaler
Сообщений: 2490
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 1:21
Про некоторые алгоритмы (для ЛегоРобот в КуМире, на Ubuntu) вроде как можно у Anatoly Levenchuk выпытать, судя по его ссылкам
http://ailev.livejournal.com/1039665.html
http://ailev.livejournal.com/1042608.html
http://ailev.livejournal.com/1034484.html

tassadar-ha упоминает про RL - алгоритм адаптивного контроля, который позволяет управлять системой (машиной), не зная закономерностей ее работы - http://tassadar-ha.livejournal.com/215700.html
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 5:08
Цитата:
Автор: Андрей
Вот и сделайте это первой задачей, которую будет решать Ваш ИИ, а не Вы!
Привычка решать все задачи самому - это худшая привычка строителя ИИ.
...Ну тогда Вам, простите, на другой форум.

В этот раз я с Вами полностью НЕ согласен! Я пишу СВОЕГО бота и придумываю ему физику близкую к оригиналу. У вас тяжелая(центр тяжести, инерция) платформа на 4 колесах. Два задних колеса - "ведущие". Одно толкает вперед, второе тянет назад с одинаковой силой. КУДА поедет платформа? ИИ ничего не знает о физике, и не имеет доступ к экспериментам в реале. Куда приклеивать алгоритмы ИИ? Придумываю ОБЫЧНЫЕ математические формулы... Вы можете силой своего разума поменять ограничения Вашего локтя и выгнуть руку назад? "Математика влияния "сопротивления покрытия пола" на угол поворота" - это ФИЗИКА(константа) к которой ИИ может разве-что приспособится и воспользовать, но не поменять.

2Fractaler
Все немного не то.
Мне не нужен адаптивный контроль
Мне нужно, двигаясь по серии изогнутых по любым углам (в пределах доступного разброса или по прямой) контуру попасть в определенную точку полигона.
У изогнутых произвольный угол и длина, можно поменять направление движения(назад)
Рисую впереди и сзади несколько "тунелей" из образов машинки и пробую "ощупывать" местность на препядствия, но это крайне медленный и не продуктивный алгоритм.
Простой лабиринт здесь не подходит - я не прыгаю по линиям между точками, мне нужно еще и пространство для "развернуться"
[Ответ][Цитата]
Fractaler
Сообщений: 2490
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 5:40
Цитата:
Автор: Tester64

Перемещение как у крылатых ракет - по заданной траектории?
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 6:33
вообще, сходство явно прослеживается
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 7:11
Цитата:
Перемещение как у крылатых ракет - по заданной траектории?

Действительно есть сходство - тоже работа с изогнутыми. Но
1) работаем в 2D (упрощается алгоритм)
2) пространство для разворота ограничено (усложнение)
3) можно "летать" задом (расширение возможностей)
4) работа со сложным ланшафтом - "полет" по лабиринту
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 9:00

Пока что идет "ощупывание" траектории всеми возможными положениями бота, но может есть какой-нибудь способ упростить и ускорить этот процесс. Невероятно долго если нужно пройти через несколько комнат.
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 9:27
Была красивая процедура, сочетающая прослеживание границ со случайным поиском
Попробую найти ссылку
Давно это было
[Ответ][Цитата]
Fractaler
Сообщений: 2490
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 11 дек 12 23:53
Цитата:
Автор: Tester64
Пока что идет "ощупывание" траектории всеми возможными положениями бота, но может есть какой-нибудь способ упростить и ускорить этот процесс. Невероятно долго если нужно пройти через несколько комнат.

См. методы оптимизации, алгоритмы
[Ответ][Цитата]
Slava
Сообщений: 3070
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 12 дек 12 3:56
Цитата:
Автор: Slava

Была красивая процедура, сочетающая прослеживание границ со случайным поиском
Попробую найти ссылку
Давно это было


Вот, кое-что нашел, поробуйте поглядеть

http://opac.mpei.ru/notices/index/IdNotice:20353/Source:default
Диссертация
Автор: Вайнштейн Г. Г.
Исследование некоторых характеристик систем следящей развертки и возможностей применения этих сис...: Диссертация кандидата технических наук
1968 г.
ISBN отсутствует

Вайнштейн, Г. Г.
Исследование некоторых характеристик систем следящей развертки и возможностей применения этих систем для передачи контурных изображений : Диссертация кандидата технических наук / Г. Г. Вайнштейн, Моск. энерг. ин-т (МЭИ) . – 1968 . – 193 с. : Прил.: Автореферат . – На рус. яз.
УДК 621.397.3.004.1.001.5(043.3)

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

http://books.google.ru/books/about/%D0%98%D0%BA%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0.html?id=sH5lHQAACAAJ&redir_esc=y
Иконика: цифровая голография : обработка изображений
Д. С. Лебедев, Г. Г. Вайнштейн
Институт проблем передачи информации (Академия наук СССР)
Наука, 1975, 149 pages, Holography, Optical data processing, Optical images


[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 14 дек 12 11:22
вы не там ищите. такие задачи если и попадаются в играх, то черезвычаыно редко (я о таких даже не слышал). Это область работотэники.
Ваши задачи (обе) полностью попадают под раздел "планирование пути" (т.е. path planning ) есть куча готовых решиний , принципов и открытых проблем.
ваши задачи одни из самых простых. я бы посоветовал использовать тривиальный А* (для начала), он точно решить задачу как в первом так и во втором случае. Если решение для вас будет недостаточно "красивым", используйте "поля потенциалов" (с ними несколько сложнее, больше вариаций и т.д. но решение будет симпатичнее). Если и это будет не достаточно (скажем вам потребуются быть уверенным в курватурах поворотов и все такое...) тогда продолжайте копать литературу дальше (но копать все равно в области path planning)
[Ответ][Цитата]
Tester64
Сообщений: 1910
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 16 дек 12 1:45
Цитата:
вы не там ищите.
Наконец-то ответ который я ждал... Увы, я никогда не стыкался с робототехникой до этого. Можете подкинуть несколько советов или хотя-бы литературу
Пока нашел только http://code.google.com/p/jianwikis/wiki/AStarAlgorithmForPathPlanning
и
http://en.wikipedia.org/wiki/A*_search_algorithm
но так и не понял как подобное можно применить к моему случаю?
[Ответ][Цитата]
daner
Сообщений: 4593
На: Домашний робот, полигон и игровые алгоритмы
Добавлено: 18 дек 12 10:17
Цитата:
Автор: Tester64

Наконец-то ответ который я ждал... Увы, я никогда не стыкался с робототехникой до этого. Можете подкинуть несколько советов или хотя-бы литературу
Пока нашел только http://code.google.com/p/jianwikis/wiki/AStarAlgorithmForPathPlanning
и
http://en.wikipedia.org/wiki/A*_search_algorithm
но так и не понял как подобное можно применить к моему случаю?


с удовольствием отвечу на ваши вопросы. только общий курс по робототехники устраивать не буду. так что спрашивайте ***конкретно***.

ваш последний вопрос не совсем понял.
как А* применить в вашем случае? для первой задачи, это просто классический вариант на котором обычно А* как раз и объясняют (т.е. накладиваете на вашу карту "решотку", каждая ичейка это узел графа, она соеденина с соседями и дальше применяете А* на этот граф).
для второй задачи, несколько сложнее (узлы графа, не просто ячейки решетки, а состояния (возможно из-за большого кол-ва обобщенные) робота. И ищется состояние в котором робот уже припаркован.
[Ответ][Цитата]
 Стр.1 (7): [1]  2  3  4  5  ...  7След. > >>