Найти тему
Alexander Dmitriev

Некоторые принципы построения роботов

Роботы: как они это делают?

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

Часть первая: обратная связь – важнейший принцип.

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

Сделаем интересное отступление про унитаз и его значимость для нашей жизни. Важнейший прибор!

Давным-давно, еще в первобытные времена, проблема отходов жизнедеятельности человека уже было серьезной проблемой. Скажем, северные народы – шли по белой пустыне в снегах, находили удобное место, вставали лагерем, разбивали чумы – скажем, на берегу. И начинали жить-поживать, ловить китов и тюленей, кушать их… Но возникала проблемка. Хоть в те времена и старались использовать практически все из пойманного (мясо ели, запасали; кости использовали для изготовления орудий труда, охоты и жилищ; из шкур и рыбьей кожи делали одежду и покрывали чумы; жир вытапливали и делали светильники и смазку для кожи, защиту от воды; из рыбьих пузырей делали клей а также водолазные костюмы – я не шучу, такой есть в Кунсткамере в Питере, ну и так далее). Но все равно горы отходов накапливались, гнили, воняли, загрязняли место и затрудняли жизнь. Если учесть, что в туалет тоже ходили недалеко от чума, через несколько лет жить становилось тяжеловато. Тогда племя вставало и уходило. За сто лет, как показывают исследования, северное племя могло пройти от Камчатки до Финляндии…

Та же проблема была во всех крупных городах. Я лично, отдыхая в Турции, на развалинах древнегреческого города (их там как грязи) обнаружил, как решали эту проблему древние греки. Небольшой каменный дом на одну комнату, метров 15 квадратных, в одном углу, дальнем от «кровати» (каменное ложе), имел лестницу, по которой можно было вылезти на крышу (там была дырка в каменной крыше), перелезть через заднюю стену и оказаться в специальном помещении с очень интересным устройством. Это была как бы еще одна небольшая каменная комната, без потолка, пристроенная сзади к дому. От дальнего угла комнаты до крыши наискосок, лежала большая каменная плита. Человек, вылезший из основной комнаты, где жила семья, оказывался на верхнем краю этой наклонной плиты. Он мог сходить прямо на нее в туалет и вернуться в свое жилище. Так вот, я так понимаю, все так и делали, чтобы в комнате не воняло. А когда шел дождь, он все это смывал вниз, в дальний угол этого оригинального туалета, где была дырка, уходящая в канализацию. Канализация шла по всему городу, трубы из обожженной глины выходили на улицы и сливали все в канализационные каналы. Римляне построили такую гигантскую систему водопроводов и канализации, что их города были чистыми и прекрасными.

А вот Махатма Ганди, предводитель и учитель индийского народа, в молодости исследовал жизнь индусов в «простых» семьях. Когда я читал его отчеты, мороз шел по шкурке и редкая растительность на хребте вставала дыбом: туалетов не было, все, что называется, «валили куда попало», и, как пишет Ганди, когда уже ходить становилось невозможно, ногами сталкивали все накопившееся в небольшие углубления-каналы по краям комнат, куда еще сливали грязную воду – слегка расчищая пространство. Жуть. В общем, я, конечно, отвлекся – но тема нечистот и борьбы с ними – очень интересная с точки зрения истории. А вывод простой: унитаз – великое изобретение человечества, где применен принцип обратной связи (интегратор первого порядка, если по-умному).

Что же должен делать унитаз? Человек запускает «программу», нажимая кнопочку. Унитаз автоматически (то есть сам, как разумное существо) должен а) слить всю воду б) включить налив воды в) следить, чтобы воды налилось столько, сколько нужно и не перелилось и г) выключить воду, когда задача выполнена. Все, кто пытался чинить унитаз, знают – там стоит довольно занятный механизм, который решает все эти четыре задачи без участия человека.

Как же он это делает? Задумывались? Итак, принцип обратной связи.

Первое, и основное, что делает любая автоматическая система при выполнении задачи, это получает информацию о чем-то, связанном с этой задачей. Назовем это «сигнал». Ищейка идет по следу, определяя концентрацию запаха в воздухе. Ракета «смотрит», туда ли она летит, совпадает ли ее курс с назначенным. Для ищейки сигнал – это уровень содержания «пахнущего» вещества в воздухе, для ракеты – координаты ее местоположения и направление движения. Каков сигнал для унитаза? Уровень воды в бачке.

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

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

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

Дальше еще интереснее. Система должна стремиться вести себя так, чтобы эту разницу уменьшать, в идеале разница должна быть равна нулю. Если ракета получила координаты, скажем, 100, 5, 78 и «посмотрела», что «нужные» координаты 100, 5, 78, то задача выполняется правильно и все ОК. А если координаты, скажем, 95, 5, 78, значит, по первой оси у нас расхождение в 5 единиц и надо что-то делать – ускориться, повернуть, притормозить и т.д. – по ситуации.

Где в унитазе измеритель? А вот рычажок, на котором нацеплен плавающий баллончик, «отслеживает» уровень воды – это и есть измеритель. Вода поднимается – с ней всплывает баллончик, который тянет за собой рычаг. А где «вычитатель»? Где вычитается один «сигнал» (уровень воды) из другого (какой уровень должен быть)? Тут хитро. Рычажок присоединен так к месту, откуда вода поступает в бачок, что, опустившись, он приоткрывает дырку. А приподнявшись – закрывает дырку. Это и есть «вычитатель» - при большой разнице уровня (воды мало), система сильно льет воду, при небольшой разнице – тонкой струйкой.

Таким образом, унитаз выполняет все основные функции системы автоматического управления: получает сигнал, измеряет его, вычитает «полученное» из «нужного» и автоматически регулирует подачу воды! Мало того, систему можно настраивать, изгибая рычажок – тогда поплавок будет останавливать воду на разных уровнях, в зависимости от угла изгиба рычажка. (Я не буду уже здесь отвлекаться и разбирать, как гениально придумано нижнее колено, чтобы все смывалось – и при этом вода не уходила, а оставалась в колене, отдельная история).

Так вот, любая система с ИИ, пусть даже какой-нибудь навороченный «голосовой помощник», в основе своей использует принцип обратной связи. Для голосового помощника сигнал – это информация от клиента. И смотрит: есть разница с заданным сигналом или нет. Под «разницей» здесь понимается удовлетворенность ответом. Если клиент удовлетворен ответом, система достигла цели и выполнила задачу, если нет – продолжает «лить воду» - до тех пор, пока передаваемая информация точно не «попадет» в цель.). Если очень упростить, то голосовой помощник все время сравнивает полученные сигналы от человека, который с ним говорит, и сравнивает с ответом «больше вопросов нет» или «я полностью удовлетворен ответами». И пока не получит такой ответ, система с ИИ продолжает диалог, продолжает «вести ракету», «искать след» или «наливать воду». Как просто это ни звучит, а это базовый принцип всех систем с ИИ. Мало того, это базовый принцип всех автономных систем, а, значит, всех живых существ. Вот, пчелы. Они передают информацию о том, где находятся сладкие цветы, танцуя особенный танец, в котором за счет дрожания, подпрыгивания и поворотов передают (!!!) расстояние и угол полета по отношению к солнцу (а пчела видит солнце даже за облаками за счет восприимчивости к поляризованному свету) остальным пчелам. А вы не задумывались, как пчелы узнают, куда лететь? Танец пчелы – закодированный управляющий сигнал. И потом другие пчелы, запомнившие управляющий сигнал, летят, сравнивая угол полета относительно солнца и дальность полета относительно переданной пчелой-разведчиком с теми, которые воспринимают своими датчиками сигнала (пятью глазами, например) – и находят нужное место!

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

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