Open source робототехника
Роботы-манипуляторы
Список разнообразных роборук - https://github.com/hobofan/collected-robotic-arms
- Dexter - Open Source промышленный робот-манипулятор. Разработчик компания Haddington Dynamics. Для управления используется плата MicroZed - SoC(ARMv7 Cortex A9 + Xilinx FPGA на 28K вентилей на одном чипе), 1GB DDR3, microSD). Хорошо документирован, архитектура. Сборка сложная, с ремнями - более 300 деталей в номенклатуре, но всего два мотора. Инструкция по сборке в видео, картинках, тексте. В презентации автор объясняет ключевые достоинства робота - прежде всего это высокая точность(0.8-1.6 million points of precision (CPR)) за счёт использования системы оптических энкодеров и высокопроизводительном ПИД-регуляторе на FPGA. Код FPGA-логики выложен в формате idl, созданном для Viva - графической среды для проектирования FPGA, которую обещали опубликовать два года назад. Схема FPGA из Viva. Позиционируется как коллаборативный. Готовый робот без оснастки/инструмента продаётся за $13000. Исходники раскиданы по куче разных сайтов(GoogleDocs, Thigniverse, OnShape), очень неудобно собирать. Используются двигатели с волновой передачей производства фирмы http://www.hanzh.com/, которых нет на сайте(заказная позиция с сроком поставки 9-12 недель).
- Faze4 - робот-манипулятор на шести шаговых двигателях с 6-DoF от Petar Crnjak. Все детали(кроме электроники и моторов) которого могут быть изготовлены на 3D-принтере. Функционально и по внешнему виду он похож на роботов-манипуляторов, изготавливаемых в промышленности, но ориентирован прежде всего для исследований, образования и любителей робототехники. Лицензия: MIT. Код в статусе "coming soon". Хорошая подробная документация. Дизайн вдохновлён FANUC’s LR Mate 200iD. Подробная инструкция по сборке.
- AR3/AR4 - 6-осевой робот-манипулятор на шаговых двигателях от Chris Annin. В его github опубликованы stl только на предыдущую модель - AR2, остальное на сайте. У разработчика сформировалось небольшое, но живое сообщество, занимающееся модификациями его манипулятора. Хороший пример - Dexter Ong - он выложил несколько модификаций железа для AR3(опубликовал в STEP) и сделал интеграцию с ROS и MoveIT(видео образца). Исходники AR3 (STEP + сборка Solidworks) продаются за $99, что весьма демократично. Инструкция по сборке очень подробная - более 300 страниц с фотками и скринами из Amazon.
- Niryo One - миниатюрный робот-манипулятор на шаговых двигателях от Niryo Robotics. ROS-совместимый. Электроника выложена в pdf в виде эскиза, т.е. принципиальной схемы нет. В папке Integration выложены исходники в STEP и Solidworks. Вместе с самим роботом выложены и stl пяти приспособлений. Сборка в PDF: 27 деталей для изготовления на 3D-принтере, огромная номенклатура покупных деталей(более 30 наименований), фирменные моторы Niryo - 3 шт., для управления роботом используется Raspberry Pi 3B, для управления моторами - Arduino. Коммерческий проект для сбыта моторов Niryo.
- Thor - 6-DoF на шаговых двигателях. Полный open source - FreeCAD, KiCAD, GRBL. Модифицировалась. Список соучастников проекта регулярно пополняется. Интеграции с ROS нет, управление шаговыми двигателями осуществляется через GRBL. Позиционируется как дешёвый робот для образовательных целей. Автор Ángel LM.
- Moveo - 6-DoF на шаговых двигателях. Открыты исходники CAD (Solidworks), firmware, Управляется с помощью Arduino MEGA. Инструкция по сборке. BOM содержит 300 позиций номенклатуры. Обзоры на русском. Разработка пакета для управления роботов в ROS. Автор Andreas Hoelldorfer
- Fred - робот-манипулятор на двигателях Dynamixel(разработаны Robotis). Всего используется пять наименований двигателей, управляются по шине RS485 с использованием проприетарного протокола на скоростях 9,600 [bps] ~ 4.5 [Mbps]. Спроектирован в Fusion360(исходники выложены архивом). Веб-панель управления манипулятором REST API на FLASK. Акцент в проекте сделан на использовании Reinforcement Learning (SAC + Tensorflow agents) в решении задач инверсной кинематики и движения без коллизий с окружающей средой. Симуляция реализована на pybullet с urdf-моделью робота. Планировщик движений реализован на базе самописной кинематики с использованием python-библиотек. Изготовлен протитоп на 3D-принтере Prusa mk2s из пластика PLA (нижнее звено усилено углеволокном) с камерой C922 PRO HD, на котором проверена работоспособность алгоритма.
- RR1(Real Robot One) - DIY-ориентированный 6-DoF манипулятор на шаговых двигателях и планетарных редукторах, вдохновлённый AR3/AR4. Разработан учёным-робототехником из Польши Павлом Суринеком (Pavel Surynek, github). Видео-презентация, блог проекта на Hackaday. Исходные файлы не подготовлены для публикации - представлены только stl-модели редуктора без каких-либо пояснительных документов. Сам автор занимается исследованиями по теме multi-agent path finding (MAPF); в рамках исследований разработаны и опубликованы программные пакеты(солверы) reLOC и boOX.
- PAROL6. 6-DoF настольный робот-манипулятор для обучения на шаговых двигателях от Петра Черняка(Petar Crnjak), разработчика Faze4 и CM6. Полезная нагрузка 1 Кг, вес 5.5 Кг, радиус рабочей зоны 400 мм со стандартным гриппером, механические детали изготавливаются с помощью 3D-печати. Разработчик стремился спроектировать модель, наиболее близкую к промышленным решениям по механике, управляющему ПО и юзабилити; учёл опыт предыдущих двух моделей роботов-манипуляторов - например, Faze4 был слишком большим и не очень подходил для размещения на столах в учебных классах. В PAROL6 используются прецизионные планетарные редукторы и ремни для оптимального распределения веса. Конструкция является модульной и позволяет легко добавлять драйверы с замкнутым контуром управления (closed-loop). ПО использует специальный протокол, обеспечивающий стандартное для отрасли время цикла опроса в 60-100 Гц. Графический интерфейс ПО вдохновлен интерфейсами для современных промышленных коботов, где реализованы все стандартные способы управления (resolved rate, cartesian level control, joint level control, motor jog). ПО включает в себя симулятор для тестирования программ без использования физического робота. PAROL6 обладает широкими возможностями благодаря изолированному вводу-выводу, шине CAN и встроенному в конструкцию пневмо-захвату. Все 3D-модели и код опубликованы под GPLv3 Licence. У проекта отличная документация. Описание проекта на Hackaday.
ROS-драйверы к коммерческим роботам
- kmriiwa - проект по коммуникации между KUKA KMR iiwa и ROS2. Для включения функциональности используются несколько пакетов ROS. Navigation2 используется для навигации по мобильному автомобилю. SLAM_Toolbox используется для SLAM. MoveIt2 используется для планирования пути манипулятора.
Другие роботы
- open-dynamic-robot-initiative - проект открытого робота с управлением крутящим моментом (torque-control) - миниатюрный аналог Boston Dynamics Spot. Звенья робота также используются для бюджетного (около $5000) трёхпальцевого устройства захвата (сайт, paper). Развивается Нью-Йоркским университетом и Институтом Макса Планка.
- OpenMower - открытый робот-газонокосильщик с ROS Hardware Interface. Авторы задались вопросом "Почему современные роботы-газонокосильщики настолько плохие?" и попробовали разобрать самого дешёвого серийного робота-газонокосильщика YardForce Classic 500. Изучив внутренности, они пришли к выводу, что железо разработано на весьма высоком уровне и проблемы заключаются прежде всего в программном обеспечении. Это побудило их начать проект OpenMower и приобщить к разработке более широкий круг разработчиков. Робот находится в фазе активной разработки, поэтому сейчас использовать исходники следует с осторожностью. Программное обеспечение ROS находится в отдельном репозитории ClemensElflein/open_mower_ros.
Станки с ЧПУ
- CARVER_X5 - 5-осевой ЧПУ станок. Open Source: CAD - Soliworks, EDA - KiCAD. Proprietary: CAM software - Fusion 360, CNC-контроллер software - Mach3, CNC-interface software - Pokeys + controller.
3D-принтеры
- Open5x - 5-осевой 3D-принтер
- BigFDM - широко-форматный(рабочая зона 800мм x 800мм x 900мм) 3D-принтер
Двигатели и контроллеры двигателей
- odriverobotics/ODrive - контроллер бесщёточного двигателя, ориентированный на высокую производительность. 70 контрибьюторов! Поддерживается компанией ODrive, которая производит моторы(сравнительная таблица разных моторов). Автор madcowswe давно не обновляет свои репозитории.
- rene-dev/stmbl - драйвер серводвигателя переменного тока на STM32F4
- mjbots/moteus - бесщёточный сервопривод с контроллером
- Проект VESC (Benjamin Vedder)
- bldc-hardware - Электронный регулятор хода(англ. ESC, Electronic Speed Controller) с открытым кодом, разработанный в рамках проекта VESC на базе STM32F4. Последний раз обновлялся 6 лет назад.
- bldc - Firmware для контроллера. Обновляется часто (55 контрибьюторов). Поддерживается протокол UAVCAN(libcanard). Содержит виртуальную машину для обработки скриптов LispBM. Виртуальная машина написана на Си и поддерживает следующие аппаратные платформы - Zynq 7000, STM32f4, NRF52840, ESP32 (ARM - WROOM), ESP32C3 (RISC-V), Raspberry PI (32bit Raspbian OS). Описание команд, видео с примером использования для обработки CAN-фреймов. Разрабатывается одним человеком.
- vesc_tool - Утилита с GUI для работы с контроллером обновляется тоже часто. Есть версия для мобильных устройств. В графическом интерфейсе можно писать скрипты на LispBM.
- vesc-os-pi - минималистичный образ ОС для Raspberry Pi, позволяющий запустить на нём vesc_tool
- vesc_bms_fw - Встроенное ПО для управления зарядом портативного источника питания
- Buildbotics - контроллер ЧПУ для 4-осевого станка. Опубликованы firmware (Си), schematics+pcb (gEDA), конструктив (AutoCAD, dxf) и другие вспомогательные репозитории. Архитектура контроллера основана на Raspberry Pi3, MCU Atmega193 и веб-интерфейсе - схема.
- nearzero2 - вторая версия контроллера бесщёточных двигателей nearzero. Обеспечивает точное, медленное или позиционное управление всеми бесщеточными двигателями для приложений с прямым приводом, разомкнутым или замкнутым контуром. Arduino-совместимая прошивка, исходные файлы в KiCAD, лицензия CC BY-SA. Разработан для управления open source мотором RoboWheel RW170.
Библиотеки, фреймворки
- Хорошая подборка Free and Open source CAM/CNC software на Reddit
- Machinekit - Machinekit-HAL является мощным программным обеспечением для контроля машин в реальном времени на основе Hardware Abstraction Layer. Применяется для управления промышленным роботом-манипулятором или станком с ЧПУ. Поддерживаются RT PREEMPT и Xenomai 2 патчи ядра Linux для поддержки реального времени. В обзоре одного из разработчиков machinekit описаны варианты интеграции с ROS и пример реализации для робота-манипулятора Borunte.
- LinuxCNC - пакет Debian/Ubuntu для управления фрезерными и токарными станками, 3d-принтерами, лазерными резаками, плазменными резаками, манипуляторами, гексаподами и т.п. системами. 129 контрибьюторов, часто обновляется, используется коммерческими фирмами(в связке с machinekit для управления в реальном времени) - например, Tormach
- CAMotics - программное обеспечение с открытым исходным кодом для симуляции трёх-осевого ЧПУ. Работает на Linux (сборка для Armbian на RPi 4), OS-X и Windows. Это отдельное приложение со своим GUI.
- pyCAM - G-код генератор и симулятор для 3-осевого станка с ЧПУ. Сейчас активно не разрабатывается, последний релиз в апреле 2020.
- Slic3r - G-код генератор. Генерит G-код из STL/OBJ/AMF моделей. 100 контрибьюторов. Изначально разрабатывался командой проекта RepRap. Последний релиз 10 мая 2018 года.
- PrusaSlicer - G-код генератор, форк Slic3r. Создаёт G-код для FFF-принтеров или PNG-слои для mSLA-принтеров из STL/OBJ/AMF моделей. Работает с контроллерами ЧПУ Mach3, LinuxCNC и Machinekit. Развитое сообщество разработчиков - около 150 контрибьюторов. Поддерживается производителем 3D-принтеров компанией Josef Prusa. Лицензия AGPLv3. Последний релиз 16 июля 2021 года.
- QP/C. Real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines.
- Micro-ROS. Проект разработки ROS-совместимых устройств и приложений с ограниченными ресурсами
- Mycodo - хорошо задокументированная система мониторинга и управления технологическими процессами. Изначально была разработана для гидропоники, но применялась автором и для других задач: Автоматизация выращивания грибов, Наземное выращивание растений, Поддержание гомеостаза пчелиной пасеки, Поддержание влажности в подземной искусственной пещере летучих мышей, Дистанционный радиационный мониторинг и картографирование. Написана на Python. Может быть развёрнута на любой из модификаций Raspberry Pi (Zero, 1, 2, 3, 4).
- Isaac SDK (github). Представляет из себя комплекс модулей для разработки программного обеспечения для автономных роботизированных систем. Требует наличия GPU с поддержкой CUDA 10.2. Также на данный момент рекомендуется версия Ubuntu 18.04. Ввиду модульности есть возможность использования некоторых компонент GEMs с ROS2. Состоит из следующих компонентов:
- Isaac SIM - Симулятор в нескольких реализациях. Сам по себе Isaac SIM предоставляет функционал по генерации данных для обучении моделей
- Isaac Sim Omniverse - использует комплект NVIDIA Omniverse Kit. Он обеспечивает доступ к технологиям трассировки лучей NVIDIA PhysX и RTX для высокопроизводительного фотореалистичного моделирования роботов.
- Isaac Unity 3D - интегрированный с unity симулятор
- Isaac GEMs - Библиотека алгоритмов оптимизированных под работу на NVIDIA GPU. Включает в себя как реализации алгоритмов навигации, планирования, детектирования объектов, SLAM, ML.
- Isaac Engine - Фреймворк для написания исполняемых узлов. Имеет
cpp/python
API. Основная идея написания программ состоит в реализации компонент (codelet
), по аналогии с ROS2components
- исполняемые программы динамически выгружаемые в среду и из неё
- Isaac SIM - Симулятор в нескольких реализациях. Сам по себе Isaac SIM предоставляет функционал по генерации данных для обучении моделей
- CANOpenRobotController. Фреймворк для управления жёсткими многосоставными робототехническими системами на базе конечных автоматов. Изначально разрабатывался для управления экзоскелетами (см. проект ALEX Embedded System). Включает в себя также реализацию CANopenLinux для обеспечения интерфейса между встроенной Linux с поддержкой CAN и драйверами/датчиками двигателей на основе CANopen. Код фреймворка разделён на 3 уровня:
- Уровень связи CANopen: обеспечивает связь на уровне CAN, предоставляя механизмы для отправки и получения сообщений PDO и SDO.
- Уровень робота: определяет управляемые компоненты робота, включая соединения, связанные приводы и устройства ввода.
- Уровень приложения: определяет логику высокого уровня для устройства на основе реализации конечного автомата.
- SimpleFOC - библиотека векторного и шагового управления двигателями. Изначально была создана для Arduino, но сейчас поддерживает широкий ассортимент оборудования: двигатели(BLDC, шаговые), датчики поворота(магнитные, тока, энкодеры), микроконтроллеры(AVR, STM32, ESP32, Teensy), драйверы ключей(L6234, DRV8305, DRV8313). Библиотека реализует следующую схему композиции элементов системы управления - двигатель + датчик угла + датчик тока + драйвер + микроконтроллер, различные комбинации которой стремится поддерживать. Помимо непосредственно библиотеки, в рамках проекта были разработаны аппаратные модули драйверов для контроля токов от 3 до 30А, а также приложение с графическим интерфейсом SimpleFOCStudio для отладки алгоритмов управления. У проекта весьма активное и развитое сообщество: github, форум, discord, магазин для дистрибьюции разработанных аппаратных модулей, а также весьма объёмная и качественная документация с изложением теории векторного управления и примерами реализованных проектов. Поддерживаются среды разработки ArduinoIDE и PlatformIO.
- Open3D. Сайт, документация. Поддерживает быструю разработку программного обеспечения, работающего с 3D-данными. Интерфейс Open3D предоставляет набор тщательно отобранных структур данных и алгоритмов как на C ++, так и на Python. Бэкэнд сильно оптимизирован и настроен для распараллеливания. Open3D был разработан с чистого листа с небольшим и тщательно продуманным набором зависимостей. Его можно настроить на разных платформах и скомпилировать из исходного кода с минимальными усилиями. Код чистый, оформлен в едином стиле и поддерживается с помощью четкого механизма проверки кода. Open3D использовался в ряде опубликованных исследовательских проектов и активно развертывается в облаке. Мы приветствуем вклад сообщества разработчиков ПО с открытым исходным кодом. Участники консорциума ROS-Industrial в видеопрезентации показали каким образом они используют Open3D в задачах реконструкции геометрии объектов с недорогими RGB-D камерами. Ранее они использовали yak.
- Extended Object Detection ROS. Wiki, видео-презентация(ru). Данный пакет является решением в области компьютерного зрения, который содержит набор различных методов детектирования объектов, объединенных одним интерфейсом. Для использования пакета не требуется погружение в API, все настройки детектирования доступны через единый конфигурационный файл. Пакет разработан в рамках парадигмы "распознавания по частям", что позволяет указывать различные признаки объекта, такие как образ, цвет, форма, размеры и др. Эти признаки распознаются по-отдельности и далее агрегируются в целостные объекты. Помимо распознавания простых объектов, пакет позволяет задавать их комбинации, детектируя сложный объект, который является набором простых объектов и отношений между ними. Пакет предоставляет полноценный ROS интерфейс, позволяющий использовать его в задачах робототехники.
Сервисы
- CADCloud - сервер для публикации 3D-моделей, их версионирования и коллективной разработки. На сервере запускается экземпляр FreeCAD, через который модели публикуются в хранилище. Авторизация пользователей осуществляется через TokenAuth и TokenSecret. Сервер самописный на go, фронтенд на js. Для разворачивания нужно 2 CPUs, 4 Гб ОЗУ, 4 Гб ПЗУ + отдельный SMTP-сервер для регистрации пользователей. Есть Docker-контейнер. 5 контрибьюторов (90% коммитов один разработчик).
Организации
- Southwest Research Institute Robotics
- ROS-Industrial
- EEZ - Envox Experimental Zone - "Open hardware/open source that bridge the gap between DIY/hobbyist and professional solutions" - Открытое ПО и железо, устраняющее разрыв между любительскими и профессиональными решениями. Главная разработка - EEZ Bench Box 3 (BB3) - модульная платформа для испытания и измерений электрооборудования. Есть модули питания, релейного вывода, измерения температуры. Для программирования EEZ BB3 разработана специальная Studio IDE, где можно на FBD-подобном языке запрограммировать логику работу прибора и создать визуализацию с помощью drag&drop.
Государственные программы
- ROSIN - проект поддержки консорциума ROS-Industrial, длившийся с 2017 по 2020 год, при финансировании со стороны Евросоюза и отдельных европейских коммерческих фирм. Гранты выделялись как конкретным техническим проектам (Focused Technical Project, FTP), так и образовательным (Educational Project, EP). В рамках проекта были разработаны-улучшены множество библиотек и конечных решений с открытым исходным кодом, среди которых можно выделить:
- планировщик движений MoveIt2
- пакет ros_control - обобщённый интерфейс для управления двигателями
- ROBIN - мост через разделяемую память между Codesys и ROS
- биндинги для языка программирования Ada
- интерфейс между ROS и симулятором Webots
- Integration Service - сервис для интеграции ROS2 с другими middleware
- ROS-драйвер для манипулятора UR
- ROS-пакет для работы с servo-контроллерами IMC через ros_control/EtherCAT