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

Sphero SPRK

Sphero SPRK - робот для обучения программированию, замаскированный под небольшой полупрозрачный шарик. Управлять устройством нужно с помощью кода: его набирают в редакторе смартфона, используя блоки с командами. Шарик может катиться, крутиться, прыгать и менять цвета. Играть могут и те, кто пока не умеет программировать – для этого разработчики загрузили 12 базовых алгоритмов.

Шарик придумала компания Sphero, основанная в 2010 году для производства детских игрушек. Робота специально сделали прозрачным: дети могут следить за тем, как механизмы внутри шарика управляют его движениями. Кстати, название SPRK расшифровывается как Schools-Parents-Robots-Kids (школы, родители, роботы, дети). В магазинах игрушку можно купить за $129.99.

Ozobot

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

Основатель проекта рассказал в интервью Techcrunch: «Дети сегодня стали очень замкнутые, поэтому мы хотели сделать что-то такое, что побудило бы их вернуться в реальный физический мир». Сейчас Ozobot работает на iOS и Android, а полный комплект стоит около $50 (туда входит сам робот, игры, приложения и другие программы).

Project Bloks

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

Главное достоинство Project Bloks состоит в том, что платформа позволяет не просто нажимать на кнопки и ждать эффекта, но прочувствовать связь между софтом и железом. Например, иконки команд нанесены прямо на физические кнопки, через которые выполняются эти команды. С помощью Project Bloks дети могут создавать алгоритмы для управления различными роботами: к примеру, Lego WeDo 2.0 или Mirobot.

Cubetto

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

Как в языке программирования LOGO, каждый блок представляет собой простую команду: например, вперед, назад, вправо или влево. Дети размещают блоки на игровой площадке, тем самым создавая программу движения робота.

AERobot

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

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

Robbo

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

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

Root

Робот Root, разработанный в Гарварде – это глазастый шестиугольник, наводящий на мысль о роботах-пылесосах или детях из рассказа Брэдбери. У робота есть сканеры и бамперы, позволяющие передвигаться, следовать заданной траектории и избегать препятствий. Кстати, Root умеет ездить не только по полу, но и по школьной доске, а также рисовать и стирать нарисованное. Для управления роботом нужно установить приложение Square на iPad.

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

Бонус: игра «Битва Големов»

На первый взгляд, «Битва Големов» – это обычная настольная игра, но на самом деле авторы заложили в нее многое. Цели этого российского проекта – обучить детей программированию, зародить в них интерес к робототехнике, посеять начальные знания и дать навыки, необходимые затем для погружения в мир интернет-технологий. Проект совмещает основы алгоритмики, работы с исполнителями, принципы построения и выполнения программ, основные алгоритмические конструкции, пространственное мышление и логику команд для роботов-исполнителей, основы программных конструкций типа условий и циклов. И всё это без использования компьютеров!

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

Эланд Инбар о недостатках американского
образования и о том, чем полезен конструктор Lego

«У создания роботов есть две важных составляющих: инженерные решения и железо, с одной стороны, и обработка данных и софт - с другой. Чтобы быть робототехником, нужно понимать и разбираться в обоих вопросах, там как они одинаково важны. Роботы - это те же самые компьютеры, только с моторами и сенсорами. Думайте о них как об информатике, воплощённой в жизнь. В любом случае, чтобы постигнуть эту науку, вам придётся начать с разработки программного обеспечения, а значит, придётся выучить языки программирования. Например, Python широко поддерживается многими платформами. ROS (Robot Operating System ) сейчас тоже набирает популярность, хотя их создателей Willow Garage больше не существует. Начинающим робототехникам я рекомендую приобрести конструкторы LEGO EV3 или Robotis Bioloid для тренировок, они помогут погрузиться в детали. Добейтесь уверенности при работе с этими конструкторами, разработайте основные алгоритмы (простейшую навигацию, захваты и т. д.). Это даст вам базу. Потом надо обязательно устроиться интерном в робототехническую компанию - там вас научат всему. Кстати, если вы решили учиться робототехнике в американском вузе, то помните, что там основное внимание уделяется машиностроению, а вам никак нельзя забывать про софт.

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

Однажды вы почувствуете, что готовы к созданию собственного робота. Это и легче, и труднее всего. Поэтому я всегда советую начинать с необходимости. Возьмите за основу реальную проблему, и пусть ваше устройство решает её. Сейчас очень много прикольных роботов, но никто их не покупает, потому что на самом деле они не решают важных проблем. В тоже время сейчас проблем полно. Займитесь ими, и это приведёт вас к успеху».

Владимир Белый о том, почему роботов
стоит создавать в человеческом обличии

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

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

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

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

Сегодня антропоморфная робототехника пока ещё находится в зарождающейся стадии: областей для применения таких роботов много, а нерешённых проблем - ещё больше. Наша компания старается развивать эту отрасль. Мы специально создали экосистему, в которой разработчикам ПО даётся возможность делать приложения для наших роботов, то есть фактически организовали рабочие места для программистов. Кроме того, это хорошо и для потребителя. Покупая нашего робота Alphabot или арендуя его, он получает некую машину, которую можно «приспособить» под конкретные нужды. Здесь можно провести аналогию с App Store. Мы покупаем IPAD, загружаем нужные программы и получаем персонифицированное устройство.

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

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

Сергей Мельников о том, как самостоятельно изучить робототехнику и собрать своё первое устройство

Сергей Мельников

Разработчик автоматизированных систем, программист, преподаватель робототехники, администратор servodroid.ru

«Я стал заниматься роботами ещё в школе, когда меня зачислили в кружок «Радиолюбитель». Там я научился паять, разбираться в схемотехнике и делать простые инженерные конструкции. Когда же я научился читать любые радиоэлектронные схемы, дело дошло до простого робота с парой светодатчиков и реле, по которым он видел, и мог передвигаться. Самое интересное - наблюдать, как «железяка» без человеческой помощи сама, своими силами, что-то делает. После того как я собрал своё первое громоздкое устройство с кучей проводов, залитое клеем и обмотанное скотчем, я влюбился в робототехнику.

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

Я специализируюсь не только на BEAM-робототехнике, но и на сложных вычислительных системах, комплексах и, конечно же, программном обеспечении. Например, я сотрудничаю с МЧС и занимаюсь роботами для спасательных и разведывательных работ. Но в основном моя любимая часть - это BEAM («биология, электроника, эстетика, механика») . С этого всё начинается: с простейших роботов из доступных компонентов без сложного программирования. Собирая BEAM-робота, мы стараемся подходить к выполнению задачи с разных ракурсов, даже не имея большого числа электронных компонентов и логических цепочек. Собирая такого робота, мы в конце концов можем ткнуть пальцем в любую его часть и рассказать о ней всё от А до Я. Рассказать, как идёт сигнал от фотодатчика, как он обрабатывается микросхемой, и что получается в конце. Мы всегда можем по цепочке выявить причину, из-за которой не работает робот. Это лучшая база для новичков.

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

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

А кроме самого материала также комментарии одного из наших робо-экспертов, куратора екатеринбургского , Олега Евсегнеева.

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

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

1. Системное мышление

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

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

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

2. Мышление программиста

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

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

Комментарий Олега Евсегнеева: Я бы добавил, что для создания современных роботов требуется знание языков низкого, высокого и даже сверхвысокого уровня. Микроконтроллеры должны работать очень быстро и эффективно. Чтобы этого достичь, нужно углубляться в архитектуру вычислительного устройства, знать особенности работы с памятью и низкоуровневыми протоколами. Сердцем робота может быть тяжелая операционная система, например, ROS. Здесь уже может понадобиться знание ООП, умение пользоваться серьезными пакетами машинного зрения, навигации и машинного обучения. Наконец, чтобы написать интерфейс робота в веб и связать его с сетью интернет, неплохо будет научиться скриптовым языкам, тому же python.

3. Способность к самобучению

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

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

Комментарий Олега Евсегнеева: Это ключевой навык в любом творческом деле. С помощью него можно получить другие навыки

4. Математика

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

Комментарий Олега Евсегнеева: Поведение робота, его реакция на окружающие раздражители, способность учиться – это все математика. Простой пример. Современные беспилотники хорошо летают благодаря фильтру Калмана – мощному математическому инструменту для уточнения данных о положении робота в пространстве. Робот Asimo умеет различать предметы благодаря нейронным сетям. Даже робот-пылесос использует сложную математику, чтобы правильно построить маршрут по комнате.

5. Физика и прикладная математика

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

Комментарий Олега Евсегнеева: Есть хороший пример – автоматические станции для полета на другие планеты. Знание физики позволяет настолько точно рассчитать траекторию их полета, что спустя годы и миллионы километров аппарат попадает в точно заданную позицию.

6. Анализ и выбор решения

Быть хорошим робототехником означает постоянно принимать инженерные решения. Что выбрать для программирования - ROS или другую систему? Сколько пальцев должен иметь проектируемый робот? Какие датчики выбрать для использования? Робототехника использует множество решений и среди них почти нет единственно верного.

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

Для iPad — образовательного приложения для кодирования. Приложение позволяет программировать роботов, дронов и музыкальных инструментов на Swift — языке от Apple.

“Несмотря на то, что Swift предназначен в первую очередь для разработчиков iOS и mac OS, приложение также позволит понять общие концепции программирования, зная которые, можно смелее начать изучение любого понравившегося языка программирования и углубляться в его тонкости”, — говорит Илья Вислоцкий, руководитель департамента разработки Stack Group.

“В прошлом, если человеку захотелось разобраться, как работают программы, или хотел попробовать себя в программировании, то у него не было выбора, кроме как сразу использовать профессиональные IDE”, — отмечает Илья Вислоцкий. Сейчас создано уже довольно много учебных программ, они позволяют привлечь детей в программирование и разобрать основные конструкции алгоритмизации (условие, цикл, подпрограммы). «Я сам часто играю в подобные игры, например Lightbot. На мой взгляд вдвойне полезно, если программа ограничивает алгоритм по количеству операций, так как задание можно выполнить множеством способов, стремясь к самому эффективному», — добавляет Максим Бекурин, тренер по робототехнике центр «Техноit».

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

Универсальная платформа взаимодействует с пятью моделями:

  1. С помощью популярного набора LEGO MINDSTORMS EV3 миллионы детей по всему миру могут кодировать и управлять моторами и датчиками своих учебных роботов.
  2. Роботизированный шар Sphero SPRK + умеет вращаться, катиться, поворачиваться, ускоряться и менять цвет. С Swift Playgrounds станет возмножным контролировать шар с помощью датчиков, обеспечивающих обратную связь.
  3. Под управлением кода на Swift дроны Parrot Mambo, Airborne и Rolling Spider могут взлетать, приземляться, поворачиваться и выполнять различные трюки.
  4. Робота UBTECH Jimu Robot MeeBot Kit можно запрограммировать и научить его ходить, наклоняться и танцевать.
  5. Робот от Wonder Workshop иллюстрирует основные принципы написания кода. С Swift Playgrounds он поможет ученикам младших классов изучить программирование на практике.

“Возможность подключения к нескольким роботам является безусловным плюсом, создавая этим самым дополнительное направление изучения робототехники. К тому же, учитывая многолетнюю работу компании Apple, можно с уверенностью сказать, что они будут и дальше развивать это приложение, чтобы оно подходило и для крупных серьезных проектов”, — отмечает Александр Кормильцев, преподаватель отделения политехнического образования Дворца молодежи, Екатеринбург.

Swift Playgrounds совместим со всеми моделями iPad Air, iPad Pro и iPad mini 2, а также с iOS 10 или более поздними версиями.

Многие робототехнические контроллеры реализованы с использованием языков программирования специального назначения. Например, многие программы для обобщающей архитектуры были реализованы на языке поведения , который был определен Бруксом. Этот язык представляет собой язык управления в реальном времени на основе правил, результатом компиляции которого становятся контроллеры AFSM . Отдельные правила этого языка, заданные с помощью синтаксиса, подобного Lisp , компилируются в автоматы AFSM, а группы автоматов AFSM объединяются с помощью совокупности механизмов передачи локальных и глобальных сообщений.

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

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

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

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

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

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

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

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

Язык «JSk CES (сокращение от C++ for embedded systems - C++ для встроенных систем) - это языковое расширение C++, в котором объединяются вероятностные средства и средства обучения. В число типов данных CES входят распределения вероятностей, что позволяет программисту проводить расчеты с использованием неопределенной информации, не затрачивая тех усилий, которые обычно связаны с реализацией вероятностных методов.

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

Язык ALisp представляет собой расширение языка Lisp . Язык ALisp позволяет программистам задавать недетерминированные точки выбора, аналогичные точкам выбора в языке Golog. Но в языке ALisp для принятия решений применяется не программа доказательства теорем, а средства определения правильного действия с помощью индуктивного обучения, в которых используется обучение с подкреплением. Поэтому язык ALisp может рассматриваться как удобный способ внедрения знаний о проблемной области в процедуру обучения с подкреплением, особенно знаний об иерархической структуре «процедур» желаемого поведения. До сих пор язык ALispприменялся для решения задач робототехники только в имитационных исследованиях, но может стать основой многообещающей методологии создания роботов, способных к обучению в результате взаимодействия со своей средой.