- Программное обеспечение роботов
- Основные виды программного обеспечения роботов
- Способы программирования промышленных роботов
- Шесть самых современных андроидов, намекающих на наше синтетическое будущее
- Первый андроид-телеведущий
- BINA48
- Geminoid DK
- Джунко Чихира
- Надин
- София
- РОБОТ на базе: android, arduino, bluetooth. Начало
- Приступим к работе
Программное обеспечение роботов
Программное обеспечение промышленных роботов — это различные средства программирования, необходимые для настройки и взаимодействия с робототехническими системами. ПО включает различные объекты данных и списки инструкций (потоки программ), предназначенные для выполнения роботами манипуляций с объектами и предметами в реальной рабочей среде. При этом программы и данные размещаются в разных «отсеках» памяти контроллеров промышленных роботов.
Основные виды программного обеспечения роботов
В зависимости от того, для каких целей будет использовано ПО, оно подразделяется на средства:
технического обслуживания, позволяющие поддерживать роботов в наилучшем рабочем состоянии с помощью инструментов устранения неполадок, технического обслуживания и калибровки;
визуализации и мониторинга автоматизированных промышленных роботов, отображающие состояние устройств и уровни их работоспособности и производительности;
моделирования и симуляции работы технических комплексов. Эти инструменты и средства автономного программирования помогают разрабатывать и отлаживать решения роботизации до их внедрения;
разработки дополнительного ПО. С помощью этих средств создаются и настраиваются индивидуальные приложения для управления роботами;
программного управления контроллерами, предназначенные для программирования роботов непосредственно через логические контроллеры с использованием существующих периферийных средств;
прикладного программного обеспечения — в виде интерфейсов к внешним компонентам или устройствам, предназначенных для включения конкретных действий роботов.
Также программное обеспечение для роботов можно разделить на две категории:
контролирующее и управляющее ПО, включающее в себя графические интерфейсы для работы с телеуправляемыми системами, ПО для взаимодействия с автономно действующими роботами по схеме point-n-click и для формирования схем эксплуатации мобильных промышленных роботов;
ПО для задач, которое включает в себя простые интерфейсы с возможностью перетаскивания и настройки маршрутов перемещения и специализированные программы, созданные для развертывания конкретных приложений.
Разработка программного обеспечения для автоматизированных промышленных роботов должна осуществляться с соблюдением требований и концепций безопасности.
Способы программирования промышленных роботов
Технически программа для промышленного робота представляет собой последовательность позиций, которые должен пройти манипулятор робота — положений точек острия инструмента (TCP, Tool Center Point). Такой процесс создания исполняемой программы для контроллера робота называется runtime программированием и предназначается для того, чтобы задать положение TCP в пространстве «на ходу». Это означает, что исполняемая программа передается роботу «порционно», и он не хранит и не знает всю программу заранее.
Программное обеспечение промышленных роботов в режиме runtime создается по принципам:
онлайн-программирования. Программист непосредственно взаимодействует с роботом на месте его использования, при помощи пульта управления или физически перемещая TCP к заданным пространственным координатам;
оффлайн-программирования. Оно осуществляется удаленно от робота и его контроллера. Разработка исполняемых программ проводится в специализированной среде программирования промышленных роботов на ПК, после чего программы загружаются в роботов полностью.
Обучиться разработке ПО для промышленных роботов можно в ЦРК БИ (ЦЕНТР РАЗВИТИЯ КОМПЕТЕНЦИЙ В БИЗНЕС-ИНФОРМАТИКЕ) НИУ ВШЭ. В рамках представленного курса любой желающий сможет научиться создавать программы для роботизированных промышленных систем, используя популярные среды и языки программирования.
Источник
Шесть самых современных андроидов, намекающих на наше синтетическое будущее
Гуманоидные роботы устрашающе близко подобрались к нашей реальности. Правильно собранные, с использованием правильных материалов и правильных алгоритмов движения они становятся почти неотличимыми от своих органических копий. Почти. Самые новейшие из них уже способны разговаривать как мы, ходить как мы, а также выражать или по крайней мере имитировать целый спектр разнообразных эмоций. Некоторые из них уже вполне способны поддерживать разговор, а некоторые даже запоминают, когда в последний раз вы с ними говорили и о чем конкретно.
Кажется, еще немного — и они станут незаменимыми помощниками для пожилых, детей и любого другого человека, которому требуется ежедневная помощь по дому. К слову, уже проводятся целые исследования на тему эффективности гуманоидных роботов в поддержке в игровой форме детей с аутизмом.
Однако благодаря таким людям, как Илон Маск, слишком громко озвучивающим свои опасения по поводу искусственного интеллекта, среди общества разгораются жаркие споры о том, насколько сильно мы хотим, чтобы эти гуманоидные роботы походили на нас. Как и Маск, некоторые из нас задаются вопросом о том, как будет выглядеть наше будущее, когда искусственный интеллект обретет совершенную форму человеческого облика. Но такие вопросы совершенно не беспокоят, например, суперреалистичного робота-гуманоида Софию, созданную компанией Hanson Robotics, которая говорит, что «ИИ принесет пользу этому миру».
И все же мы еще очень далеки от продвинутой робототехники. Предстоит проделать еще немало работы перед тем, как мы сможем встретиться лицом к лицу с машиной, и даже не будет подозревать о том, кто же на самом деле перед нами находится. Хорошо это или плохо, но работа продолжается, и не сказать, что инженеры не продвинулись в этом направлении. Ниже будет представлено шесть сверхреалистичных роботов, с которыми робототехники подобрались ближе всего к ожидаемому и одновременно пугающему результату.
Первый андроид-телеведущий
В 2014 году японские ученые с гордостью представили первого в мире андроида, читающего новости. Железный ведущий с имением Kodomoroid в прямом эфире прочитал сообщение о землетрясении и проведенном ФБР очередном рейде на преступников.
Несмотря на то, что он (или она) в настоящий момент пребывает «на пенсии» в токийском Национальном музее развивающихся наук и инноваций, андроид по-прежнему находится в активном состоянии. Он помогает посетителям и собирает информацию для будущих исследований по вопросам взаимодействия между человекоподобными андроидами и людьми.
BINA48
BINA48 – это весьма смышленый робот, выпущенный в 2010 году компанией Terasem Movement под руководством предпринимателя и автора робота, Матрина Ротблатта. Дизайнер и исследователь робототехники Дэвид Хэнсон создал андроида BINA48 по образу и подобию жены Ротблатта, Бины Аспен Ротблатт.
Газета New York Times даже взяла у робота интервью. Он появлялся в National Geographic и даже путешествовал по миру, появившись в ряде телевизионных шоу. Посмотреть на то, как проходило интервью с BINA48, можно ниже.
Geminoid DK
GeminoidDK представляет собой ультрареалистичного гуманоидного робота, является результатом совместной работы частной японской компании и японского Осакского университета и был создан под руководством Хироси Исигуро, главы университетской Лаборатории интеллектуальной робототехники.
Робот был разработан по образу датского профессора Хенрика Шарфе из Университета Ольборг. Вполне неудивительно, что прототипом послужил человек, чья работа связана с философской сферой. В частности, проблемой, которой занимается профессор, является поиск ответа на вопрос о том, что определяет истину от лжи. Что интересно, андроид позаимствовал не только внешность Шафре. Он также унаследовал его привычки, поведение, манеру речи, а также мимику и язык тела.
Джунко Чихира
Этот сверхреалистичный робот был создан компанией Toshiba и работает полный день в туристическом информационном центре в Токио. Она приветствует посетителей центра и информирует их о текущих мероприятиях. Она знает японский, китайский, английский и немецкий языки и даже может на них петь.
Джунко Чихира была создана в рамках подготовки Японии к Олимпийским играм 2020 года. Планируется, что помогать туристам и обслуживающему персоналу во время наплыва поклонников спорта со всего мира будут не только информационные андроиды. Правительство страны также хочет задействовать автономных дронов и другие автоматизированные машины и сервисы.
Надин
Этот гуманоид был создан Наньянским технологическим университетом Сингапура. Ее имя Надин, и она рада общению практически по любому вопросу, который вы ей зададите. Она способна запоминать вещи, о которых вы говорили с ней ранее, и в следующий раз она обязательно вам о них напомнит.
Надин – отличный пример так называемых «социальных роботов», гуманоидов, способных стать идеальным товарищем для любого, будь то пожилой человек, ребенок или любой, кому требуется особая помощь в форме социального контакта.
София
Возможно, одним из самых современных и самых известных человекоподобных андроидов, показанных общественности, является София. Она множество раз появлялась в различных в телевизионных программах и в частности американском шоу The Tonight Show Starring Jimmy Fallon (Ночное шоу с Джимми Фэллоном). Андроида создала компания Hanson Robotics.
Она способна выражать целый набор различных эмоций с помощью своей имитации мимики и жестов и весьма активно жестикулирует своими руками. Для андроида даже создали ее собственный веб-сайт, где можно найти ее полную биографию, записанную ее голосом.
«Я больше, чем просто технология. Я настоящая электронная девушка. Я бы очень хотела попасть в реальный мир и жить вместе с людьми. Я готова помогать, развлекать, оказывать помощь пожилым и обучать многим интересным вещам детей».
Источник
РОБОТ на базе: android, arduino, bluetooth. Начало
Создание робота, даже простенького с ограниченным функционалом, довольно интересная и увлекательная задача. В последнее время любительская робототехника переживает настоящий бум, ей начали увлекаться даже те люди, которые от электроники очень далеки (к ним отношусь и я). Прошло то время, когда нужно было сидеть ночами с паяльником, или травить платы. Все стало гораздо проще, нужно лишь купить Arduino, комплект проводков, сенсоры, датчики, моторчики и вперед к сборке своего первого робота. Таким образом, фокус разработчиков — любителей сместился с электроники и механической части к программированию.
Данная серия статей будет содержать информацию для быстрого старта по созданию своего первого робота, от покупки необходимых деталей до его запуска в наш мир.
Отмечу, что статьи я пишу по ходу самостоятельного изучения материала и создания своего первого робота.
Предполагается, что человек читающий статью уже имеет опыт в:
- Установке и настройке среды разработки для android устройств.
- Написании первой программы Hello World для android устройства.
- Установке драйверов и среды разработки для Arduino.
- Написании первой программы (включать, выключать) светодиоды на Arduino.
Сокращения
БТ – Bluetooth;
Андроид – устройство с ОС android, к примеру, смартфон;
Скетч – приложение для Arduino;
Ардуино – Arduino Nano.
Общая схема робота
Пусть робот имеет следующую общую схему (рис.1). Андроид, является «головным мозгом», в котором обрабатываются все данные и проводятся вычисления. На основании результатов вычислении по БТ каналу передаются команды, принимаемые БТ модулем и в дальнейшем поступающие по последовательному порту в Arduino. Arduino обрабатывает поступившие команды и выполняет их при помощи «мышц» (Моторы светодиоды и др.). Кроме того в Arduino поступают данные от «органов чувств» (сенсоры, датчики и др.), которые он приводит в удобный вид и отправляет при помощи БТ модуля в «головной мозг». И так все повторяет до бесконечности.
Рисунок 1
Обоснование именно такой схемы робота следующее:
-БТ модуль и Arduino Nano имеют низкую стоимость, а также маленький объем и вес.
-Андроид, не дорогое и доступное устройство, уже имеется у огромного количества людей, в том числе и у меня.
-Андроид имеет свои сенсоры, датчики и экран для вывода информации
-Простота написания кода для приложений как для андроида так и для ардуино.
Для упрощения задачи построения робота, предлагаю воспользоваться методом «от простого к сложному», т.е. как и при изучении языка программирования создадим первую программу «Hello word». Конечно, это будет не одна программа, а как минимум две (для ардуино и андроида). В каждой последующей статье функционал робота будет увеличиваться.
Постановка задачи
Собрать простенькое устройство, у которого имеются:
-2 кнопки (b1, b2).
-1 светодиод (Led).
И выполняется функционал:
-главное activity содержит 2 кнопки «Отпарвить 0» и «Отправить 1», при нажатии на которые от андроида к ардуино по БТ каналу передаются данные, соответствнно «0» и «1», ардуино их обработвает и зажигает либо тушит светодиод.
-данные о нажатии или отпускании кнопок от ардуино передаются в андроид, на экране главного activity выводится информация об этом.
Закуп необходимых деталей и узлов.
1) Android устройство – смартфон LG P500 (версия Android 2.3.3), либо любое другое устройство на базе Android версией 2.3.3 и выше. Цену не указываю, так как отдельно не покупал, а использую свой смартфон.
2) Arduino NanoV3.0 ( dx.com/ru/p/nano-v3-0-avr-atmega328-p-20au-module-board-usb-cable-for-arduino-118037 ) — 11,32$
3) Модуль Bluetooth ( dx.com/ru/p/bluetooth-board-module-4-pin-121326 ) — 10,57$
4) Макетные провода ( dx.com/ru/p/30cm-breadboard-wires-for-electronic-diy-40-cable-pack-80207 ) — 2,51$
5) Кнопки — 2шт., светодиод – 1 шт. – 50 рублей
Итого: 855,20 рублей.
Приступим к работе
Arduino
Соберем из имеющихся деталей схему (рис. 2)
Рисунок 2
Питание на arduino подается по USB кабелю, который подключается к компьютеру, по нему же загружается и программное обеспечение (скетч) выполняемое на нем. Необходимо отметить, что загружать скетч в arduino можно только тогда, когда отключено питание от Bluetooth модуля (Вывод (17) 3V3), в противном случае возникает ошибка.
Подробности установки среды разработки Arduino и драйверов можно найти на официальном сайте: arduino.ru/Guide/Windows
Ниже приведен скетч который необходимо загрузить в ардуино:
Объявляем переменные, напротив каждой стоит комментарий.
Инициируем последовательное соединение и задаем скорость передачи данных в бит/c (бод). Мой БТ модуль работает на скорости 38400, но может быть скорость 9600 (скорость БТ модуля можно задавать при помощи AT команд). Устанавливаем режим работы заданного входа/выхода(pin) как входа или как выхода. Подаем HIGH значение на входы и выходы.
Функция void contact_bounce(int buttton) обрабатывает нажатие кнопок и позволяет устранить дребезг контактов, который возникает при соприкосновении или расхождении контактов в механических переключающих устройствах, таких, как кнопка, происходит многократное замыкание и размыкание.
В основном цикле Loop слушаем последовательный порт, и если на него пришли данные мы их обрабатываем. Кроме того вызываем функцию обработки нажатия кнопок и устранения дребезга контактов.
Загрузив скетч в ардуино, можем проверить его работоспособность – запустив монитор порта. При нажатии кнопок в окне монитора будет выводиться надпись «Press button b». Проверить работу светодиода удастся только после написания приложения для андроида.
В данной статье для ардуино будет использоваться только этот скетч.Приступим к разработки приложения для андроида.
Android
Для удобства отладки приложения андроида, рекомендую использовать не «Android virtual device», а реальный смартфон с ОС Android версии от 2.3.3 подключенный через USB кабель к компьютеру в режиме «Отладки». Существует огромное количество статей как это сделать.
Android ШАГ 1
Создаем новый проект «Android application project»
Для работы с БТ необходимо выставить права на использование его нашим приложением. Для этого заходим в манифест, выбираем закладку Permissions, нажимаем add, далее Uses permission, и устанавливаем следующие права: android.permission.BLUETOOTH, android.permission.BLUETOOTH_ADMIN
Теперь оформим основное activity, в res/layout/activity_main.xml поместим код:
Таким образом, основное activity примет вид:
Рисунок 3
Текстовое поле «txtrobot», будет отображать всю необходимую нам информацию. Кнопки b1 и b2, будут отправлять команды в arduino.
Теперь переходим в src/../MainActivity.java здесь и будет располагаться наш основной код. Подключим пакет Api для Bluetooth:
Перед тем как использовать БТ необходимо убедится, что в нашем андроиде он присутствует. Создадим экземпляр класса BluetoothAdapter (отвечающий за работу с установленным в андроиде БТ модулем):
Если андроид не имеет БТ то будет возвращено null:
В данном виде программу уже можно запустить. На экране андроида вы должны увидеть надпись: «Bluetooth присутствует».
Теперь необходимо убедиться, что БТ включен, либо предложить его включить. Добавим константу:
Запустив измененное приложение на андроиде, Вам будет выдан «Запрос разрешения на включения Bluetooth», подтвердив его, тем самым Вы активируете БТ.
Полный код приложения:
Android ШАГ 2
Для дальнейших экспериментов, необходимо «спарить» наш андроид и БТ модуль, для этого на андроиде в настройках БТ, выполним поиск и подключимся к БТ модулю, пароль «1234».
Если вдруг удаленный БТ модуль не будет нормально работать, просто отключите от него все провода (VCC, GND,RX,TX), тем самым сделав жесткую перезагрузку, и снова подключите их — это должно помочь.
Теперь попробуем программно подключится к удаленному БТ модулю: основной код подключения разместим в onResume. onResume – это одно из состояний нашего Activity, а именно, Activity видно на экране, оно находится в фокусе, пользователь может с ним взаимодействовать. Ниже приведен основной код Activity:
Доступ к удаленному БТ модулю получаем по его МАС адресу btAdapter.getRemoteDevice(MacAdress). Узнать MAC-адрес БТ модуля можно, при помощи программы для андроида: Bluetooth Terminal.
Что бы убедится, что доступ к БТ модулю получен, используем метод getName(), который позволяет получить имя удаленного БТ модуля, и выводим результат на экран андроида.
Также в этом примере, была добавлена возможность ведения лога, который по ходу выполнения программы можно просматривать, и обнаруживать существующие ошибки. Кроме того создана функция MyError, которая вызывается в том случае если нужно аварийно завершить приложение.
Запустив приложение, на экране андроида в текстовом поле «txtrobot» отобразится имя удаленного БТ модуля.
Android ШАГ 3
Доступ к удаленному БТ модулю получен, следующий наш шаг передать данные от андроида к нему. Для этого в onResume(), создадим сокет:
где UUID (Universally Unique Identifier) — это стандарт идентификации, используемый в создании программного обеспечения. Добавим в определение константу UUID:
Чтобы не тормозить соединение отменим поиск других БТ устройств:
При не удаче закроем сокет:
Так как методы отправки и получения данных являются блокирующими, их следует выполнять в отдельном потоке, что бы предотвратить зависание основного приложения. Для этого создадим класс:
В конструкторе public ConnectedThred(BluetoothSocket socket) создается объект управляющий передачей данных через сокет:
Для отправки данных из главного activity вызывается метод sendData(String message) с параметром текстового сообщения, которое преобразуется к типу byte. Метод cancel() позволяет закрыть сокет.
Напишем, обработчики нажатия кнопок b1 и b2, содержащие вызов функции sendData(String message) и сделаем запись об этом в логе. Полный код приложения приведен ниже:
Написанное нами приложение, позволяет передавать по БТ от андроида к ардуино данные – «0» и «1», которые в свою очередь для ардуино являются командами «1» — зажечь светодиод, а «0» — потушить. Таким образом, с учетом общей схемы робота, мы научились отдавать команды от «головного мозга» к «мышцам». Осталось дело за малым, научить андроид принимать данные от «органов чувств».
Android ШАГ 4
Получение данных также как и отправку, необходимо выполнять в отдельном потоке, чтобы избежать зависание главного activity. Принятые данные от БТ модуля мы будем выводить на экран главного activity в текстовом поле – MyText. Но возникает трудность — работа с view-компонентами доступна только из основного потока. А новые потоки, которые мы создаем, не имеют доступа к элементам экрана. Для решения данной проблемы воспользуемся механизмом Handler.
Handler — это механизм, который позволяет работать с очередью сообщений. Он привязан к конкретному потоку (thread) и работает с его очередью. Handler умеет помещать сообщения в очередь. При этом он ставит самого себя в качестве получателя этого сообщения. И когда приходит время, система достает сообщение из очереди и отправляет его адресату (т.е. в Handler) на обработку.
Объявим Handler:
Источник