КАК ПРОГРАММИРОВАТЬ РОБОТА-УБИЙЦУ

Иван Скляров

Xakep, номер #053, стр. 053-048-2


Схема робота ничего сложного собой представлять не должна, в качестве процессоров вполне подойдут обычные CISC или RISC-процессоры, однако для fuzzy-вычислений лучше использовать специализированные fuzzy-микроконтроллеры (например, SAE 81C99 или VY86C570), обеспечивающие большее быстродействие. В качестве датчиков вполне могут служить обычные цифровые видеокамеры, а также датчики давления, ультразвуковые, температурные, инфракрасные... Вестибулярный аппарат робота можно моделировать с помощью обычных гироскопов.

МОЗГ

Классическая (булева) логика оперирует только двумя понятиями: ИСТИНА и ЛОЖЬ (1 и 0). Это подходит для компьютера, но не подходит для человека. Нам не свойственно делать однозначные утверждения, обычно мы употребляем такие обороты, как: «немного», «средне», «больше», «высоко», «далеко» и т п. Наша задача научить робота «думать» так же, для этого понадобится нечеткая логика. Хотя должен заметить, что в принципе подобные задачи можно решать и с помощью обычной логики, только это сведется к решению сложных дифференциальных уравнений, из-за чего не только высока вероятность совершить ошибку в коде, но из-за большого объема вычислений система может получиться тормозной. Не думаю, что ты хотел бы видеть своего робота эдаким заторможенным дуболомом :).

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

Разделим мозг робота на три основных блока:

1) Блок обхода препятствий

2) Блок поиска жертвы

3) Блок преследования и уничтожения жертвы

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

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

БЛОК ОБХОДА ПРЕПЯТСТВИЙ

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

Назад на стр. 053-048-1  Содержание  Вперед на стр. 053-048-3