Проблемы робототехники

Проблемы робототехники

Сообщение noonv » 02 сен 2011, 08:11

Проблемы робототехники

В самой первой заметке про Операционную Систему для Роботов - ROS - были озвучены мысли в пользу создания единой программной среды.

Да, единая элементная база, единые интерфейсы, единая программная среда - это важные элементы развития робототехники.
Но может перед робототехникой стоят и другие проблемы?
Давайте вместе подумаем над этим вопросом.

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

Какие проблемы стоят перед современной робототехникой?
- надёжная и доступная механика
- ёмкие и компактные элементы питания
- мощная и малопотребляющая вычислительная система
- точные и доступные датчики
- "интеллектуальная" система управления (то самое ПО, которое должно наделить робота пресловутым "интеллектом")

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

элементы питания - здесь тоже всё ясно - это проблема. Самые доступные аккумуляторы для прикладной робототехники - это обычные пальчиковые, затем идут аккумуляторы от мобильных телефонов/КПК, затем аккумуляторы из бесперебойных источников питания (UPS), ну и для более серьёзных наработок - автомобильные аккумуляторы. Все они довольно дороги, а вес просто удручает :)

вычислительная система - этот вопрос поднимался в статье "Мозги для робота".
И, как кажется, хорошим выбором являются (в сторону убывания):
нетбук,
материнсткие платы формата miniITX (и меньше) или PC/104,
и, наконец, контроллеры на базе ARM.

Почему ARM-ы на последнем месте? Как я понимаю, все встраиваемые системы используют ARM именно из-за его экономичности и дешевизны. Вспомните - более-менее распространёнными низкопотребляемые x86 стали всего несколько лет назад.
Но использовать x86 привлекательнее, хотя бы из-за того, что для них не нужно поднимать/понимать всю возню с кросскомпиляцией и прочими прелестями встраиваемых систем. А просто взять и использовать компактный ПК со своей любимой ОС и готовым набором программ.

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

софт - это очень серьёзный вопрос. Софт для робота обычно представляет собой обычную программу, работающую в "стандартной" ОС.
OC - это обычно какая-либо ОСРВ (Операционная Система Реального Времени), например QNX,
далее Linux (возможно с RT-патчем),
и, наконец, Windows.

Не будем задерживаться на рассмотрении использования ОС, так как тема рискует вызвать массу споров :) Возможно вернёмся к этому вопросу позднее, а сейчас давайте взглянем на саму "душу" робота - управляющую программу.
Вот она главная проблема современной робототехники. Да-да. Это "обычная" программа. Как же так? Не сложная механика? Не элементы питания? И не процессор - а обычная программа?
В том то и дело! Вот здесь и зарыта проблема современных роботов.
Что делают самый распространённый класс роботов на заводе? Выполняют заданную программу действий. Детектирование детали, в нужных точках провести сваркой/затянуть болты/приложить деталь, и следующая итерация.
А что мы ждём от бытового робота? Мы ждём, что он будет не просто выполнять поставленную задачу всасывания пыли по углам, но сможет и что-то ещё, например, припинать к нам тапочки из коридора :)
Это приводит к важной проблеме - а для чего мы сможем/захотим использовать робота?
Сейчас, единственное бытовое применение - это роботы-пылесосы, роботы-терминалы для телеприсутствия или охраны ("видеокамеры на колёсиках").
Затем идут военные "игрушки" - роботы-разведчики или сапёры (но и это не более чем радиоуправляемые игрушки).
Изображение
Какие-то ещё?

И что же нас останавливает?
1. естественный интерфейс общения (голосовые команды).
- это серьёзная проблема.
2. самостоятельная ориентация робота в пространстве/помещении. Детектирование и распознавание объектов.
- это очень серьёзная проблема.
3. понимание причин и следствий, разрешение нечётких команд. Базовый "машинный интеллект".
- это очень серьёзная проблема^2.

- ...?

Таким образом, базовой проблемой робототехники можно назвать огромный разрыв нашего представления о роботах (сложившегося по фантастическим книгам и фильмам - в которых роботы могут быть глупыми или умными, добрыми или злыми, но они как-то "думают" и вполне "понимают" команду "принеси яблоко") и реальными возможностями роботов.
Рассмотрим ту же команду "принеси яблоко".
Предположим, модуль распознавания речи работает и он отсеял шумы и успешно преобразовал речь в предложение.
Лексический анализатор разобрал предложение и расчленил его на команду "принеси" и объект команды "яблоко".
И хотя и предыдущие шаги не слишком-то радуют, но и выполнение команды ставит нас в трудное положение.
Пусть робот уже знает, что его цель находится на кухне. Так же, предположим, он знает, где он находится сейчас. Теперь он должен проложить маршрут на кухню, обходя различные препятствия. Обнаружить тот самый объект "яблоко". Взять его и вернуться к человеку.
Обнаружение объекта - существенная проблема. Пусть робот имеет на борту две камеры (и даже лидар). Составить алгоритм детектирования объекта - это серьёзная и весьма непростая задача.
Haar-like Features, HOG или какие другие алгоритмы. Сначала, классификатор яблоко/не яблоко придётся долго и упорно обучать на различных сортах яблок, чтобы нашего робота не ставили в тупик маленькие и зелёные яблоки, вместо больших и красных или червивых жёлтых.
И всё равно 100%-го срабатывания добиться не получится и очень часто вместо долгожданного яблока робот будет нести вам грушу или лимон, а то и луковицу притащит :)
А само действие "взять яблоко"? Пусть, наш робот имеет манипулятор, напоминающий человеческую руку. Вы готовы запрограммировать этот набор датчиков и сервоприводов на выполнение "простого хватательного движения"?

Как и когда будут решены эти проблемы? Возможно, что очень скоро :) Хотя, так же возможно, что для их решения потребуются не только новые процессоры, но и новые программисты :)
Но будем оптимистами - эти проблемы будут решены, и тогда перед нами встанут совсем другие проблемы - проблемы робототехники будущего :)
Аватара пользователя
noonv
Администратор
 
Сообщения: 557
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: Проблемы робототехники

Сообщение Zoltberg » 02 сен 2011, 10:03

Всей этой портянкой с умными словами, уважаемый noonv, какбэ поднимает вопрос:
А зачем вы делаете роботов? какова цель постройки "простейшего(сложного) шасси для экспериментов"?
Что будет делать ваш трёхколёсный/многоногий/гусенечный/летающий/плавающий/балансирующий робот,
после того как вы его научете двигатся/идти на свет/от света/к человеку/от человека/по линии/не падать со стола/обьежать препятствия
Короче, как сказал подошедший burjui "НАХРЕНА?" :nez-nayu:

Вот лично моё мнение, что роболюбители избегают думать над этой темой, закрываясь от неё сложыми шасси (гексоподами, андройдами и пр.)
и искусственными сложностями.
"Чтоб не видеть проблемы в целом, нужно сосредоточится на мелочах" :hi_hi_hi:
И сложности эти, зачастую, настолько заковыристые, что проект загибается раньше подхода к вопросу о назначении "платформы" :-(
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград


Вернуться в Общение

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron
© 2009-2019 |  О проекте  |  Политика Конфиденциальности  |