Саморобний робот робот і штучний інтелект

Вибір і опис алгоритму пошуку шляху, відповідного для використання при орієнтуванні мобільних роботів по заздалегідь заданій карті місцевості

Стандартизація представлення даних є важливим моментом будь-якої галузі знань. RoboML - мова, яка вирішує цю задачу в області робототехніки.

Розглядається використання робота, зробленого на основі персонального комп'ютера, в охоронних системах.

Підхід до використання технологій штучного інтелекту в системі управління роботів.

Загальна ідея. Короткий опис поточного стану справ в області робототехніки, передумов для створення описуваного робота, потенційних можливостей застосування і т.д.


Саморобний робот робот і штучний інтелект

вступ

Перш за все, з'ясуємо нашу основну мету. Обмежимося коротким записом: Створити робота, що володіє складною поведінкою. У цій статті я постараюся описати, як це можна зробити.

Як відомо, будь-який робот складається з двох частин:

  1. Залізної - яка часто є наріжним каменем
  2. Програмної, або поведінкової - про яку часто забувають

Нестандартно? Однак, якщо замислитися, в цьому підході є своя частка істини. Сучасні технології програмування пішли далеко вперед і на сотні тисяч корпусів обігнали асемблери мікропроцесорів, які до сих пір використовує більшість роботостроітелей любительського і напівпрофесійного фронту для програмування поведінкових функцій своїх творінь. У наявності плачевний результат: більшість таких проектів добираються до об'їзду перешкод (який можна, до речі сказати, реалізувати простий механікою!), І цим обмежуються. А адже об'їзд перешкод - це кам'яний вік!

Дорогий читач безумовно обуриться: "Як же створити щось більше в домашніх умовах? Чи потрібні промислові комп'ютери, складні логічні ланцюги, нестандартні периферійні інтерфейси." Не зовсім так: цілком можна використовувати і звичайний старенький персональний комп'ютер, а краще - ноутбук. Для початку вистачить, а якщо все піде добре - можна буде і на промислові комп'ютери пересісти.

Використання ПК замість "мізків" робота

Отже, що нам дає використання персоналки замість мізків майбутнього робота? Головне питання початківців - як управляти зовнішніми пристроями? Відповідь проста: через порти комп'ютера COM (RS232) і LPT. Це рішення дає можливість реалізувати як управління двигунами, так і зворотний зв'язок.

З недоліків використання комп'ютера зазначу кілька, напевно, дуже істотних для любителів:

  • Необхідність перероблення схеми живлення комп'ютера в розрахунку на живлення від акумуляторів, тобто створення спеціального блоку живлення
  • Значне збільшення маси робота за рахунок необхідності перевезення потужних акумуляторів і комп'ютера з його периферією. Як наслідок - ускладнення конструкції "візки", використання більш потужних (і дорогих) моторів і т.п. Оціночна маса отриманого робота - 6 кг.

програмування поведінки

Давайте розглянемо, як можна програмно задати поведінку робота. Якщо опустити реалізацію всіляких драйверів пристроїв, необхідна якась, поки абстрактна, система управління, яка б в залежності від стану навколишнього середовища приймала б будь-які рішення про подальші дії.

Найпростіший варіант такої системи управління - кінцевий автомат (це деяка математична модель, що відображає правила зміни стану абстрактного об'єкта, в залежності від зовнішніх факторів, і поточного стану)

Кінцевий автомат дозволяє реалізувати будь-які "встановлені" моделі поведінки, так би мовити вроджені лінії поведінки об'єкта (в нашому випадку - робота).
Кінцевий автомат описує такі формули поведінки, як:
Якщо я працював, і раптом пішов дощ, то піти додому
У більш загальному варіанті:
Якщо об'єкт знаходився в стані A. і сталася подія X. то об'єкт переходить в стан B.
Роль кінцевого автомата - це функція, що задає правило визначення нового стану об'єкта.
НовоеСостояніе = КонечнийАвтомат (Подія, ТекущееСостояніе)

Більш складний варіант реалізації поведінкової функції робота - використання рішень з області штучного інтелекту (ІІ). Перш за все, тут варто виділити нейронні мережі. Нейронна мережа - це програмна модель взаємодії нейронів головного мозку людини. Основні завдання, які вирішуються за допомогою нейронних мереж - розпізнавання (образів, текстів і т.п.). Найважливіша особливість нейронних мереж - наявність пам'яті, і здатності до навчання. В даний час в мережі Інтернет можна знайти безліч вже готових рішень, що реалізують механізм нейронних мереж. Тому зараз ми сконцентруємося не на їхньому програмуванні, а, перш за все, на їх налаштування.

Зазвичай для навчання нейронних мереж використовують деяку базу правильних відповідей. Це природно, адже якщо наш робот чогось навчився, то йому необхідно знати, чи правильно він цього навчився. Як приклад, робот цілком може навчитися об'їжджати перешкоди - розворотом на 180 градусів! Що, звичайно ж, є невірним рішенням.

Таким чином, необхідно з'ясувати основні причини, які спонукають робота до дій. Що для нього - правильно, а що - є помилкою? Що для нього - добре, а що - погано?

У цих питаннях на допомогу нам прийдуть стану, які може приймати робот. Ці стани жорстко задані механізмом кінцевих автоматів, розглянутим вище, і тому також жорстко можна задати деякі атрибути зазначеним станам. В тому числі, ступінь їх бажаності для нашого механічного друга.

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

  1. Внутрішній стан робота згідно з показаннями його датчиків (наприклад, розрядка батареї, відсутність місця на жорсткому диску, і т.п.)
  2. Взаємодія робота з навколишнім середовищем.

Список внутрішніх подій і оцінка їх:

  • Останній тест системи пройдено відмінно - добре
  • Останній тест системи провалений - погано
  • Низький заряд батарей - погано
  • Повна розрядка батарей - жахливо
  • Брак оперативної пам'яті - погано
  • Помилки програмного забезпечення - жахливо
  • Брак місця на жорсткому диску - жахливо
  • Календарне подія (виникає в певний час, використовуючи вбудовані в комп'ютер годинник) - без ваги

Список зовнішніх подій набагато цікавіше. Але і виділити його складніше. Для початку, розглянемо, які об'єкти зовнішнього світу можуть взаємодіяти з нашим роботом:

  1. Люди-наладчики - ті, хто налаштовує робота
  2. Люди-обивателі - ті, хто користується послугами робота і безпосередньо взаємодіє з роботом
  3. Деякі статичні перешкоди - положення яких довго не змінюється і робот не може його змінити
  4. Динамічні перешкоди - перешкоди, які то з'являються то зникають але завжди в одному місці
  5. Непередбачувані перешкоди - перешкоди які не можна передбачити
  6. джерела звуку
  7. джерела світла
  8. Місце підзарядки
  9. Маяки для визначення місця розташування

Більш цікава ситуація з обивателями, тобто людьми, фізично взаємодіючими з роботом. Такі люди можуть:

  1. Віддавати команди з пульта дистанційного керування (ДУ)
  2. Розмовляти з роботом / кричати на робота (вплив звуком)
  3. Вплив світлом (закривати робота від світла / висвітлювати його ліхтарем)
  4. Бути перешкодою (непостійним)
  5. Заряджати робота (неабияке задоволення хіхі)
  6. вимикати робота
  7. паралізувати робота

Цей список може бути доповнений, однак тут видно, що люди-обивателі можуть виступати в якості інших перерахованих об'єктів навколишнього середовища, тому основні стану робота при взаємодії з усіма цими об'єктами будуть повторюватися.

Мабуть, можна спробувати скласти список станів, обумовлених взаємодією з зовнішнім середовищем:

  • Прийом команди з пульта дистанційного керування - без ваги
  • Звук - добре
  • Ритмічний звук (існують найпростіші способи визначити це якість) - прекрасно
  • Дуже гучний звук - погано
  • Звук нестандартного діапазону - погано
  • Світло - добре
  • Дуже яскраве світло - погано
  • Відсутність світла тривалий час - погано
  • Знерухомленість (коли датчики зворотного зв'язку не фіксують переміщення) - жахливо
  • Виключення - без ваги
  • Процес зарядки - прекрасно

Що нам дає цей розподіл ваг? Воно дає нам головне - список інтересів робота, і список того, чого він буде побоюватися. Якщо робот бачить, що одні й ті ж його дії (або навіть складні послідовності дій) призводять завжди до однакових результатів (переводять в одні і ті ж стану), він буде прагнути або уникати виконання подібних дій - якщо вага стану негативний, або навпаки, повторювати їх, якщо вага позитивний. Причому навчання відбуватиметься автоматично, згідно з принципами роботи нейронних мереж. До речі, для того, щоб робот не зациклювався на чомусь одному, необхідно також ввести стан "Зміна роду діяльності" з пріоритетом прекрасно. причому в цей стан робот повинен переходити по витікання якогось часу, якщо весь цей час він перебував в одному або декількох (невеликій кількості) станах.

висновок

Схожі статті