Соревновония Lego роботов 2.Соревновония Lego роботов 1.

Роботы и Linux

Аватар пользователя Овсянников Алексей Юрьевич

В то время, как на форумах активно обсуждают правила нового сезона World Robot Olympiad 2013, пытаясь докопаться до истины и уточнить все используемые термины, мы можем немного отвлечься и окинуть внимательным взором окружающий нас мир. А в мире, куда ни глянь - все интересно и занимательно!

Вот взять хотя бы компьютеры и их операционные сисетмы. Может быть я для кого-то открою секрет, но запускать на своем домашнем компьютере можно не только вездесущий Windows(TM), но и другие ОС (операционные системы). Вообще, операционная система - это такая программа, которая работает напрямую с "железом" компьютера и позволяет остальным программа делать то же самое - работать и использовать "железо". Так вот, этих самых ОС великое множество, как для персональных компьютеров (домашних "ящиков" и ноутбуков), так и для их братьев меньших: мобильных устройств, гаджетов, ТВ-приставок и т.д. Стоит так же упомянуть о серверах и подобных "суперкомпьютерах", на которых тоже крутятся свои ОС.

А знаете, что самое интересное? А то, что существует система, успешно работающая на всех уровнях, на всех этих устройствах. И это далеко не Windows. Это - Linux, ОС, распространяемая по принципу открытого исходного кода. Это значит, что любой желающий может не только скачать ее и установить на свой компьютер/телефон, но и посмотреть ее исходный код и модернизировать для себя.

Но Вы спросите, а какая от всего этого польза нам, робототехникам. Чего это вдруг я пустился в такой подробный рассказ о каких-то сторонних технологиях? А потому, что эта операционная система может во многом помочь (и уже помогает!) в робототехнике.

Итак, начнем по порядку. Самое очевидное - раз Linux - нечто похожее на Windows(TM), то их можно заменить: запустить на домашнем или школьном компьютере не продукт фирмы Microsoft(TM), а что-то альтернативное. Ну а вдруг Вам надоело платить за операционную систему, или очень сильно не понравился Windows8(TM) и Вы не можете жить на одном компьютере с подобными системами. В таком случае одним из выходов станет установка на компьютер Linux. Вот тут можно пуститься в рассуждения и между делом написать еще несколько статей про дистрибутивы, их преимущества, удобства/неудобства работы в них, процесс установки и про много чего еще. Но я не стану. Для интересующихся - Google и Яндекс в помощь. Я же скажу, что так как Linux развивался и поддерживался программистами, которые реализовывали в первую очередь функции для себя, то программировать в любом дистрибутиве Linux легче легкого и удобнее удобного. Находятся в них и среды для программирования роботов. Например, в дружественном блоге +Александра Колотова (Нижний Новгород) упоминалась среда программирования роботов NXT для языка Not eXactly C - nxcEditor, которая работает в Linux'е. Более того, автор и разработчик среды собрал для нее специальный дистрибутив, на базе openSuSe Linux с рабочим окружением KDE. Лично для меня это тройной подарок: мало того, что есть такой хороший инструмент для программирования Lego NXT роботов, так еще и на моем любимо дистрибутиве (open SuSe), так еще и с любимым окружением (KDE). Ну прямо как у Винни-Пуха: "...мой любимый цвет... мой любимый размер...".

Исторически так сложилось, что Linux была особо популярной у технически "продвинутых" и грамотных людей, у тех, кто мог ее доделать под свои нужды. И за 21 год существования попадалась она в руки людей, занимающихся робототехникой. Поэтому стоит упомянуть специальный инструментарий для программирования роботов: Robot Operating System, известный так же как ROS. Он включает в себя инструменты для программирования множества роботов, в основном учебных и исследовательских.

ОС Linux способна работать как на крупнейших компьютерах мира, так и на простейших устройствах, таких как ТВ-приставки, Wi-Fi точки доступа, игровые приставки. Да вспомнить хотя бы мобильную ОС Android(TM) от Google - она тоже сделана на базе Linux. Причина, по которой это возможно - малый размер ядра OC Linux - всего несколько мегабайт. Есть конечно и сторонние инструменты, модули, библиотеки, приложения, которые могут"весить" сотни мегабайт. Но они именно "сторонние". А если Linux может быть таким маленьким, то можно записать его на роботов. Разработчики Lego об этом уже тоже подумали, и блок управления в новом конструкторе Lego Mindstorms EV3 уже использует прошивку на базе Linux. Давайте посмотрим, что в этом может быть хорошего.

Во-первых, заявлено, что прошивка тоже распространяется под открытым исходным кодом. То есть любой желающий может в нее "заглянуть" и, при необходимости, переделать под свои нужды. Не думаю, что каждый из нас способен на такое, но модификации от сообщества не заставят себя ждать. Стоит так же упомянуть, что у open-source разработчиков принято брать в основной продукт "куски" и функции из хорошо сделанных "ответвлений" и "продуктов на основе". И есть надежда, что разработчики из Lego будут заимстовать хорошие идеи от пользователей. А что может быть лучше, чем такая прямая связь: реализуются функции и "фишки", действительно нужные пользователям, а не "надуманные" разработчиками.

Во-вторых,  есть надежда, что при некоторой "дорабтке напильником" на блоке EV3 можно будет запускать стандартные программы для Linux. Очевидно, что он по своим вычислительным мощностям не потянет GIMP (аналог Adobe Photoshop(TM))  или Blender (аналог 3DS Max), но простые консольные программы и скрипты. А даже на них можно сделать очень много: воспроизводить музыку, вычислять сложные алгоритмы, создавать/копировать/удалять файлы, писать в них, читать из файлов. А теперь вспомним, что новый блок EV3 имеет порт USB-host. А это позволит подключать к нему флешь-накопители и всевозможные периферийные устройства: принтеры, клавиатуры/мыши/джойстики, веб-камеры, или даже сенсор Microsoft Kinect. Или даже популярные мобильные USB-3G модемы или WiFi-USB приемники - чтобы Ваш робот был всегда на связи.

С Lego-роботами все понятно. Но не только они могут нести "на борту" Linux. Да так оно уже и есть - очень многие инженеры и разработчики, придумывая очередного робота или автоматизированное устройство, стараются выбрать бесплатную открытую ОС, желательно с большим сообществом и подробным описанием в Internet'е. Linux идеально подходит по всем статьям. Существуют, конечно, и другие подходящие ОС, например, QNX - специальная ОС для встраиваемых систем и промышленной автоматизации. Но она скорее для профессионального применения и промышленного внедрения, а исследователи и любители во всю используют Linux'ы: "допиливают" его для работы на одноплатных компьютерах и прочих платах с ARM-процессорами, устанавливают на роботах полноценные нетбуки и ноутбуки с большими вычислительными мощностями, "учат" роботов использовать всевозможные хитрые устройства и периферию, подключают роботов ко Всемирной Паутине и так далее. Достаточно ввести в поисковик запрос "robot linux" и в ответ получим великое множество роботов, почти у каждого из которых есть какие-то индивидуальные особенности, делающие будущее немного ближе. Иногда даже удивляешься, что описываемые разве что в нучной фантастике вещи, уже стали реальностью и работают у кого-то дома, между холодильником и микроволновой печью.

Для полноты картины необходимо рассказать про "дочерние" от Linux'а системы. К наиболее изветсным и для нас полезным относятся MAC OS X, iOS и Android. С первой все понятно - она стоит на всех компьютерах и ноутбуках фирмы Apple, и на ней мы устанавливаем необходимо ПО - инструменты для программирования, моделирования, разработки роботов и т.д. В принципе, ни для кого не секрет, что существуют официальные версии для MAC OS X таких программ, как NXT-G, RoboLab, NeXT Tools (аналог BricxCC и nxcEditor), Lego Digital Designer и других "профессиональных" инструментов для расчета конструкций, математического моделирования, создания 3Д-моделей и построения электрических схем.

Применение нами iOS и Android не так очевидны.  Но они есть. Так, для iOS существует среда программирования роботов NXT - называется nxtBlock. Представляет собой адаптированную среду программирования Scratch. Она разработана специально для учебных целей, легко осваивается детьми, и немного похожа на NXT-G. Предполагается, что программирвать будут на устройстве с большим экраном (iPad), но и на телефонном экране все тоже вполне приемлемо. В робота программа загружается по Bluetooth'у.

Для Android подобной среды программирования нет, но есть инструменты для удаленного управления роботами: например, NXT Remote Control. Один мой ученик постоянно польззуется ею для проверки своих роботов - как они будут вести себя на большой скорости, насколько эффективно будут поворачивать, не будут ли переворачиваться во время езды. Замечу так же, что мне самому не удалось подключить свой телефон к роботу. Может быть какие-то особенные настройки Bluetooth'а, а может быть я недостаточно настойчиво пробовал.

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