roboforum.ru

Технический форум по робототехнике.

Предлагаю присоединиться к проекту «Универсальный робот»

Предлагаю присоединиться к проекту «Универсальный робот»

Сергей Мальцев » 07 мар 2006, 18:28

Предлагаю присоединиться к созданию универсального робота.

Что значит универсальный робот? Это должен быть робот способный ориентироваться в любой обстановке, а так же способный распознавать различные объекты и манипулировать ими. В итоге этот робот может применяться для замены людей в рутинной и низко-квалифицированной работе, например: робот домохозяйка (способность делать уборку по дому, принести-унести, приготовить, погладить и т.п.), робот дворник, робот охранник, робот официант, робот грузчик, робот строитель (в определенных работах) и т.д. и т.п.

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

На начальном этапе (полагаю, что он будет самым длительным), всю работу в рамках данного проекта следует сосредоточить на создании программного обеспечения зрения робота. Поэтому изначально потребуется помощь программистов, но также приветствуются ценные советы по реализации зрения робота. Полагаю в будущем создать структурированный форум для поддержки этих начинаний, с обсуждением каждой проблемы в отдельном разделе.
В случае успешного завершения первого этапа понадобится создание реального робота, для этого потребуется полный спектр специалистов в робототехнике (механики, электронщики).

Само создание зрения робота предлагаю разделить на следующие этапы:
1)Создание системы 3D реконструкции по стереопаре, возможно поиск существующей свободной и открытой системы;
2)Создание системы навигации в произвольной обстановке;
3)Создание системы распознавания конкретных объектов, т.е., например: распознавание не всех столов, а конкретного, такого который робот уже ранее видел.
4)Создание системы распознавания классов объектов, т.е., например всех возможных столов (или, по крайне мере, большинства).
Последний этап не очень принципиален для создания первого рабочего прототипа универсального робота.
Свои соображения по конкретным подходам для реализации нужной функциональности начну публиковать в ближайшее время.

Создаваемое зрение робота можно будет испытывать на соревновании Mobile Robotics Software Challenge (если DARPA будет не против иностранцев :)), новость о котором была недавно на http://www.rorboclub.ru: http://www.roboclub.ru/news/newssport/2 ... i_562.html, или подобных соревнованиях.

В ближайшее время я собираюсь создать специализированный сайт, посвященный созданию универсального робота. Там будет описание текущего состояния проекта, текущих рассматриваемых технологий, а также уже рассмотренных технологий и подходов и причин, почему они приняты или нет. Еще там будет выше названный форум, исходники ПО (или ссылка на SourceForge) и тесты, на которых будет отрабатываться программное обеспечение универсального зрения робота.
Я с радостью приму помощь в создании этого сайта.

По крайней мере на начальном этапе создания ПО, для привлечения максимального количества заинтересованных, я предполагаю использовать open source модель для исходников, но в дальнейшем, возможен переход на закрытые исходники.
В проекте будет использоваться библиотека OpenCV. Изначально программирование будет вестись под Windows, но в дальнейшем я планирую перейти, либо на Linux, либо на многоплатформенность.

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

О себе:
Имею образования инженера-контруктора-механика, и программиста (ВМК МГУ). Полтора года работал в фирмах, разрабатывающих компьютерные игры. Сейчас занимаюсь разработкой ПО для телекоммуникационного оборудования. Какое-то время занимался разработкой ПО для робота футболиста. Разработал систему распознавания автомобильных номеров.

Контакты:
e-mail: maltseff@mail.ru
ICQ: 298262923

=DeaD= » 07 мар 2006, 21:17

Перечисленные вами вопросы влетают на ура в сферу моих интересов, да и подход к их решению и результатам тоже.

Мой проект в этой сфере:
http://club.roboclub.ru/pmwiki.php?page ... sion.Intro

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

Подробнее о проекте читать можно тут, хотя вводной особой тут нет:
http://forum.roboclub.ru/IPBoard/index.php?showforum=20
http://forum.roboclub.ru/IPBoard/index.php?showforum=28

И немного сразу по теме:
Сергей Мальцев писал(а):Что нужно для создания этого робота? Я считаю, что самым главным элементом (до сих пор не созданным) для такого робота является универсальное компьютерное зрение. Остальные элементы (механическая платформа, электронная платформа, поведение, перемещение, манипулирование, восприятие речевых команд) в том или ином виде уже реализованы во множестве проектов и особой проблемы не составляют, по крайней мере, как мне это видится сейчас.

В некоторой степени не согласен, что зрение это единственная проблема. Более того у меня есть ощущение, что желаемая вами система зрительного восприятия будет тесно переплетена с некими элементами или даже с полноценным ИИ.

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

PS: Еще одна достаточно сложная проблема - эффективное сохранение и использование информации полученной системой зрения - картографирование и поиск пути по полученной карте. Тоже еще та задачка.

Сергей Мальцев » 08 мар 2006, 15:41

Перечисленные вами вопросы влетают на ура в сферу моих интересов, да и подход к их решению и результатам тоже.


Мне было бы очень интересно сотрудничать с Вами.

Мой проект в этой сфере:
http://club.roboclub.ru/pmwiki.php?page ... sion.Intro


Интересный проект, во многом перекликается с моими соображениями. Но я предлагаю сразу замахнуться на ориентирование в произвольной обстановке без специальных маяков, так как задача с известными маяками не составляет особого труда. Задача состоит в том, чтобы научиться выделять в естественном окружении стабильные особенности, способные выступить маяками. Ими могут быть, например, выявленные с помощью детектора углов - углы, как с каждой световой компоненты, так и с карты глубины. Так же следует рассмотреть возможность выявления маяков из областей однородной закраски, или однородной текстуры. С помощью карты глубины можно выявить расстояние до маяка. В дальнейшем на сайте проекта, я планирую более подробно изложить все рассматриваемые мною подходы с иллюстрациями, это относится и ко всему ниже.
Что касается навигации по выявленным маякам, и локализации робота в пространстве, то тут уже все есть, за основу достаточно взять технологию как в GPS (Global Position System), т.е. искать точку пересечения сфер, построенных из маяка, радиусом равным расстоянию до соответствующего маяка. Единственное ограничение здесь, это наличие не менее 3 маяков, но в реальном окружении, как правило, присутствует множество элементов способных стать маяком.
Для выявления направления, после локализации робота, достаточно простого геометрического построения.
В свете вышесказанного, я считаю что на первом этапе следует сосредоточить внимание на 3D реконструкции сцены и научиться выявлять естественные маяки с изображения.

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


Это хорошая работа, но я считаю, что она несколько рановата. Для отработки алгоритмов зрения робота достаточно двух камер, закрепленных должным образом. А для начального этапа 3D реконструкции вообще достаточно ролика созданного с помощью, например, 3D Max. Для выявления маяков, достаточно отдельных кадров снятых одной камерой. Платформа робота для этих задач вещь избыточная, ведь на нее понадобиться потратить довольно много времени, но на решение поставленной первоначальной задачи это никак не повлияет. Я считаю, что всему должно быть свое время. Иначе мы можем потратить много времени на создание платформы, а главная задача так и не будет решена.
В общем я предлагаю, сначала сделать систему навигации на системе тестов, причем вполне реальных, с реальных камер. И только затем создавать платформу. А на следующем этапе перейти к созданию системы распознавания объектов, хотя и для нее нет необходимости создавать платформу, а достаточно тех же тестов.

В некоторой степени не согласен, что зрение это единственная проблема.


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

Электронная платформа это PC ? самое универсальное и доступное на данный момент решение. Главная причина выбора это возможность расширения различными специализированными PCI картами, такими как DSP карточки или цифро-аналоговые и аналого-цифровые преобразователи, в добавок, можно будет использовать многопроцессорные конфигурации. И еще один бонус, это развивающаяся сейчас многоядерность, пользу которой, думаю, не нужно доказывать. В общем, здесь тоже нет особых проблем.

Восприятие речевых команд можно решить с помощью недавно анонсированной IBM библиотеки.

Поведение робота тоже не нужно усложнять. Что должен делать робот? Перемещаться в пространстве и перемещать объекты, по заданным для него задачам. Это все решено в играх. Посмотрите на стратегии, там юниты занимаются именно тем же. Имея опыт в этой области, могу Вас заверить, что решение проблемы не составляет особого труда. Более развернутый ответ могу дать по необходимости.

Единственное, что я пока не до конца представляю ? это манипулирование объектами. Т.е. я пока толком не представлю, как робот должен решить за какую часть объекта он должен взяться, чтобы переместить его. Но первоначально можно считать, что правильные способы схвата объекта будет показывать человек.

Более того у меня есть ощущение, что желаемая вами система зрительного восприятия будет тесно переплетена с некими элементами или даже с полноценным ИИ.


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

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


Может Вы меня недопоняли, но я тоже предлагаю начать именно с этого, а затем перейти, на следующие задачи.

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


Как я уже написал выше, я считаю это преждевременным. Тем более что тесты будут вполне реальные, с реальных камер, поэтому решение задачи не имеет отношения к чистой теории. А вот платформа для первоначального решения задачи избыточна.

PS: Еще одна достаточно сложная проблема - эффективное сохранение и использование информации полученной системой зрения - картографирование и поиск пути по полученной карте. Тоже еще та задачка.


Честно говоря, по крайней мере, для целей навигации в помещениях с ровными полами, не вижу особых проблем в картографировании. Нужно взять регулярную решетку, или просто битовую маску, с определенным шагом. В этой маске значение 1 соответствует непроходимому участку, 0 проходимому. При первоначальной инициализации вся маска заполнена 0. По мере выявления препятствий с помощью стереозрения, и других датчиков, в маску заносятся 1 в местах препятсвий. Таким образом получаем маску проходимости. Для поиска пути по маске нужно использовать алгоритм A*. Все :)

Надеюсь, что у нас сможет получиться плодотворное сотрудничество.

=DeaD= » 08 мар 2006, 18:05

Сергей Мальцев писал(а):Но я предлагаю сразу замахнуться на ориентирование в произвольной обстановке без специальных маяков, так как задача с известными маяками не составляет особого труда.

Ну если бы у меня в портфолио лежала работа по распознаванию автономеров, то пожалуй я бы тоже сразу замахнулся на это :)

А так чтобы не стукнуться о непонимание простых вещей - решил сразу заняться более-менее реалистичной задачей, по ходу знакомясь со всеми техническими подробностями и технологиями.

Сергей Мальцев писал(а):Задача состоит в том, чтобы научиться выделять в естественном окружении стабильные особенности, способные выступить маяками. Ими могут быть, например, выявленные с помощью детектора углов - углы, как с каждой световой компоненты, так и с карты глубины. Так же следует рассмотреть возможность выявления маяков из областей однородной закраски, или однородной текстуры. С помощью карты глубины можно выявить расстояние до маяка. В дальнейшем на сайте проекта, я планирую более подробно изложить все рассматриваемые мною подходы с иллюстрациями, это относится и ко всему ниже.

Это у меня тоже есть в планах :)

Сергей Мальцев писал(а):Что касается навигации по выявленным маякам, и локализации робота в пространстве, то тут уже все есть, за основу достаточно взять технологию как в GPS (Global Position System), т.е. искать точку пересечения сфер, построенных из маяка, радиусом равным расстоянию до соответствующего маяка.

Спору нет, а если еще и маяки обладают направлением, то может быть и одного хватит.

Сергей Мальцев писал(а):В свете вышесказанного, я считаю что на первом этапе следует сосредоточить внимание на 3D реконструкции сцены и научиться выявлять естественные маяки с изображения.

Все в "+".

Сергей Мальцев писал(а):Это хорошая работа, но я считаю, что она несколько рановата. Для отработки алгоритмов зрения робота достаточно двух камер, закрепленных должным образом. А для начального этапа 3D реконструкции вообще достаточно ролика созданного с помощью, например, 3D Max.

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

Сергей Мальцев писал(а):Для выявления маяков, достаточно отдельных кадров снятых одной камерой. Платформа робота для этих задач вещь избыточная, ведь на нее понадобиться потратить довольно много времени, но на решение поставленной первоначальной задачи это никак не повлияет. Я считаю, что всему должно быть свое время. Иначе мы можем потратить много времени на создание платформы, а главная задача так и не будет решена.
В общем я предлагаю, сначала сделать систему навигации на системе тестов, причем вполне реальных, с реальных камер. И только затем создавать платформу. А на следующем этапе перейти к созданию системы распознавания объектов, хотя и для нее нет необходимости создавать платформу, а достаточно тех же тестов.

В какой-то мере я именно так и начал по стереозрению, реально я еще не запускал пару камер на своем ПК.

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

Если в части навигации, то да, почти единственная проблема, но кроме неё есть следующие серьезные проблемы:
1. Картография (составление эффективной карты пространства вокруг);
2. Прокладка маршрутов по этим картам;
3. Учет во всем этом особенностей поверхностей (в снег и воду мы проваливаемся быстро, в болото медленно, по песку ездим медленней, в грязи можем застрять, кусты можем подмять под себя и т.п.);

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

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

Сергей Мальцев писал(а):Алгоритмическую задачу управления этой механической системой я решал в рамках проекта робота футболиста ? проблем не вижу.

А какие там задачи? Регулирование скорости для движения по нужной траектории?

Сергей Мальцев писал(а):Так же должно быть два манипулятора, тут тоже уже давно все разработано и известно.

Ну не то чтобы сильно все просто, но согласен.

Сергей Мальцев писал(а):Электронная платформа это PC ? самое универсальное и доступное на данный момент решение. Главная причина выбора это возможность расширения различными специализированными PCI картами, такими как DSP карточки или цифро-аналоговые и аналого-цифровые преобразователи, в добавок, можно будет использовать многопроцессорные конфигурации. И еще один бонус, это развивающаяся сейчас многоядерность, пользу которой, думаю, не нужно доказывать. В общем, здесь тоже нет особых проблем.

Полностью в "+".

Сергей Мальцев писал(а):Восприятие речевых команд можно решить с помощью недавно анонсированной IBM библиотеки.

А есть особая нужда? Отрасль развивается довольно стремительно и без нас, пока все сделаем - думаю там будет куча готовых решений.

Сергей Мальцев писал(а):Поведение робота тоже не нужно усложнять. Что должен делать робот? Перемещаться в пространстве и перемещать объекты, по заданным для него задачам.

А вот тут масса проблем. И они местами вылетают в существенные элементы ИИ. Если хотите - накидаю список в несколько важных и непростых проблем.

Сергей Мальцев писал(а):Это все решено в играх. Посмотрите на стратегии, там юниты занимаются именно тем же. Имея опыт в этой области, могу Вас заверить, что решение проблемы не составляет особого труда. Более развернутый ответ могу дать по необходимости.

В играх вы работаете в предопределенном мире, где ничего "нового" случиться не может, а в жизни все не так...

Сергей Мальцев писал(а):Единственное, что я пока не до конца представляю ? это манипулирование объектами. Т.е. я пока толком не представлю, как робот должен решить за какую часть объекта он должен взяться, чтобы переместить его. Но первоначально можно считать, что правильные способы схвата объекта будет показывать человек.

Одна из важных проблем, только немножко не так, вопрос в том - какие элементы являются целым, а какие просто лежат рядом или друг на друге.

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

В "+".

Сергей Мальцев писал(а):Еще у меня есть пока интуитивное представление, что задача может быть решена независимо от других элементов.

Смотря какая задача, если определение "где мы" по местным предметам и "3Д-реконструкция", то пожалуй да.

Сергей Мальцев писал(а):Может Вы меня недопоняли, но я тоже предлагаю начать именно с этого, а затем перейти, на следующие задачи.

Понял, но зачем это написал не знаю :)

Сергей Мальцев писал(а):Как я уже написал выше, я считаю это преждевременным. Тем более что тесты будут вполне реальные, с реальных камер, поэтому решение задачи не имеет отношения к чистой теории. А вот платформа для первоначального решения задачи избыточна.

Первоначальная отработка алгоритмов - можно и на снимках, но как только отработали - запускать в реальную среду, потому как с теми же маяками на 10 снимках все было отлично, запустил в комнату и он начал терять маяки иногда. Или вообще путать. Потому что в реальной работе он сделал больше тысячи снимков с разными освещениями, под разным углом и т.п. Да и просто всех вариантов снимков не предусмотришь.

Сергей Мальцев писал(а):Честно говоря, по крайней мере, для целей навигации в помещениях с ровными полами, не вижу особых проблем в картографировании. Нужно взять регулярную решетку, или просто битовую маску, с определенным шагом. В этой маске значение 1 соответствует непроходимому участку, 0 проходимому. При первоначальной инициализации вся маска заполнена 0. По мере выявления препятствий с помощью стереозрения, и других датчиков, в маску заносятся 1 в местах препятсвий. Таким образом получаем маску проходимости. Для поиска пути по маске нужно использовать алгоритм A*. Все :)

Не самый эффективный подход, для ровных полов проходит на больших размерах помещений, но любые усложнения.(а вы ведь хотите универсальное зрение?), мне кажется, быстро сведут эффективность метода в ноль.

Простой пример - чтобы сетка была эффективна, я считаю, нужно, чтобы она позволяла проходить роботам размера с человека в естественные проходы - межкомнатные двери :)

В таком случае при ширине человека 60см, а дверного проема 80см получаем максимальный шаг сетки (впритык) - 10см. При площади помещения порядка 2000кв.м. (какой-нибудь торговый комплекс) имеем размер массива 200'000 элементов.

Кроме того на открытых пространствах (а ведь хотим универсальности) все становится значительно хуже. Картографировать лес таким способом занятие особенно веселое :)

Сергей Мальцев писал(а):Надеюсь, что у нас сможет получиться плодотворное сотрудничество.

Думаю да :)
Последний раз редактировалось =DeaD= 08 мар 2006, 19:51, всего редактировалось 1 раз.

lebaon » 08 мар 2006, 18:59

а ктото тут пытался сделать супернейросеть на спец процессорах
с камерами и пр :D
может он расскажет, как идут дела :?:

=DeaD= » 08 мар 2006, 19:57

Сергей Мальцев писал(а):Надеюсь, что у нас сможет получиться плодотворное сотрудничество.


Кстати, несмотря на все написанное выше, понятно что наши точки зрения в значительной степени схожи.

Предлагаю тогда

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

2. Наметить первые практические шаги - как все это можно начинать.

Я так понимаю нужно сначала будет обменяться мнениями "кто чего знает в OpenCV"

Если я все правильно понял - задача общая звучит так "ориентация в неподготовленном пространстве" - т.е. отвечаем на вопрос "где мы сейчас", "что вокруг нас за препятствия" и "как проехать в точку X" - так?

Сергей Мальцев » 08 мар 2006, 20:46

А так чтобы не стукнуться о непонимание простых вещей - решил сразу заняться более-менее реалистичной задачей, по ходу знакомясь со всеми техническими подробностями и технологиями.


Учитывая мой прошлый опыт, я, в случае необходимости, смогу объяснить что непонятно, поэтому предлагаю все же сразу замахнуться на серьезную задачу. :)

Это у меня тоже есть в планах


Предлагаю перейти к планам в ближайшее время. :)

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


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

Если в части навигации, то да, почти единственная проблема, но кроме неё есть следующие серьезные проблемы:
1. Картография (составление эффективной карты пространства вокруг);


Для твердых покрытий и не больших пространств, вполне подойдет битовая маска, ну или не битовая, а с большим количеством уровней. В случае больших пространств можно использовать иерархическую структуру.

2. Прокладка маршрутов по этим картам;


Алгоритм A*.

3. Учет во всем этом особенностей поверхностей (в снег и воду мы проваливаемся быстро, в болото медленно, по песку ездим медленней, в грязи можем застрять, кусты можем подмять под себя и т.п.);


Большинство этих вещей для предполагаемого мною робота не нужно, так как я не планирую создавать внедорожник. Но, тем не менее, проблем все равно нет, главное определить тип поверхности, а это опять скорее задача универсального зрения. Дальше снова работает алгоритм A* на специальным образом подготовленной карте.

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


В принципе ваша платформа это практически и есть, то о чем я говорю, но я опять же считаю, что заниматься ею в рамках предлагаемого мною проекта преждевременно.

А какие там задачи? Регулирование скорости для движения по нужной траектории?


В общем да, регулирование скорости вращения каждого из колес, в зависимости от траектории и заданной курсовой скорости.

А есть особая нужда? Отрасль развивается довольно стремительно и без нас, пока все сделаем - думаю там будет куча готовых решений.


Да я и не предлагаю делать этого. Просто если в рамках проекта все получиться, то добавить голосовое управление будет очень, просто. Достаточно лишь приобрести готовое решение и использовать его.

А вот тут масса проблем. И они местами вылетают в существенные элементы ИИ. Если хотите - накидаю список в несколько важных и непростых проблем.


Хотел бы взглянуть на ваш список. Может вместе поразбираем его.

В играх вы работаете в предопределенном мире, где ничего "нового" случиться не может, а в жизни все не так...


Дело в том что и в реальном мире почти все предопределено, по крайней мере для задач робота. Какие могут быть проблемы при перемещении? Появилось новое препятствие, перестроил путь, поехал по нему. Если проехать не возможно, то, например, забить на задачу, или, если на пути человек, попросить уйти в сторону. Живых существ лучше физически не касаться и объезжать их на большом расстоянии, на пониженной скорости. В случае критического уменьшения расстояния замирать.

Одна из важных проблем, только немножко не так, вопрос в том - какие элементы являются целым, а какие просто лежат рядом или друг на друге.


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

Первоначальная отработка алгоритмов - можно и на снимках, но как только отработали - запускать в реальную среду, потому как с теми же маяками на 10 снимках все было отлично, запустил в комнату и он начал терять маяки иногда. Или вообще путать. Потому что в реальной работе он сделал больше тысячи снимков с разными освещениями, под разным углом и т.п. Да и просто всех вариантов снимков не предусмотришь.


Ну не нужен робот для этого. Берем две камеры, и закрепляем их параллельно, на какой-нибудь палке. Затем этой палкой можно двигать, как хочешь, где хочешь при каком хочешь освещении, и прочих условиях. Обратная связь с приводом для этого совсем не к чему.

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


Будьте добры :) Попробуем вместе разобраться.

Сергей Мальцев » 08 мар 2006, 20:50

Ниже приведу более подробный план на ближайшее время:
1) Создание сайта, возможно в рамках http://www.roboclub.ru. Рассчитываю в течении марта.
2) Создание системы 3D реконструкции или поиск готового решения. До конца весны.
3) Разработка системы поиска естественных маяков. Параллельно со 2 пунктом, но в силу неопределенности и дискуссионности вопроса, полагаю, что затянется до конца лета, может и больше.
Думаю на большее пока не замахиваться, но если будут возникать интересные идеи и по более продвинутым задачам, то и их рассматривать.
Нужно будет обсудить в ближайшем будущем каким образом разделять работы.

После реализации первого пункта, я буду вести массированную рекламную компанию на форумах ВУЗов и специализированных сайтов, для привлечения максимального количества энтузиастов.

Сергей Мальцев » 08 мар 2006, 21:01

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

На сколько я понял, речь о том, как подробно и часто будет выкладываться документация по разрабатываемым технологиям, именно технологиям, а не по коду.
Если так, то я считаю, что информация должна выкладываться синхронно, то есть по сути приоритеты одинаковы. Да и сама эта информация как мне кажется будет появляться синхронно в обсуждениях на форуме, и потом ею нужно будет только оформить. А информацию по полученному опыту тоже выкладывать в кратчайшие сроки.

2. Наметить первые практические шаги - как все это можно начинать.
Собственно ответ выше, если нужно буду писать более подробно.


Я так понимаю нужно сначала будет обменяться мнениями "кто чего знает в OpenCV"


В принципе я разобрался с большинством функций,  по крайней мере с их смыслом, так что если что обращайся.

Если я все правильно понял - задача общая звучит так "ориентация в неподготовленном пространстве" - т.е. отвечаем на вопрос "где мы сейчас", "что вокруг нас за препятствия" и "как проехать в точку X" - так?


Именно так :)

Сергей Мальцев » 08 мар 2006, 21:25

Не самый эффективный подход, для ровных полов проходит на больших размерах помещений, но любые усложнения.(а вы ведь хотите универсальное зрение?), мне кажется, быстро сведут эффективность метода в ноль.


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

В таком случае при ширине человека 60см, а дверного проема 80см получаем максимальный шаг сетки (впритык) - 10см. При площади помещения порядка 2000кв.м. (какой-нибудь торговый комплекс) имеем размер массива 200'000 элементов.


Если взять даже по байту (хотя в часто достаточно и бита) на каждый элемент, то получается всего 200 килобайт, не так уж и много для современных компьютеров.

Кроме того на открытых пространствах (а ведь хотим универсальности) все становится значительно хуже.


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

Картографировать лес таким способом занятие особенно веселое

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

Но я для себя не ставлю задачу создать на столько универсальную систему навигации.

=DeaD= » 08 мар 2006, 21:54

Сергей Мальцев писал(а):В случае больших пространств можно использовать иерархическую структуру.

Вот уже начинаются подробности :) и их скорее всего будет немало.

Сергей Мальцев писал(а):Алгоритм A*.

Я вот не пойму никак, зачем разработчики игр придумали свое название Дейкстре? :)

Сергей Мальцев писал(а):Большинство этих вещей для предполагаемого мною робота не нужно, так как я не планирую создавать внедорожник.

А вот тут поподробней, начиналось с универсального зрения, а уже посыпались ограничения, тогда лучше их все сразу объявите.

Сергей Мальцев писал(а):В принципе ваша платформа это практически и есть, то о чем я говорю, но я опять же считаю, что заниматься ею в рамках предлагаемого мною проекта преждевременно.

Я ей и не занимаюсь особо :)

Сергей Мальцев писал(а):Хотел бы взглянуть на ваш список. Может вместе поразбираем его.

Дело в том что и в реальном мире почти все предопределено, по крайней мере для задач робота. Какие могут быть проблемы при перемещении?

Надо задачу тогда ограничить, а то по ходу выясняется, что лес уже за рамками задачи.

Двери. Лифты. Предметы на дороге, которые можно подвинуть, чтобы проехать.

Сергей Мальцев писал(а):Ну не нужен робот для этого. Берем две камеры, и закрепляем их параллельно, на какой-нибудь палке. Затем этой палкой можно двигать, как хочешь, где хочешь при каком хочешь освещении, и прочих условиях. Обратная связь с приводом для этого совсем не к чему.

А как же перемещение по проложенному пути? Бегать с палкой по команде компьютера по комнате? :)

Сергей Мальцев писал(а):В принципе я разобрался с большинством функций,  по крайней мере с их смыслом, так что если что обращайся.

Да с основными то я тоже давно подружился, там всякие специфические есть, которые опираются на разного сорта теории.

Сергей Мальцев писал(а):Если взять даже по байту (хотя в часто достаточно и бита) на каждый элемент, то получается всего 200 килобайт, не так уж и много для современных компьютеров.

Вроде нет. Ввиду необходимости поиска пути по такой карте - потребуется X*200'000 элементов памяти в худшем случае, где X - размер типа, в который влезет число 200'000, а это уже 4 байта.

Значит потребуется 800Кб памяти. Хотя порядок тот же, но не очень красивое решение.

Сергей Мальцев писал(а):Для открытых пространств нужно ввести иерархию, например разбивать все поверхность на квадраты по 1 га, а внутри них уже иметь более подробную карту. При этом из участка в несколько десятков кв. км. Подробная карта понадобиться только для немногих участков по 1 га.

Обдумывал уже. Тоже по теории правильно, но сразу возникнут проблемы с точками перехода - их много и какие-то переходы могут быть недоступными, то есть нельзя просто так сказать, что вот с этого квадрата можно попасть на вот этот квадрат в любой точке границы. Хуже того - важно с какой точки границы другого квадрата мы пришли. Короче тоже хватит развлечений в таком способе. И не все тут так гладко.

=DeaD= » 08 мар 2006, 21:59

Сергей Мальцев писал(а):Ниже приведу более подробный план на ближайшее время:
1) Создание сайта, возможно в рамках http://www.roboclub.ru. Рассчитываю в течении марта.
2) Создание системы 3D реконструкции или поиск готового решения. До конца весны.
3) Разработка системы поиска естественных маяков. Параллельно со 2 пунктом, но в силу неопределенности и дискуссионности вопроса, полагаю, что затянется до конца лета, может и больше.
Думаю на большее пока не замахиваться, но если будут возникать интересные идеи и по более продвинутым задачам, то и их рассматривать.
Нужно будет обсудить в ближайшем будущем каким образом разделять работы.

После реализации первого пункта, я буду вести массированную рекламную компанию на форумах ВУЗов и специализированных сайтов, для привлечения максимального количества энтузиастов.

В целом согласен.

По вопросу 1 - мы создаем ресурс ориентированный на конкретный проект и предоставляющий собой журнал проекта + вводный курс для желающего присоединиться к нам, или более общий вариант?

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

Сергей Мальцев » 09 мар 2006, 13:28

Вот уже начинаются подробности  и их скорее всего будет немало.


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

Я вот не пойму никак, зачем разработчики игр придумали свое название Дейкстре?


На сколько я помню, он, вроде, отличается от Дейкстры, но точно не помню. И вроде не только в играх так его называют, но и в ИИ.

А вот тут поподробней, начиналось с универсального зрения, а уже посыпались ограничения, тогда лучше их все сразу объявите.
Надо задачу тогда ограничить, а то по ходу выясняется, что лес уже за рамками задачи.
Двери. Лифты. Предметы на дороге, которые можно подвинуть, чтобы проехать.



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

А как же перемещение по проложенному пути? Бегать с палкой по команде компьютера по комнате?

А зачем? Нет особых проблем в следовании по проложенному пути, следовательно, и реализовать это пока не нужно.

Вроде нет. Ввиду необходимости поиска пути по такой карте - потребуется X*200'000 элементов памяти в худшем случае, где X - размер типа, в который влезет число 200'000, а это уже 4 байта.

Значит потребуется 800Кб памяти. Хотя порядок тот же, но не очень красивое решение.


Не понял, зачем использовать 4 байта, если в маске для каждого значения используется 1 байт, то нужно создать массив примерно такой:
unsigned char map[500][500];
итого получаем примерно те же 200 кбайт.

Обдумывал уже. Тоже по теории правильно, но сразу возникнут проблемы с точками перехода - их много и какие-то переходы могут быть недоступными, то есть нельзя просто так сказать, что вот с этого квадрата можно попасть на вот этот квадрат в любой точке границы. Хуже того - важно с какой точки границы другого квадрата мы пришли. Короче тоже хватит развлечений в таком способе. И не все тут так гладко.


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

Сергей Мальцев » 09 мар 2006, 13:39

=DeaD= писал(а):В целом согласен.

По вопросу 1 - мы создаем ресурс ориентированный на конкретный проект и предоставляющий собой журнал проекта + вводный курс для желающего присоединиться к нам, или более общий вариант?

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


По вопросу 1, пока думаю будет именно так. Ну еще хотелось бы свой тематический форум. А нет так чтобы все было разбросано по разным разделам, например этого форума.

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

Сергей Мальцев » 09 мар 2006, 13:57

Если есть интерес почитать по поиску пути, вот здесь можно посмотреть разные статьи:
http://www.gamasutra.com/php-bin/articl ... category=7

Искать в списке по слову pathfinding.
Возможно понадобиться регистрация на этом сайте.


Rambler\'s Top100 Mail.ru counter