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

103 lines
40 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 промышленный робот-манипулятор. Разработчик компания [Haddington Dynamics](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 от [Petar Crnjak](https://github.com/PCrnjak). Все детали(кроме электроники и моторов) которого могут быть изготовлены на 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/AR4](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. Позиционируется как дешёвый робот для образовательных целей. Автор [Ángel LM](http://angel-lm.com).
* [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. Автор [Andreas Hoelldorfer](http://chaozlabs.blogspot.de/)
* [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, на котором проверена работоспособность алгоритма.
* [RR1](https://github.com/surynek/RR1)(Real Robot One) - DIY-ориентированный 6-DoF манипулятор на шаговых двигателях и планетарных редукторах, вдохновлённый AR3/AR4. Разработан учёным-робототехником из Польши Павлом Суринеком (Pavel Surynek, [github](https://github.com/surynek)). [Видео-презентация](https://www.youtube.com/watch?v=RL8fspyn4dw), [блог проекта](https://hackaday.io/project/185958-rr1-real-robot-one-a-diy-desktop-robotic-arm) на Hackaday. Исходные файлы не подготовлены для публикации - представлены только stl-модели редуктора без каких-либо пояснительных документов. Сам автор занимается исследованиями по теме multi-agent path finding (MAPF); в рамках исследований разработаны и опубликованы программные пакеты(солверы) [reLOC](https://github.com/surynek/reLOC/tree/master/reLOC-0.x) и [boOX](https://github.com/surynek/boOX/tree/master/boOX-y).
* [PAROL6](https://github.com/PCrnjak/PAROL6-Desktop-robot-arm). 6-DoF настольный робот-манипулятор для обучения *на шаговых двигателях* от Петра Черняка(Petar Crnjak), разработчика [Faze4](https://github.com/PCrnjak/Faze4-Robotic-arm) и [CM6](https://github.com/PCrnjak/CM6_COBOT_ROBOT). Полезная нагрузка 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. У проекта отличная [документация](https://source-robotics.github.io/PAROL-docs). Описание проекта на [Hackaday](https://hackaday.io/project/191860-parol6-desktop-robotic-arm).
## ROS-драйверы к коммерческим роботам
* [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` - исполняемые программы динамически выгружаемые в среду и из неё
* [CANOpenRobotController](https://github.com/UniMelbHumanRoboticsLab/CANOpenRobotController). Фреймворк для управления жёсткими многосоставными робототехническими системами на базе конечных автоматов. Изначально разрабатывался для управления экзоскелетами (см. проект [ALEX Embedded System](https://exoembedded.readthedocs.io/en/latest/)). Включает в себя также реализацию [CANopenLinux](https://github.com/CANopenNode/CANopenLinux) для обеспечения интерфейса между встроенной Linux с поддержкой CAN и драйверами/датчиками двигателей на основе CANopen. Код фреймворка разделён на 3 уровня:
* *Уровень связи CANopen*: обеспечивает связь на уровне CAN, предоставляя механизмы для отправки и получения сообщений PDO и SDO.
* *Уровень робота*: определяет управляемые компоненты робота, включая соединения, связанные приводы и устройства ввода.
* *Уровень приложения*: определяет логику высокого уровня для устройства на основе реализации конечного автомата.
* [SimpleFOC](https://github.com/simplefoc/Arduino-FOC) - библиотека векторного и шагового управления двигателями. Изначально была создана для Arduino, но сейчас поддерживает широкий ассортимент оборудования: двигатели(BLDC, шаговые), датчики поворота(магнитные, тока, энкодеры), микроконтроллеры(AVR, STM32, ESP32, Teensy), драйверы ключей(L6234, DRV8305, DRV8313). Библиотека реализует следующую схему композиции элементов системы управления - двигатель + датчик угла + датчик тока + драйвер + микроконтроллер, различные комбинации которой стремится поддерживать. Помимо непосредственно библиотеки, в рамках проекта были разработаны аппаратные модули драйверов для контроля токов от 3 до 30А, а также приложение с графическим интерфейсом SimpleFOCStudio для отладки алгоритмов управления. У проекта весьма активное и развитое сообщество: github, форум, discord, магазин для дистрибьюции разработанных аппаратных модулей, а также весьма объёмная и качественная документация с изложением теории векторного управления и примерами реализованных проектов. Поддерживаются среды разработки ArduinoIDE и PlatformIO.
* [Open3D](https://github.com/IntelVCL/Open3D). [Сайт](http://www.open3d.org/), [документация](http://www.open3d.org/docs/release/introduction.html). Поддерживает быструю разработку программного обеспечения, работающего с 3D-данными. Интерфейс Open3D предоставляет набор тщательно отобранных структур данных и алгоритмов как на C ++, так и на Python. Бэкэнд сильно оптимизирован и настроен для распараллеливания. Open3D был разработан с чистого листа с небольшим и тщательно продуманным набором зависимостей. Его можно настроить на разных платформах и скомпилировать из исходного кода с минимальными усилиями. Код чистый, оформлен в едином стиле и поддерживается с помощью четкого механизма проверки кода. Open3D использовался в ряде опубликованных исследовательских проектов и активно развертывается в облаке. Мы приветствуем вклад сообщества разработчиков ПО с открытым исходным кодом. Участники консорциума ROS-Industrial в [видеопрезентации](https://www.youtube.com/watch?v=eFjymCNbFng) показали каким образом они используют Open3D в задачах реконструкции геометрии объектов с недорогими RGB-D камерами. Ранее они использовали [yak](https://github.com/ros-industrial/yak).
* [Extended Object Detection ROS](https://github.com/Extended-Object-Detection-ROS/extended_object_detection). [Wiki](https://github.com/Extended-Object-Detection-ROS/extended_object_detection/wiki), [видео-презентация(ru)](https://www.youtube.com/watch?v=2qwgAfdnEt0). Данный пакет является решением в области компьютерного зрения, который содержит набор различных методов детектирования объектов, объединенных одним интерфейсом. Для использования пакета не требуется погружение в API, все настройки детектирования доступны через единый конфигурационный файл. Пакет разработан в рамках парадигмы "распознавания по частям", что позволяет указывать различные признаки объекта, такие как образ, цвет, форма, размеры и др. Эти признаки распознаются по-отдельности и далее агрегируются в целостные объекты. Помимо распознавания простых объектов, пакет позволяет задавать их комбинации, детектируя сложный объект, который является набором простых объектов и отношений между ними. Пакет предоставляет полноценный ROS интерфейс, позволяющий использовать его в задачах робототехники.
## Сервисы
* [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)