Русский
Русский
English
Статистика
Реклама

Robotics

Как мы сделали простого WebRTC робота в домашних условиях

15.12.2020 14:09:01 | Автор: admin

Концепция

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

Технология WebRTC идеально нам подошла, так как довольно легко организовать передачу видео, аудио и data каналов между двумя peerами с минимальной задержкой сигнала. Да и опыта работы с этой технологией у нас не было, потому очень хотелось попробовать.

Упрощенная схема всей системы приведена на рисунке. Пользователь - оператор и робот - Raspberry PI заходят каждый на свою веб-страницу, подключаются к сигнальному серверу, после чего между ними создается WebRTC сессия через которую и передается видео-поток с робота пользователю, и передаются управляющие сигналы роботу. Дальше, управляющие сигналы робот отправляет на свой localhost где уже другой сервис их обрабатывает и выводит на GPIO, для управления моторами. Кажется все просто. Вот что у нас получилось на данном этапе:

Далее разберемся со всем этим более детально.

Комплектующие

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

Главный контроллер

Так как у нас было две платы Raspberry Pi (3b и 4), и они нас вполне устраивали, то было решено использовать именно малинку со стандартной OS Raspbian. Применение данной платы дает возможность усовершенствования в будущем, использования OpenCV, подключение дополнительной периферии и т.д. И она достаточно распространенная чтобы можно было без проблем купить дешевый корпус и не боятся запачкать его в клей, или просверлить парочку монтажных отверстий.

Глаз (камера)

В качестве камеры можно в общем-то использовать любую вебку (что мы первое время и делали), но в процессе тестирования оказалось что лучше брать камеру с относительно высоким показателем FPS и светочувствительности. Потому практически сразу после первых тестов заменили старую вебку Logitech QuickCam Connect на относительно современную Logitech C270 приобретенную на доске бесплатных объявлений за 12$. Можно было использовать и Raspicam, но это обошлось бы несколько дороже.

Механика

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

  1. Часто слетают гусеницы при повороте на поверхностях с высоким коэффициентом трения, например на ковре.

  2. Очень шумные редукторы на моторах

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

Питание

Для исключения возникновения помех и просадок напряжения цепи питания моторов и Raspberry Pi было решено разделить. Изначально драйвер моторов был запитан от телефонного аккумулятора на 3.7В с импульсным повышающим преобразователем напряжения типа DC-DC MT3608, но драйвер моторов не захотел с ним адекватно работать, и уходил в зашкал. Вероятно из-за импульсного характера напряжения. Потому было куплено два одинаковых аккумулятора от старого телефона Samsung. И они идеально вписались в батарейный отсек, будучи соединенными конструктивно скотчем и последовательно электрически. А малинка запитана от power-банка Xiaomi с быстрой зарядкой, так-же идеально подходящей под габариты платформы. Величины тока вполне хватает для питания Raspbery Pi4.

Драйвер моторов

Изначально был выбран драйвер L9110, но он часто выключался при питании от повышающего DC-DC преобразователя, потому код был исправлен и установлен L293N. Проблему это не решило, а модуль так и остался. Принципиальной разницы в работе модулей замечено не было.

Конструкционный монтаж

Так как это лишь домашний прототип, то собирается все из "полиморфа", палок и супер-клея. Очень удобно было использовать советский металлический конструктор Малыш приобретенный на доске бесплатных объявлений за 1$. Power-банк на самом дне, для сохранения низкого центра тяжести. Прижат пластиной из конструктора, на которую пластиковыми болтами закреплены две скобы к которым уже и крепится корпус Raspberry Pi. Камера прикручена в задней части по причине того что так комфортнее управление. Проще понимать габариты когда видишь края гусениц, а объектив на камере не широкоформатный. Чудесным образом размер пластины из конструктора совпал с габаритным размером задней части платформы, что дало возможность спрятать под пластину скрученный длинный провод. Мелкие детали крепятся на супер-клей. А драйвер моторов - на двухсторонний скотч прямо к power-банку.

Программная часть

Так как это прототип, то качество кода, да и всего проекта в целом соответственное. Есть некритические ошибки. Реализован проект на языках JavaScript и Python. Репозитории проекта с комментированным кодом доступен по ссылке. Весь код тут приводить не буду, постараюсь описать только основные моменты.

Сигнальный сервер

Представлен примитивным NodeJS сервером. Он выполняет две функции:

  • Отдает нужные страницы для платформы и на устройство оператора, который управляет роботом.

  • Собственно сигнальная функция, т.е. обслуживает подключения по веб-сокету.

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

Для общения с сигнальным сервером из клиентской части реализован класс SignalEmitter. Принимает в конструктор объект с настройками. id - идентификатор платформы , isControl - переменная указывающая на то платформа это или оператор. signalServer - uri сигнального сервера. Развернут он у нас на старом десятилетнем ноутбуке.

const se = new SignalEmitter({id: searchParams.get('id'),isControl: false,signalServer: config.signalServer});

WebRTC

Для соединения по протоколу был реализован класс RTC. В конструктор принимает два параметра - объект настроек options и экземпляр класса SignalEmitter, который был описан выше. isControl - переменная указывающая на то платформа это или страница оператора. platformSocket - uri localhost'а с портом на который отправляется управляющий сигнал для гусениц.

const webrtc = new RTC({isControl: false,platformSocket: config.platformSocket}, se);

Интерфейс клиентской части

Для прототипирования интерфейса использовался Vue.js, так как достаточно простой и позволяет быстро реализовать идею. Все что касается интерфейса находится в директории /public. Как выглядит прототип интерфейса и его функционал опубликовал в видео:

Selenium

Чтобы не запускать вручную каждый раз браузер, мы решили использовать Selenium WebDriver + geckodriver в headless режиме. Код императивный и очень простой, находится в файле robot-signal-server/selenium/index.js. Здесь мы подключаем конфигурационный файл, устанавливаем нужные флаги браузеру и открываем соответствующую страницу. О назначении каждого с флагов можно догадаться интуитивно, ну или же воспользоваться поисковиком. Можно добавить выполнение скрипта в /etc/network/if-up.d/ что бы он запускался автоматически при подключении к сети.

Управление драйвером двигателей

Эта часть написана на Python. Ее функция - принять управляющий сигнал по websocket со страницы платформы, преобразовать сигнал и вывести соответствующие значения на выводы GPIO. Так как схема управления у нас танковая, то контракт сигнала у нас такой: [0+-1, 0+-1] в формате JSON. Т.е. два значения, для левой и правой гусеницы, которые изменяются в пределах от -1 до +1 с шагом 0.01. Что соответствует движению назад и вперед, и дает возможность весьма точно регулировать скорость движения с помощью широтно-импульсной модуляции. (см. GItHub репозиторий)

Вывод

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

А повсеместное распространение скоростного 3/4/5G дает возможность использовать интернет вместо традиционного радиоканала в управлении БпЛА типа различных коптеров из современными полетными контроллерами со стабилизацией и прочими плюшками, ограничивая радиус действия только покрытием сети и возможностями аккумулятора. И еще видео:

Подробнее..

Начать заниматься роботами должно быть просто

09.11.2020 08:05:16 | Автор: admin

Введение


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

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



Интересно? Тогда начнём.


Возраст


Изначальная предполагаемая целевая аудитория дети примерно 7-10 лет, но уверен, что это может быть интересно и детям в возрасте до 99 лет и старше.

От себя лично могу добавить, что при определённой помощи данный процесс удалось успешно донести и повторить в классе из десяти детей в возрасте примерно 5-6 лет, пусть и с некоторыми упрощениями и абстракциями. Детям понравилось и это главное.

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

Полностью с нуля со всеми деталями можно собрать это примерно за 2-3 часа. Или чуть дольше если торопиться и что-то пойдёт не так.

Идея


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

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

Теория


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

Устройство робота можно свести к трём основным узлам:
Сенсоры (Sense) это сенсоры, которыми робот видит окружающий мир. В нашем случае это глаза робота, которые смотрят на дорогу.
Мозг (Plan) это та часть робота, которая получает информацию от сенсоров, обрабатывает и передаёт команды на исполняемые части.
Исполнители (Act) эти части робота непосредственно выполняют действия по командам, которые были получены от мозга.

Sense-Plan-Act
Sense-Plan-Act является уже устаревшей формулировкой, но в данном упрощённом варианте она вполне неплохо объясняет эти простые принципы.


Если это перевести на нашего робота, то получится такое:
Глаза робота это сенсоры, которые видят происходящее перед роботом. В нашем случае глаза смотрят на дорогу.
Мозг робота это маленький компьютер, которые получает информацию от глаз, решает как на неё реагировать и отдаёт команды мышцам.
Мышцы робота это драйвер моторов, который получает и усиляет сигнал от мозга и крутит колёса в нужном направлении.
Ноги робота это как раз наши колёса, которые везут робота навстречу новым приключениям.
Так как сигналы мозга слабы, что бы дать команду нашим ногам, у нас есть мышцы, которые принимают сигналы от мозга, усиляют их, а потом передают движение ногам.
В нашем случае Исполнители это мышцы+ноги.

Упрощённо полный путь сигнала можно представить в виде: глаза -> мозг -> мышцы -> ноги.

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

Реализация


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

Программная часть:


Алгоритм


Алгоритм до безобразия прост:
У робота впереди стоят два сенсора, которые смотрят на дорогу. Сенсоры могут различать светлое и тёмное по тому как отражается свет от поверхности.
Дорога выполнена в виде тёмной полосы, по которой робот едет.
Если оба сенсора видят светлое значит, мы идём по дороге, так как наша тёмная дорога проходит ровно между сенсорами.
Когда один сенсор видит тёмное, то дорога ушла вбок и мы делаем поворот колесо со стороны этого сенсора замедляется.
В случае когда оба сенсора видят тёмное, то это сигнал остановки.

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

Сам код можно посмотреть на github.com/nochkin/esp-line-follower.

Закачивание программы в мозг


Когда я вёл класс с 5-6-летками, то на все мозги предварительно была загружена нужная программа, что бы не тратить на это время во время класса.
Сам процесс закачивания программы в микроконтроллер не отличается от других Arduino-совместимых плат: установить плагин для ESP8266 (если ещё не установлен), подключить ESP8266 модуль по USB, открыть или скопировать скетч (файл .ino) и нажать Upload.
Тут есть более подробная инструкция установки поддержки ESP8266 в Arduino для тех, кто с этим пока не знаком:
github.com/esp8266/Arduino#installing-with-boards-manager

Железная часть:


Как основа для шасси, использована двух-колёсная платформа. Она легко доступна, у неё простая конструкция и с ней легко работать.
Центром управления был выбран популярный микроконтроллер Espressif ESP8266, реализованный в виде модуля NodeMCU.
Так же для этой платы есть удобный модуль для драйверов двигателя на L293DD. Как раз достаточно для раскачивания двух небольших моторов. Только благодаря наличию этого модуля для моторов количество соединительных проводов заметно снижается.

Схема соединений


Примерная схема соединений получается такой:


Список основных компонентов:


  1. ESP8266 NodeMCU v2
  2. Motor Shield для NodeMCU v2
  3. Пара инфра-красных сенсоров
  4. Двух-колёсное шасси с моторами и колёсами
  5. Соединительные провода (Dupont wires) для сенсоров
  6. Дополнительные винты/гайки/крепления для установки сенсоров и контроллера на шасси
  7. Чёрная изолента для дороги (если поверхность достаточно светлая, то можно и синюю)

Общая стоимость всех деталей обычно не превышает $20.

Немного подробнее о компонентах:
  1. ESP8266 NodeMCU v2:

    Существует несколько вариантов ESP8266 NodeMCU модулей. Они не все совместимы друг с другом как электрически, так и механически.
    В данном проекте используется ESP8266 NodeMCU v2. Самый простой признак этот модуль использует CP2102 для USB интерфейса. Вариант NodeMCU на базе CH340G обычно шире физически и поэтому не подойдёт для драйвера моторов.
  2. Motor Shield для NodeMCU v2:

    Прелесть этого модуля тем, что NodeMCU плата вставляется в него и поэтому количество проводов в проекте сильно уменьшается.
    Существует только один вариант этого модуля на базе L293DD. Этой микросхемы достаточно как раз что бы раскачать двигатели на нашем шасси.
  3. Инфракрасные сенсоры:

    Данные модули представляют из себя светодиод (излучатель) и фотодиод (приёмник). По отражению робот может определить что он видит перед собой тёмную полосу или светлый пол.
    Я советую брать модули с подстройкой, что бы можно было отрегулировать чувствительность и уменьшить ложные срабатывания при определении светлого и тёмного.
    Советую заказать больше двух стоят они не много, но у них есть высокий риск сломаться при неосторожном обращении.
  4. Для шасси был выбран один из самых популярных и доступных вариантов на интернет просторах.
    В этом комплекте уже есть моторы со встроенными редукторами, колёса, держатель для трёх AA элементов и минимальный набор винтов и гаек что бы это всё собрать вместе.
    Как альтернативный вариант для питания, можно заменить держатель 3 * AA на держатель для одного литий-йоного элемента в формате 18650.
  5. Dupont провода.
    Провода надо с разъёмами мама-мама (female-female). Оптимальная длина примерно 20 см. Желательно что бы провода были разных цветов во избежании путаницы при подключении.
  6. Дорога

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


Сборка


В классе с 5-6-летками пункты 1-5 были выполнены предварительно для того, что бы детям надо было только разобраться с подключением проводов для соединения ключевых органов робота друг с другом.
То есть, они как раз собирают эту соединительную сигнальную нервную систему сами. Тут по ходу можно ещё раз показать где тут глаза, мозг, мышцы, ноги и как они все взаимодействуют друг с другом.

  1. Небольшая подготовительная операция.
    a) Часто провода идут не припаянными к моторам. В этом случае надо их припаять. Это единственный момент где нужна пайка. Если нет вариантов, то можно кого-то заранее попросить припаять или попробовать самому прикрутить провода, но в случае прикручивания сложно сделать хороший контакт. Надо иметь это в виду.
    b) Модули драйвера двигателей могут идти с джампером на гребёнке с питанием (VIN-VM-NC) или без оного. В последнее время джампер не ставят, но сама гребёнка есть.
    Если есть джампер в закромах, то надо его поставить в позицию VIN-VM. У меня не было такого количества джамперов для всего класса и я просто припаял перемычку снизу платы.
    Конфигурация VIN-VM позволяет использовать один и тот же источник питания для моторов и для мозгов.

  2. Начнём со сборки самой платформы.
    Перед установкой компонентов я советую установить шестигранные крепления для модуля драйвера двигателей и инфракрасных сенсоров.

    Теперь установим держатели для моторов и сами моторы. Колёса лучше ставить в самом конце.
    Потом надо установить держатель для AA элементов. Провода пока соединять не надо. Выключатель я не устанавливал, так как на модуле драйвера двигателя уже есть выключатель.
    Часто в комплекте есть энкодеры (круглые диски с поперечными отверстиями по кругу), но в данном проекте они не используются, поэтому устанавливать не обязательно.
  3. Вставляем мозг робота на мышцы, то есть ставим модуль микроконтроллера на модуль драйвера двигателей.
    Важно соблюдать правильное направление, иначе будет взрыв мозга в виде белого дыма, на котором работает вся электроника в мире. Антенна на модуле микроконтроллера должна совпадать с нарисованной антенной на модуле драйвера.
  4. Привинчиваем бутерброд с мозгами и мышцами на шасси.


  5. Устанавливаем два инфракрасных сенсора так, что бы передатчик-приёмник смотрели вниз.
    Можно либо установить сами модули вертикально (но я не придумал как это сделать легко), либо подогнуть передатчик-приёмник на 90 градусов. Подгинать надо не спеша, что бы не отломать их случайно. Если есть время, то может быть проще просто перепаять как надо без риска отломать.

  6. Соединяем провода.
    На модуле драйвера есть восемь синих клемм. Достаточно ослабить их отвёрткой, что бы внутрь пролез провод и потом закрутить винт, что бы провод не выпадал и имел хороший контакт.
    Подключим питание на VIN и GND (VIN-красный, GND-чёрный). Важно соблюдать полярность и не перепутать плюс и минус.
    Подсоединим оба мотора на A-/A+ для левого и b+/B+ для правого. Тут тоже надо соблюдать полярность, но при ошибке мотор будет крутиться в другую сторону и в этом случае достаточно провода поменять местами в клеммах.
    Теперь соединим глаза. Тут я использую Dupont wire для удобства. Пожалуй, для детей (да и для некоторых взрослых) это самый сложный шаг. У каждого модуля сенсора есть три контакта плюс (VCC), минус (GND) и сигнал (OUT). Сложность в том, что на модуле драйвера эти сигналы стоят в другом порядке и важно проверить правильное соединение.
    Левый глаз робота идёт на группу 5, а правый глаз идёт на группу 6 (группы заданы в программе робота).


Первый пуск


Ставим наше творение на относительно светлый пол (главное, не на стол или куда-то ещё откуда он может упасть) и включаем кнопкой на модуле драйвера. Кнопка находится ближе к синим клеммам и рядом с VIN-VM-NC джампером.
На пустом относительно светлом полу робот должен ехать вперёд. Он может немного заворачивать вбок из-за асимметричности моторов или сборки, но это не так важно.
Если робот крутиться на месте как кот, играющийся со своим хвостом, то это означает то, что один из моторов с перевёрнутой полярностью. Провода этого мотора надо поменять местами на синих клеммах.
На случай если робот едет назад, то полярность надо поменять на двух моторах.
Бывает что один из моторов не крутиться вообще, обычно достаточно проверить соединение, так как бывает что провод слишком глубоко закручен в синюю клемму и прижим приходится на изоляцию от провода, а не на сам провод.

Проверка зрения


Для проверки сенсоров достаточно приклеить полоску чёрной изоленты перпендикулярно движению так, что бы оба сенсора на неё попали. Если робот остановился на полоске, то сенсоры работают и настроены правильно.
Бывает, что при слишком тонкой полоске робот может проскочить её из-за своей инерционности. В этом случае достаточно сделать полоску пошире.

Дорога


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

Итог


Он видит. Он едет. Сам.

Это результат одного из проведённых классов по сборке с пяти-летними студентами:


А тут самое интересное запуск и проверка:




Небольшие потери
Конечно, не обошлось и без небольших потерь когда кто-то случайно наступил на соседнего робота во время восторга:


Подробнее..

Собираем свой маленький беспилотник

11.02.2021 20:09:20 | Автор: admin

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

Вот так выглядят маленькие беспилотникиВот так выглядят маленькие беспилотники

Как я дошёл до этого

Мне всегда были интересны темы беспилотников и роботов, но руки до такого не доходили - боялся слишком большого объёма навыков, которые потребуются для этого.

В марте-апреле 2020го года, когда сидение дома уже порядком поднадоело, понял, что я созрел для беспилотников. И, вдохновлённый статьёй Беслана, принялся изучать вопрос и заказывать необходимые комплектующие на Али и в других магазинах.

Приезжали заказы в разное время, поэтому, из всего, что попадало под руку, собирал первые версии беспилотника (тогда ещё ни разу не беспилотного).

Первые шагиПервые шаги

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

В качестве мозга для беспилотника я выбрал Nvidia Jetson Nano Developer kit, а в качестве тачки - Remo Hobby S-Max - это то немногое, что осталось в беспилотнике по сей день.

Рабочий прототип из картона и макетных платРабочий прототип из картона и макетных плат

Затем машинка стала обрастать новыми компонентами: появились беспроводная сеть, лидар, IMU и остальные.

В процессе добавления я осваивал кучу нового:

  • ROS

  • Вспоминал/изучал C++

  • Учился работать с разными устройствами

  • Осваивал нейронные сети и машинное обучение

  • Узнавал про алгоритмы, специфичные для роботов и беспилотников

  • Паял, резал, клеил и всячески работал руками и головой

Когда картон и макетные платы стали слишком замедлять процесс - приобрёл недорогой, но большой 3D принтер, а провода спаял с нужными разъёмами.

Сперва спроектировал всё из картона и соплей (но с котиком)

Почти рабочий прототипПочти рабочий прототип

А потом уже сделал корпус из пластика. В процессе пришлось освоить проектирование в CAD (использовал FreeCAD) и разобраться с настройкой принтера.

Потом писал алгоритмы, исправлял баги и добавлял датчики.

Что получилось

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

Тут есть:

  • камера (ночного видения), что бы смотреть и распознавать объекты

  • однолучевой лидар и лазерные датчики расстояния, что бы строить карту стен и других препятствий

  • управление машинкой, что бы ехать, куда хочется

  • колёсная одометрия и IMU, что бы понимать куда вы заехали

Уже есть несколько готовых скриптов (Jupyter notebook'ов):

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

  • беспилотный режим: машинка сама исследует помещение, строит его карту и ищет жертву живность (людей, кошек и собак), а, найдя такой объект, - следует за ним

Я потратил много времени и оттоптал много разных граблей и велосипедов, и теперь хочется поделиться своим опытом и наработками с сообществом.

Что требуется (список компонентов)

  • RC машинка Remo Hobby Smax 1:16 RH1635

  • Контроллер мотора, у меня такой: SURPASS HOBBY KK 35A ESC Waterproof Electric Speed Controller for 1/16 RC Car Brushless Motor Power system

  • Одноплатный компьютер Nvidia Jetson Nano Developer Kit

  • Микро SD карта на 64 GB (возможно, влезет и на 32)

  • wi-fi карточка типа такойи пара антен с IPEX разъёмом (USB свистки с wi-fi показали себя очень плохо)

  • Два датчика Холла типа KY-003 для Arduino

  • магнит примерно такого размера: 20x3x2 мм

  • камера, работающая с Jetson Nano; у меня IMX219 8MP Infrared Night Vision 160 Degree FOV + 2 Infrared LED Lights

  • система питания для jetson'а типа T208 или T200 на 18650 акумуляторах и сами аккумуляторы или повербанк (но тут нужно брать с хорошим током и нужно будет stl модельку для корпуса под него исправить)

  • однолучевой лидар типа YDLIDAR X2L

  • IMU типа Bosh BNO055

  • ШИМ плата PCA9685 для соединения контроллера двигателя и Jetson'а

  • Конвертер логических уровней для преобразования из 5V в 3.3V и обратно

  • короткий USB - USB-C дата кабель (что бы заменить слишком длинный кабель от лидара)

  • (опционально) два датчика расстояния; у меня VL53L0X (6 pin)

  • доступ к 3D принтеру

  • провода, коннекторы, стяжки, инструменты и т.д.

  • руки, которые смогут всё это соединить

Более подробно и со ссылками есть на github проекта.

Как собрать

Сделал туториал по сборке в виде нескольких видео.

Там же видео проездов и обсуждение задач и проблем.

Часть 1. Рассказываю, что и зачем делаю, соединяю основные компоненты.

Часть 2. Паяю, соединяю компоненты проводами.

Часть 3. Гоняю, рассказываю про софт и алгоритмы.

Часть 4. Запускаю два беспилотника вместе; добавляю лазерные сенсоры, что бы они друг друга видели

Ссылки

Код, STL модели для печати, описание и ссылки есть на github проекта.

Видео есть на моём канале, там же будут выходить новые серии.

Обсуждение этого и других интересных проектов роботов и беспилотников в telegram канале.

Что дальше

Буду дорабатывать алгоритмы:

  • дотюню/улучшу текущие

  • добавлю лидарную одометрию (ранее не успел допилить NDT, а теперь можно будет доделать)

  • добавлю салки/прятки с кошкой

  • другие алгоритмы исследования и детекции

Добавлю манипулятор, что бы можно было собирать с пола игрушки в ящик.

Попробую другие датчики для колёсной одметрии: магнитный датчик угла.

Подробнее..

KUKA с маслом можно ли доверять роботам и что об этом говорят исследования

24.11.2020 20:17:07 | Автор: admin
Лабораторный робот KUKA youBot. Фото: Маргарита Ерукова, ITMO.NEWS
Вместо или вместе? В случае взаимодействия человека с роботами пока, к счастью, лидирует второе, о вытеснении людей роботами из разных профессий речь пока не идет. По крайней мере, об этом говорят современные исследования в области human-robot collaboration, а также зарубежные и отечественные эксперты. Этические вопросы работы с роботами и искусственным интеллектом озадачивают и ученых, и даже Папский престол. Попробуем разобраться вместе с деканом факультета инфокоммуникационных технологий ИТМО Александром Капитоновым и кандидатом технических наук Владиславом Громовым.

Робот помогающий


В городе Аугсбург (Германия) компания KUKA Robotics проводит исследование совместно с Университетом прикладных наук для спорта. В рамках проекта RoSylerNT они изучают взаимодействие человека с роботом-помощником при переноске грузов. Фокус на психосоциальные аспекты, такие как восприятие технологий людьми, которые работают с роботом, страх перед ними и формирование доверительных отношений.

Роботизированная система, созданная KUKA, представляет собой подвижную автономную платформу и двух роботов LBR iiwa. Участники эксперимента 15 тестировщиков в возрасте от 18 до 49 лет. Основная их задача: взаимодействовать с роботом и описывать свой опыт.

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

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

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

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

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

Александр Капитонов, декан факультета инфокоммуникационных технологий ИТМО, прогрессор проекта Airalab

Инициатив в области так называемого human-robot collaboration сейчас немало. Особенно они развиваются в европейских странах. Бизнес здесь анализирует роботизацию с разных аспектов: социальных, экономических, психологических. Исследование KUKA Roboter один из примеров. Хорошо себя тут проявила и компания BMW. Немецкий производитель автомобилей в свое время обязался перед сотрудниками предоставить им другую работу, если в результате автоматизации их заменят на роботов.

Human-robot collaboration про двустороннее сотрудничество. Мы конструируем и обучаем роботов так, чтобы они работали с нами, не принося вреда. Роботы, в свою очередь, также влияют на трансформацию пространства вокруг нас. Самый яркий пример то, как люди начали переосмыслять дизайн интерьера квартир, чтобы робот-пылесос мог автономно и без сбоев выполнять свою работу.

Источник

Имеет право


Германия одна из первых стран, которая начала разрабатывать широкую программу роботизации и автоматизации промышленности, с 2006 года. Вскоре этим вопросом заинтересовались в Евросоюзе. В 2013 году был запущен проект SPARC, посвященный развитию и финансированию робототехники.

Проект не заканчивается, и в эти дни, с 23 по 25 ноября, в Боснии и Герцеговине под эгидой SPARC проходит ежегодная European Robotics Week 2020. Главная тема Робототехника для человечества. Неделя посвящена влиянию робототехники и технологий на повседневную жизнь, экономику и здоровье в разрезе пандемии COVID-19.

В целом, крупных мероприятий, посвященных роботизации и взаимодействию человека с роботами, немало. Так, конференция ACE (International conference on future applications of AI, sensors, and robotics in society) в 2021 году пройдет в 15-ый раз. По ее итогам выпускается Journal of Future Robot Life, затрагивающий целый спектр тем от эмоций и этики роботов до взаимодействий с секс-роботами.

Этические принципы работы искусственного интеллекта волнуют даже Папу Римского. Последний громкий документ, регламентирующий отношения с AI, был представлен 28 февраля 2020 года в рамках научного форума по ИИ, организованного Папской академией защиты жизни. Согласно документам, искусственный интеллект должен уважать неприкосновенность частной жизни, работать надежно, непредвзято, прозрачно и учитывать потребности всех людей. Свод этических принципов поддержали Microsoft и IBM.

Что в России


В России также есть некоторые подвижки к созданию безопасной цифровой среды и системе ее правового урегулирования. Как минимум важность этой задачи была отмечена президентом в сентябре этого года на 75-ой сессии Генеральной Ассамблеи ООН.

В целом, в роботизации страна пока уступает другим: промышленных роботов используют мало. По последним данным (совместное исследование Минкомсвязи РФ с Национальной ассоциацией участников рынка робототехники), плотность роботизации в России в 2018 году составила 5 роботов на 10 000 рабочих. Для сравнения, средний показатель по миру за тот же период составил 99 роботов. В Китае плотность роботизации находилась на отметке в 140 роботов, в США 217, в Японии 327, в Германии 338. Мировые лидеры Южная Корея (774 робота на 10 тыс. рабочих) и Сингапур (831 на 10 тыс. рабочих).


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

Первой ласточкой стала концепция закона о роботах, разработанная сооснователем Mail.Ru Group Дмитрием Гришиным в 2016 году. Законопроект не приняли, однако в результате появилась Автономная некоммерческая организация по содействию развитию робототехники и инновационных технологий ПравоРоботов. Именно на нее возложена роль ключевой отечественной площадки подготовки законодательных инициатив в области цифровой экономики.

Вопрос о месте роботов в правовом поле время от времени всплывает в новостной повестке. Так, в 2019 году в постановление Правительства РФ были внесены изменения в ПДД О беспилотном транспорте. А недавно Институт прогрессивного образования обратился в Минфин с предложением ввести налог на роботов, а собранные средства направлять в специальный Фонд переподготовки уязвимых профессий. Предполагается, что налоговые отчисления будут сопоставимы с 13% НДФЛ со средней зарплаты в определенной профессии. По прогнозам, в течение 1015 лет в стране без работы могут остаться 20 млн человек.

Робофобия


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

С помощью такого робота Владислав Громов обучает студентов и занимается исследованиями. Фото: Маргарита Ерукова, ITMO.NEWS

Владислав Громов, кандидат технических наук, доцент ИТМО, взаимодействует с роботом KUKA в исследованиях и при обучении студентов

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

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

Почему? Искусственный интеллект недостаточно развит, чтобы давать стопроцентную гарантию достижения поставленных перед ним целей. Алгоритмы глубокого обучения, хотя и в разы лучше, чем несколько лет назад, все равно дают погрешность в распознавании объектов. Поэтому, когда речь идет о сложных задачах, да еще и с участием человека, на ИИ лучше не полагаться могут быть жертвы. В этом случае методы классического адаптивного управления, такие как силомоментные вычисления, дают более гарантированный результат работы.
Главная задача промышленных роботов сделать так, чтобы человек не выполнял тяжелую или рутинную работу. Мало кто получает удовольствия от монотонных, повторяющихся изо дня в день действий. Время работников, закручивающих колпачки на зубной пасте, прошло. Обычно люди понимают, что роботы появляются на производстве для того, чтобы облегчить их работу и не повлиять на качество результата. Им остаются более сложные задачи, не описанные в строгих алгоритмах. И так человек по-новому переосмысливает свое участие в производственных процессах.

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

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


Александр Капитонов, декан факультета инфокоммуникационных технологий ИТМО, прогрессор проекта Airalab

Эксперты сходятся во мнении: как бы быстро ни развивались технологии автоматизации, они скорее будут помогать человеку, усиливать его компетенции, облегчать работу, но не исключат его из процессов полностью.

Практически в любой стране есть отрасли, автоматизировать которые слишком дорого или нерационально. Дешевле и эффективнее работают люди. Кстати, если вы волнуетесь из-за конкуренции с роботами, можно проверить свою профессию на сайте Will robots take my job. Здесь рассчитывается вероятность, с которой вас на работе заменят роботы и/или искусственный интеллект. Все прогнозы основаны на данных. Учителя и юристы могут не волноваться вероятность замены роботами минимальна. А вот таксистам и дальнобойщикам стоит подумать о будущем риск потерять работу из-за технологического прогресса составляет 89%, хоть и не в ближайшее время. Точные сроки сейчас назвать сложно, но это произойдет, как только человечество будет готово менять устоявшиеся форматы жизни.

Подробнее..

Собака-робот за 1 миллион рублей (Unitree Robotics A1, обзор)

22.05.2021 22:20:06 | Автор: admin


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

Если вам лень читать и смотреть картинки, снял очень короткий ролик про робика-бобика от Unitree A1. Сразу предупреждаю, что при съемках ни одна собака не пострадала. Все трюки выполнены профессиональными каскадерами. Не пытайтесь их повторить.


Как любой театр начинается с вешалки, так и наша собака-робот А1 начинается с чемодана.



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

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



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



В принципе А1 достаточно компактный для своих ТТХ: 62 см в длину, чуть больше 12 кг весом.



В него можно влезть с помощью православного USB 3.0, HDMI или Ethernet слотов.



Думаю, что наши ребята из Parallels смогут много чего туда пристроить.



Несмотря на габариты, штуковина достаточно простая в управлении и весьма шустрая. В спортивном режиме она двигается со скоростью 3 метра в секунду. Мягко говоря выглядит все это впечатляюще.



Голова у пёселя тоже весьма любопытная.



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



Штуковина поражает плавностью хода и подвижностью всех сочленений.



Моторчики работают относительно тихо, хотя туловище после 40 минут работы теплое на ощупь.



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



Батарейка в комплекте одна. Вторая стоит больше 100 000 рублей. Перевозить ее в самолетах нельзя. Тиранить и испытывать на прочность корпус тоже.



От нуля до полного заряда аккумулятор заряжается за час.



Джойстик можно зарядить минут за 30. Он тоже весьма добротно сделан. Хотя металлический корпус в черном окрасе, на мой взгляд без чехла, очень быстро обретет вид видавшего виды. Тот что на снимке я брал в руки 6 раз, а выглядит уже так, как будто бы им орехи кололи.



Из минусов устройства, я бы отметил:
  • цена (от 1,5 млн до 4,5 млн рублей в рознице);
  • отсутствие выключения робота одной кнопкой (нужно цепочку разных комбинаций запомнить, прежде чем рубильник у собачатины дергать);
  • непростой набор команд (комбинаций кнопок на джойстике) для переключения режимов работы робота;
  • скромная емкость батареи;
  • отсутствие достаточных защитных чехлов на корпусе (есть резиновые накладки, но их явно недостаточно), каждый раз, когда собачка отключается и шумно опускается на плитку, чувствуется холодок пониже спины, особенно, когда знаешь, сколько эта игрушка стоит;

Планы и перспективы


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

В перспективе подобные роботы могут работать в доставке еды, товаров и прочих благ цивилизации. Одним словом, будущее наступило внезапно.
Подробнее..

Роботандем у крохотного робота-трансформера STAR появился старший брат

18.01.2021 20:14:08 | Автор: admin
Источник

Несколько лет назад ученые из Университета имени Бен-Гуриона создали компактного робота Rising STAR (RSTAR). Сейчас у него появился напарник с аналогичной конструкцией Big STAR (BSTAR), вот только, размер нового робота больше в 6 раз. Предполагается, что тандем увеличит производительность, улучшит универсальность роботов и сделает их менее уязвимыми. RSTAR и BSTAR станут применять использовать в поисково-спасательных операциях, когда требуется перемещение по бездорожью и пересеченной местности.

Роботов семейства STAR создал ученый Дэвид Заррук (David Zarrouk) с коллегами из Университета имени Бен-Гуриона. В своих первых разработках Заррук уделял максимум внимания автономности конструкций. Первые версии STAR получились действительно достаточно автономными и маневренными. Роботы легко трансформируются в зависимости от условий окружающей среды. Так, RSTAR имеет несущие винты умеет облетать препятствия. Помимо этого, у робота есть надувные баллоны для плавания. Увидев, что конструкция получилась удачной, команда разработчиков решила пойти дальше. В итоге у RSTAR появился старший брат BSTAR.

Особенности BIG STAR




Робот BSTAR обладает следующими характеристиками:

  • скорость движения конструкции до 1,4 м/с;
  • полезная нагрузка робота > 5 кг;
  • длина конструкции от оси заднего колеса до оси переднего колеса 82,5 см;
  • выдвижной хвост для переноса RSTAR;
  • раздвижная конструкция;
  • минимальная высота в сложенном виде 21 см;
  • 2 литий-полимерных аккумулятора емкостью по 5200 мА *ч;
  • масса 9,8 кг.

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

Размеры BSTAR

Робот BSTAR подойдет для перевозки большого объема полезного груза: батарей, камер, коммуникационного оборудования и других датчиков для поисково-спасательных операций.

Робот управляется контроллером на Arduino Uno и двух контроллерах RobotClaw ECS.

Первая израильская звезда


Робот RSTAR. Источник

Многофункциональный робот RSTAR появился в 2018 году. За счет адаптивного изменения конструкции он умеет передвигаться по горизонтальной и вертикальной поверхности, а также ползти или ездить на колесах. Робот быстро адаптируется к внешним условиям: может менять угол между колесными рамами, перемещать их параллельно корпусу вперед и назад.

Размеры робота RSTAR. Источник

Помимо этого, RSTAR умеет менять центр тяжести. Может заехать на слишком высокое для него препятствие, а потом перенести центр и благополучно его преодолеть.

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

Конструкция робота RSTAR. Источник

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

Робот оснащен одним LiPO-аккумулятором емкостью 800 мА*ч, но в планах сделать его более автономным. Минимальная высота маневренного робота составляет 3,5 см, поэтому он может перемещаться по очень узким и труднодоступным местам. Максимальная скорость робота до 0,8 м/с. Масса конструкции 0,38 кг.

Союз двух звезд



С одной стороны, BSTAR и RSTAR имеют аналогичные конструкции, только выполненные в масштабе 6 к 1. Однако из-за больших размеров BSTAR некоторые его части пришлось заменить.

В BSTAR используют металлический каркас, в то время как у RSTAR пластиковый.

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

Площадка может применяться в разных случаях для дополнительных маневров. Например, RSTAR, заезжая на площадку BSTAR, способен осматривать препятствия с высоты.

Как и говорилось выше, малютка заряжается от аккумулятора своего родственника.

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru