robossembler.org/docs/technologies/open-source-robots-and-tools.md

90 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: open-source-robots-and-tools
title: Open source робототехника
---
## Роботы-манипуляторы
Список разнообразных роборук - https://github.com/hobofan/collected-robotic-arms
* [Dexter](https://github.com/HaddingtonDynamics/Dexter/wiki) - Open Source промышленный робот-манипулятор project. Разработчик [Haddington Dynamics webpage](http://hdrobotic.com/open-source). Для управления используется плата [MicroZed](http://zedboard.org/product/microzed) - SoC(ARMv7 Cortex A9 + Xilinx FPGA на 28K вентилей на одном чипе), 1GB DDR3, microSD). Хорошо [документирован](https://github.com/HaddingtonDynamics/Dexter/wiki), [архитектура](https://camo.githubusercontent.com/09708df6bfe916898d1d89fb56bd67914034655eea4e53219276d24133f74658/68747470733a2f2f68616464696e67746f6e64796e616d6963732e6769746875622e696f2f48445f436f6e74726f6c53797374656d5f32303230313031352e737667). Сборка сложная, с ремнями - более 300 деталей в номенклатуре, но всего два мотора. Инструкция по сборке в [видео](https://www.youtube.com/watch?v=AYD2PSslqfU&list=PLEJQ7hsad17fC2tqTDGNFI_LPk1kX2aE6), [картинках](https://photos.app.goo.gl/jGmsnxtytvdYhgUi8), [тексте](https://github.com/HaddingtonDynamics/Dexter/wiki/HD-Build-Notes). В [презентации](https://www.youtube.com/watch?v=t7lnbrI4B5Q) автор объясняет ключевые достоинства робота - прежде всего это высокая точность(0.8-1.6 million points of precision (CPR)) за счёт использования системы оптических энкодеров и высокопроизводительном ПИД-регуляторе на FPGA. Код FPGA-логики выложен в формате idl, созданном для Viva - графической среды для проектирования FPGA, которую обещали опубликовать два года назад. [Схема](https://user-images.githubusercontent.com/419392/57746151-be2ea780-7684-11e9-80b5-95490f015973.png) FPGA из Viva. Позиционируется как коллаборативный. Готовый робот без оснастки/инструмента продаётся за $13000. Исходники раскиданы по куче разных сайтов(GoogleDocs, Thigniverse, OnShape), очень неудобно собирать. Используются двигатели с волновой передачей производства фирмы http://www.hanzh.com/, которых нет на сайте(заказная позиция с сроком поставки 9-12 недель).
* [Faze4](https://github.com/PCrnjak/Faze4-Robotic-arm) - робот-манипулятор на шести *шаговых двигателях* с 6-DoF, все детали(кроме электроники и моторов) которого могут быть изготовлены на 3D-принтере. Функционально и по внешнему виду он похож на роботов-манипуляторов, изготавливаемых в промышленности, но ориентирован прежде всего для исследований, образования и любителей робототехники. Лицензия: MIT. Код в статусе "coming soon". Хорошая подробная [документация](https://faze4-robotic-arm-docs.readthedocs.io/en/latest/). Дизайн вдохновлён FANUCs LR Mate 200iD. Подробная [инструкция](https://github.com/PCrnjak/Faze4-Robotic-arm/blob/master/Assembly%20instructions%203.1.pdf) по сборке.
* [AR3](https://www.anninrobotics.com/downloads) - 6-осевой робот-манипулятор на *шаговых двигателях* от Chris Annin. В [его github](https://github.com/Chris-Annin) опубликованы stl только на предыдущую модель - AR2, остальное на сайте. У разработчика сформировалось небольшое, но [живое сообщество](https://www.anninrobotics.com/forum/robot-builds), занимающееся модификациями его манипулятора. Хороший пример - [Dexter Ong](https://github.com/ongdexter) - он выложил [несколько модификаций железа](https://github.com/ongdexter/ar3_hardware_mods) для AR3(опубликовал в STEP) и [сделал интеграцию](https://github.com/ongdexter/ar3_core) с ROS и MoveIT([видео образца](https://www.youtube.com/watch?v=0f0Cw46Jx0U)). Исходники AR3 (STEP + сборка Solidworks) [продаются](https://www.anninrobotics.com/product-page/ar3-complete-solidworks-assembly-step-files) за $99, что весьма демократично. [Инструкция по сборке](https://drive.google.com/file/d/1T_u_RsGdRljIm2Luju5j7sy7eQUTs7K-/view) очень подробная - более 300 страниц с фотками и скринами из Amazon.
* [Niryo One](https://github.com/NiryoRobotics/niryo_one) - миниатюрный робот-манипулятор на *шаговых двигателях* от [Niryo Robotics](https://niryo.com/). [ROS-совместимый](https://github.com/NiryoRobotics/niryo_one_ros). [Электроника](https://github.com/NiryoRobotics/niryo_one/tree/master/Electronics) выложена в pdf в виде эскиза, т.е. принципиальной схемы нет. В папке [Integration](https://github.com/NiryoRobotics/niryo_one/tree/master/Integration) выложены исходники в STEP и Solidworks. Вместе с самим роботом выложены и stl [пяти приспособлений](https://github.com/NiryoRobotics/niryo_one/tree/master/STL/7-Tools). Сборка [в PDF](https://github.com/NiryoRobotics/niryo_one/blob/master/BOM/BOM_StepByStep.pdf): 27 деталей для изготовления на 3D-принтере, огромная номенклатура покупных деталей(более 30 наименований), фирменные моторы Niryo - 3 шт., для управления роботом используется Raspberry Pi 3B, для управления моторами - Arduino. Коммерческий проект для сбыта моторов Niryo.
* [Thor](https://github.com/AngelLM/Thor) - 6-DoF на шаговых двигателях. Полный open source - FreeCAD, KiCAD, GRBL. Модифицировалась. [Список](https://github.com/AngelLM/Thor/wiki/List-of-Thor-Builders) соучастников проекта регулярно пополняется. Интеграции с ROS нет, управление шаговыми двигателями осуществляется через GRBL. Позиционируется как дешёвый робот для образовательных целей. Исходники не менялись 4 года.
* [Moveo](https://github.com/BCN3D/BCN3D-Moveo) - 6-DoF на шаговых двигателях. Открыты исходники CAD (Solidworks), firmware, Управляется с помощью Arduino MEGA. [Инструкция по сборке](https://github.com/BCN3D/BCN3D-Moveo/blob/master/USER%20MANUAL/User%20Manual%20BCN3D%20Moveo.pdf). BOM содержит 300 позиций номенклатуры. [Обзоры](https://www.youtube.com/channel/UChWE6IRkO8CkiihtDZKGA9A) на русском. [Разработка пакета](http://lets-go-design-with-lexmaister.blogspot.com/2021/03/moveops3-ros-1-urdf.html) для управления роботов в ROS. Обновлялся последний раз 5 лет назад.
* [Fred](https://github.com/thomashiemstra/fred) - робот-манипулятор на двигателях Dynamixel(разработаны [Robotis](https://emanual.robotis.com/)). Всего используется пять наименований двигателей, управляются по шине RS485 с использованием проприетарного [протокола](https://emanual.robotis.com/docs/en/dxl/protocol2/) на скоростях 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, на котором проверена работоспособность алгоритма.
* [kmriiwa](https://github.com/MortenMDahl/kmriiwa_ws_devel) - проект по коммуникации между KUKA KMR iiwa и ROS2. Для включения функциональности используются несколько пакетов ROS. Navigation2 используется для навигации по мобильному автомобилю. SLAM_Toolbox используется для SLAM. MoveIt2 используется для планирования пути манипулятора.
## Другие роботы
* [open-dynamic-robot-initiative](https://github.com/open-dynamic-robot-initiative) - проект открытого робота с управлением крутящим моментом (torque-control) - миниатюрный аналог Boston Dynamics Spot. Звенья робота также используются для бюджетного (около $5000) трёхпальцевого устройства захвата ([сайт](https://sites.google.com/view/trifinger/home-page), [paper](https://arxiv.org/pdf/2008.03596.pdf)). Развивается Нью-Йоркским университетом и Институтом Макса Планка.
* [OpenMower](https://github.com/ClemensElflein/OpenMower) - открытый робот-газонокосильщик с ROS Hardware Interface. Авторы задались вопросом "Почему современные роботы-газонокосильщики настолько плохие?" и попробовали разобрать самого дешёвого серийного робота-газонокосильщика YardForce Classic 500. Изучив внутренности, они пришли к выводу, что железо разработано на весьма высоком уровне и проблемы заключаются прежде всего в программном обеспечении. Это побудило их начать проект OpenMower и приобщить к разработке более широкий круг разработчиков. Робот находится в фазе активной разработки, поэтому сейчас использовать исходники следует с осторожностью. Программное обеспечение ROS находится в отдельном репозитории [ClemensElflein/open_mower_ros](https://github.com/ClemensElflein/open_mower_ros).
## Станки с ЧПУ
* [CARVER_X5](https://github.com/MakerLabTunisia/CARVER_X5) - 5-осевой ЧПУ станок. Open Source: CAD - Soliworks, EDA - KiCAD. Proprietary: CAM software - Fusion 360, CNC-контроллер software - Mach3, CNC-interface software - Pokeys + [controller](https://www.poscope.com/product/pokeys57cnc/).
## 3D-принтеры
* [Open5x](https://github.com/FreddieHong19/Open5x) - 5-осевой 3D-принтер
* [BigFDM](https://github.com/fab-machines/BigFDM) - широко-форматный(рабочая зона 800мм x 800мм x 900мм) 3D-принтер
## Двигатели и контроллеры двигателей
* [odriverobotics/ODrive](https://github.com/odriverobotics/ODrive) - контроллер бесщёточного двигателя, ориентированный на [высокую производительность](https://www.youtube.com/channel/UC0vmOsLFTCTsaYcL2PmWscA). 70 контрибьюторов! Поддерживается компанией ODrive, которая производит моторы([сравнительная таблица разных моторов](https://docs.google.com/spreadsheets/d/12vzz7XVEK6YNIOqH0jAz51F5VUpc-lJEs3mmkWP1H4Y/edit#gid=0)). Автор [madcowswe](https://github.com/madcowswe) давно не обновляет свои репозитории.
* [rene-dev/stmbl](https://github.com/rene-dev/stmbl) - драйвер серводвигателя переменного тока на STM32F4
* [mjbots/moteus](https://github.com/mjbots/moteus) - бесщёточный сервопривод с контроллером
* Проект VESC (Benjamin Vedder)
* [bldc-hardware](https://github.com/vedderb/bldc-hardware) - Электронный регулятор хода(англ. ESC, Electronic Speed Controller) с открытым кодом, разработанный в рамках проекта VESC на базе STM32F4. Последний раз обновлялся 6 лет назад.
* [bldc](https://github.com/vedderb/bldc/) - Firmware для контроллера. Обновляется часто (55 контрибьюторов). Поддерживается протокол UAVCAN(libcanard). Содержит виртуальную машину для обработки скриптов [LispBM](https://github.com/svenssonjoel/lispbm). Виртуальная машина написана на Си и поддерживает следующие аппаратные платформы - Zynq 7000, STM32f4, NRF52840, ESP32 (ARM - WROOM), ESP32C3 (RISC-V), Raspberry PI (32bit Raspbian OS). [Описание команд](https://github.com/vedderb/bldc/tree/master/lispBM#vesc-specific-commands-and-extensions), [видео](https://www.youtube.com/watch?v=08xKqT-ETAc) с примером использования для обработки CAN-фреймов. Разрабатывается одним человеком.
* [vesc_tool](https://github.com/vedderb/vesc_tool) - Утилита с GUI для работы с контроллером обновляется тоже часто. Есть версия для мобильных устройств. В графическом интерфейсе можно писать скрипты на LispBM.
* [vesc-os-pi](https://github.com/vedderb/vesc-os-pi) - минималистичный образ ОС для Raspberry Pi, позволяющий запустить на нём vesc_tool
* [vesc_bms_fw](https://github.com/vedderb/vesc_bms_fw) - Встроенное ПО для управления зарядом портативного источника питания
* [Buildbotics](https://github.com/buildbotics) - контроллер ЧПУ для 4-осевого станка. Опубликованы [firmware](https://github.com/buildbotics/bbctrl-firmware) (Си), [schematics+pcb](https://github.com/buildbotics/bbctrl-pcb) (gEDA), [конструктив](https://github.com/buildbotics/bbctrl-enclosure) (AutoCAD, dxf) и другие вспомогательные репозитории. Архитектура контроллера основана на Raspberry Pi3, MCU Atmega193 и веб-интерфейсе - [схема](https://cdn-cfepe.nitrocdn.com/IaOOhnrZOaEuMnEtFXeLBmaDvzjPJeJV/assets/static/optimized/rev-4dccca7/wp-content/uploads/2021/07/Buildbotics-controller-connections-1.png).
* [nearzero2](https://skysedge.com/robotics/nz2/index.html) - вторая версия контроллера бесщёточных двигателей [nearzero](https://skysedge.com/robotics/nearzero/index.html). Обеспечивает точное, медленное или позиционное управление всеми бесщеточными двигателями для приложений с прямым приводом, разомкнутым или замкнутым контуром. Arduino-совместимая прошивка, исходные файлы в KiCAD, лицензия CC BY-SA. Разработан для управления open source мотором [RoboWheel RW170](https://skysedge.com/robotics/robowheel170/index.html).
## Библиотеки, фреймворки
* Хорошая подборка [Free and Open source CAM/CNC software](https://www.reddit.com/r/CNC/comments/aizatc/free_and_open_source_camcnc_software/) на Reddit
* [Machinekit](https://github.com/machinekit/) - Machinekit-HAL является мощным программным обеспечением для контроля машин *в реальном времени* на основе Hardware Abstraction Layer. Применяется для управления промышленным роботом-манипулятором или станком с ЧПУ. Поддерживаются RT PREEMPT и [Xenomai 2](http://xenomai.org) патчи ядра Linux для поддержки реального времени. В обзоре [одного из разработчиков](https://github.com/machinekoder) machinekit описаны [варианты интеграции с ROS](https://machinekoder.com/machinekit-ros-open-source-robots) и [пример реализации](https://machinekoder.com/machinekit-ros-industrial-robot) для робота-манипулятора Borunte.
* [LinuxCNC](https://github.com/LinuxCNC/linuxcnc) - пакет Debian/Ubuntu для управления фрезерными и токарными станками, 3d-принтерами, лазерными резаками, плазменными резаками, манипуляторами, гексаподами и т.п. системами. 129 контрибьюторов, часто обновляется, используется коммерческими фирмами(в связке с machinekit для управления в реальном времени) - например, [Tormach](https://rosindustrial.org/s/Tormach-and-a-ROS-Open-Manipulator.pdf)
* [CAMotics](https://github.com/CauldronDevelopmentLLC/CAMotics) - программное обеспечение с открытым исходным кодом для симуляции трёх-осевого ЧПУ. Работает на Linux (([сборка для Armbian](https://github.com/koendv/camotics-raspberrypi) на RPi 4)), OS-X и Windows. Это отдельное приложение со своим GUI.
* [pyCAM](https://github.com/SebKuzminsky/pycam) - G-код генератор и симулятор для 3-осевого станка с ЧПУ. Сейчас активно не разрабатывается, последний релиз *в апреле 2020*.
* [Slic3r](https://github.com/slic3r/Slic3r) - G-код генератор. Генерит G-код из STL/OBJ/AMF моделей. 100 контрибьюторов. Изначально разрабатывался командой проекта RepRap. Последний релиз *10 мая 2018 года*.
* [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) - G-код генератор, форк [Slic3r](https://github.com/slic3r/Slic3r). Создаёт G-код для FFF-принтеров или PNG-слои для mSLA-принтеров из STL/OBJ/AMF моделей. Работает с контроллерами ЧПУ Mach3, LinuxCNC и Machinekit. Развитое сообщество разработчиков - около 150 контрибьюторов. Поддерживается производителем 3D-принтеров компанией Josef Prusa. Лицензия AGPLv3. Последний релиз *16 июля 2021 года*.
* [QP/C](https://github.com/QuantumLeaps/qpc). Real-time embedded framework/RTOS for embedded systems based on active objects (actors) and hierarchical state machines.
* [Micro-ROS](https://github.com/micro-ROS). Проект разработки ROS-совместимых устройств и приложений с ограниченными ресурсами
* [Sensor micro-ROS use case in Modular Arm - PDF](http://www.ofera.eu/storage/deliverables/M36/OFERA_61_D64_sensor_use_case_final__PU.pdf)
* [micro-ROS meets Moveit2](https://www.eprosima.com/index.php/company-all/news/166-micro-ros-meets-moveit) - [Github](https://github.com/micro-ROS/micro-ROS_moveit2_demo)
* [micro-ROS Open Manipulator demo](https://github.com/micro-ROS/micro-ROS_openmanipulator_demo), [msg/srv spec](http://wiki.ros.org/open_manipulator_msgs), Open Manipulator [repo](https://github.com/ROBOTIS-GIT/open_manipulator)
* [Mycodo](https://github.com/kizniche/Mycodo) - хорошо задокументированная система мониторинга и управления технологическими процессами. Изначально была разработана для гидропоники, но применялась автором и для других задач: Автоматизация выращивания грибов, Наземное выращивание растений, Поддержание гомеостаза пчелиной пасеки, Поддержание влажности в подземной искусственной пещере летучих мышей, Дистанционный радиационный мониторинг и картографирование. Написана на Python. Может быть развёрнута на любой из модификаций Raspberry Pi (Zero, 1, 2, 3, 4).
* [Isaac SDK](https://developer.nvidia.com/isaac-sdk) ([github](https://github.com/NVIDIA-ISAAC-ROS)). Представляет из себя комплекс модулей для разработки программного обеспечения для автономных роботизированных систем. Требует наличия 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`), по аналогии с ROS2 `components` - исполняемые программы динамически выгружаемые в среду и из неё.
## Сервисы
* [CADCloud](https://github.com/opencomputeproject/CADCloud) - сервер для публикации 3D-моделей, их версионирования и коллективной разработки. На сервере запускается экземпляр FreeCAD, через который модели публикуются в хранилище. Авторизация пользователей осуществляется через TokenAuth и TokenSecret. Сервер самописный на go, фронтенд на js. Для разворачивания нужно 2 CPUs, 4 Гб ОЗУ, 4 Гб ПЗУ + отдельный SMTP-сервер для регистрации пользователей. Есть Docker-контейнер. 5 контрибьюторов (90% коммитов один разработчик).
## Организации
* [Southwest Research Institute Robotics](https://github.com/swri-robotics)
* [ROS-Industrial](https://github.com/ros-industrial)
* [EEZ - Envox Experimental Zone](https://github.com/eez-open) - "Open hardware/open source that bridge the gap between DIY/hobbyist and professional solutions" - Открытое ПО и железо, устраняющее разрыв между любительскими и профессиональными решениями. Главная разработка - [EEZ Bench Box 3 (BB3)](https://github.com/eez-open/modular-psu) - модульная платформа для испытания и измерений электрооборудования. Есть модули питания, релейного вывода, измерения температуры. Для программирования EEZ BB3 разработана специальная [Studio IDE](https://github.com/eez-open/studio), где можно на FBD-подобном языке запрограммировать логику работу прибора и создать визуализацию с помощью drag&drop.
## Государственные программы
* [ROSIN](https://www.rosin-project.eu/) - проект поддержки консорциума [ROS-Industrial](https://github.com/ros-industrial), длившийся с 2017 по 2020 год, при финансировании со стороны Евросоюза и отдельных европейских коммерческих фирм. Гранты выделялись как конкретным техническим проектам (Focused Technical Project, FTP), так и образовательным (Educational Project, EP). В рамках проекта были разработаны-улучшены [множество библиотек и конечных решений](https://www.rosin-project.eu/results) с открытым исходным кодом, среди которых можно выделить:
* планировщик движений MoveIt2
* пакет [ros_control](http://wiki.ros.org/ros_control) - обобщённый интерфейс для управления двигателями
* [ROBIN](https://github.com/ScalABLE40/robin) - мост через разделяемую память между Codesys и ROS
* [биндинги](https://github.com/ada-ros/) для языка программирования [Ada](https://ru.wikipedia.org/wiki/%D0%90%D0%B4%D0%B0_(%D1%8F%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F))
* [интерфейс](https://github.com/cyberbotics/webots_ros) между ROS и симулятором [Webots](https://github.com/cyberbotics/webots)
* [Integration Service](https://github.com/eProsima/Integration-Service) - сервис для интеграции ROS2 с другими middleware
* [ROS-драйвер](https://github.com/UniversalRobots/Universal_Robots_ROS_Driver) для манипулятора UR
* [ROS-пакет](https://gitlab.com/beta-robots/imc_driver) для работы с [servo-контроллерами IMC](https://ingeniamc.com/) через [ros_control](http://wiki.ros.org/ros_control)/[EtherCAT](https://www.ethercat.org/en/technology.html)