robossembler.org/docs/technologies/machine-learning-in-robotics.md
2023-01-18 09:03:23 +00:00

345 lines
No EOL
54 KiB
Markdown
Raw Permalink 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: machine-learning-in-robotics
title: 'Машинное обучение'
---
![robolearning in VR](img/robo-learning-in-VR.jpg)
## Каталоги проектов
[awesome-deel-rl](https://github.com/kengz/awesome-deep-rl)
## Литература
* Учебник ["Robotic Manipulation"](https://manipulation.csail.mit.edu/index.html), изданный в MIT, предлагает вернуться "к истокам" от популярных нынче RL-методов - то есть к Control Theory. Часть с RL пока слабо проработана.
* Учебник ["A Mathematical Introduction to Robotic Manipulation"](http://www.cds.caltech.edu/~murray/mlswiki/index.php?title=First_edition), изданный Калифорнийским технологическим институтом.
## События
### Conference on Robot Learning
Крупнейшая мировая конференция по обучению роботов (в 2020 году опубликовано [160 докладов](https://corlconf.github.io/corl2020/all) и всё доступно для изучения)
[Официальный Сайт](https://sites.google.com/robot-learning.org/corl2020/home) | [Youtube](https://www.youtube.com/c/ConferenceonRobotLearning)
### IEEE International Symposium on Multi-Robot and Multi-Agent Systems
[Site](https://mrs2021.org/)
Multi-robot multi-agent конференция
### Workshop on Closing the Reality Gap in Sim2Real Transfer for Robotics
Воркшоп по sim2real с научными публикациями. [Официальный сайт](https://sim2real.github.io/)
### SAPIEN ManiSkill Challenge
Конкурс с открытым исходным кодом для выполнения задач манипулирования объектами.
[Официальный сайт](https://sapien.ucsd.edu/challenges/maniskill2021/)
## Организации
### Columbia Artificial Intelligence and Robotics Lab
[Github](https://github.com/columbia-ai-robotics)
Проекты лаборатории:
#### Decentralized Multi-arm Motion Planner
Децентрализованный планировщик движений для ансамблей роботов манипуляторов. Планировщик обучен на 1-4 манипуляторах, но при этом показал свою работоспособность на произвольном количестве манипуляторов. То есть является масштабируемым. В проекте использованы следующие python-библиотеки: pytorch, pybullet, numpy, numpy-quaternion, ray, tensorboardX. Для визуализации симуляций в Blender одним из авторов была разработана библиотека [pybullet-blender-recorder](https://github.com/huy-ha/pybullet-blender-recorder). Доступны предварительно обученные модели.
[Сайт](https://multiarm.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/decentralized-multiarm) | [Видео](https://www.youtube.com/watch?v=GNos793PFG4) | [Paper](https://arxiv.org/pdf/2011.02608.pdf)
#### AdaGrasp: Learning an Adaptive Gripper-Aware Grasping Policy
Разработка универсальной стратегии захвата для всех популярных моделей устройств механического захвата. Исследователи обучали модель на разных приспособлениях.
[Сайт](https://adagrasp.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/adagrasp) | [Видео](https://www.youtube.com/watch?v=MUawdWnQDyQ) | [Paper](https://arxiv.org/pdf/2011.14206.pdf)
#### Fit2Form: 3D Generative Model for Robot Gripper Form Design
Fit2Form генерирует формы пальцев для параллельного захвата, которые обеспечивают более стабильный и надежный захват изделия по сравнению с другими алгоритмами проектирования захватов как общего назначения, так и для конкретных задач.
[Сайт](https://fit2form.cs.columbia.edu/) | [Github](https://github.com/columbia-ai-robotics/fit2form) | [Видео](https://www.youtube.com/watch?v=utKHP3qb1bg) | [Paper](https://arxiv.org/abs/2011.06498)
## Исследования
### Sachin Vidyasagaran '2020
[Видео-обзор](https://www.youtube.com/watch?v=ub4ZyegbTSw) исследования по основным алгоритмам обучения с подкреплением
Используемое ПО: OpenAI Gym
Исследование проводилось на базе виртуальной среды [FetchReach-v1](https://gym.openai.com/envs/FetchReach-v1/) от OpenAI. [Обзор](https://openai.com/blog/ingredients-for-robotics-research/) решений для обучения роботов от OpenAI
Результат(в случае с манипулятором): DDPG показал крайне низкую производительность - достижение приемлемого результата к 600 эпохе обучения, остальные три намного лучше
* Deep Deterministic Policy Gradient (DDPG) - 600
* HindSight Experience Replay (DDPG+HER) - 100
* Twin-Delayed DDPG (TD3+HER) - 150
* Extended Twin-Delayed DDPG (ETD3+HER) - 100
### Liliana STAN, Adrian Florin NICOLESCU, Cristina PUPĂZĂ '2020 [pdf](https://journals.indexcopernicus.com/api/file/viewByFileId/1158070.pdf)
Машинное обучение для сборочных роботов. Обзор решений и подходов.
Вызовы обучения с подкреплением в робототехнике:
* Наличие большого количества степеней свободы у современных промышленных манипуляторов(6-7 DoF) приводит к т.н. "проклятью размерности" (взрывному росту числа возможных действий и состояний) и не позволяет использовать ряд алгоритмов. __Возможные способы решения:__ выбор алгоритмов, нечувствительных к проклятью.
* Необходимость в большом количестве данных для обучения и длительность обучения. Создание баз данных на реальных объектах очень затратно, долго по времени и небезопасно. __Возможные способы решения:__ создание проектов как [KnowRob](https://www.knowrob.org/) для сбора и аггрегирования данных многочисленных роботов в разных предметных областях, формирование баз данных.
* Проблема переноса алгоритмов обучения в другие среды и сценарии - _Transfer Learning_. Современные алгоритмы RL чувствительны к настройке гипер-параметров и требуют адаптации под каждый новый случай для достижения лучшей производительности.
* Обучение роботов в виртуальных средах способно компенсировать недостаток "реальных" данных, но оно чувствительно к недостаточной точности моделей как самого робота, так и его окружающей среды. Возникает проблема переносимости алгоритмов из симуляции в реальность - _Sim-to-Real Transfer_, выражающаяся в т.н. _Reality Gap_ - расхождении в поведении движков физики и реального мира. Возможные способы решения: добавление шума в модели окражующей среды; domain randomization - добавление большего количества вариантов сред.
* Проблема безопасности. В ходе обучение параметры робота (от условий окружающей среды и компонентов) могут изменяться и процесс обучения может не сойтись. __Возможный способ решения:__ использования низкоуровневых стратегий с использованием "мягких роботов"(?).
* Главный вызов в роботизации сборочных операций - надёжность, повторяемость, гибкость. __Возможные способы решения:__ использование иерархической декомпозиции задач (Hierarchical Task Decompositions) и переиспользования навыков (Skill Reusability), когда большая задача разбивается на несколько маленьких, которые потом проще переносить на новые задачи.
* Вычислительная ресурсоёмкость. Решается развитием CPU/GPU/FPGA, паралеллизацией и это делает RL-подходы более применимыми на практике.
Главные стимулы для использования RL в робототехнике:
* изучение задачам, которые не могут быть напрямую запрограммированы
* оптимизация сложные задач, которые не имеют аналитических решений (известна функция затрат (например, снизить энергии для выполнения задачи)
* адаптация навыков к новым (ранее не встречавшимся) задачам.
Перспективные подходы к RL в робототехнике
* __Self-Imitation Learning__ (SIL, [paper](https://www.mdpi.com/2079-9292/9/10/1742/pdf), 21 October 2020). Алгоритм с единой стратегией использует эпизодические измененные прошлые траектории, т.е. ретроспективный опыт для обновления стретегии. Эксперименты показывают, что эпизодический SIL может работать лучше, чем базовые алгоритмы с единой стретегией (on-policy), достигая производительности, сопоставимой с современными алгоритмами с разделённой стратегией (off-policy) в некоторых задачах управления моделируемым роботом, обладая способностью решать проблемы с разреженным вознаграждением в условиях непрерывного контроля.
* __Multi-Policy Bayesian Optimization__ ([paper](https://arxiv.org/pdf/2011.01891.pdf), 1 Apr 2021, [github](https://github.com/iexarchos/PolicyTransferKinDRA.git)). Вариативное изменение параметров кинематики в ходе симуляции. Симуляция показала, что внесение изменений в кинематику во время обучения позволяет добиться выгод для переноса стретегии (policy transfer).
* __Curiosity Based RL__ on Robot Manufacturing Cell ([paper](https://arxiv.org/pdf/2011.08743.pdf), 17 Nov 2020). Чтобы обучение с подкреплением оказалось успешным в робототехнике для планирования движений требуется ручная настройка вознаграждений. Для решения проблемы на гибкой производственной ячейке с роботом используется RL, основанное на использовании внутренней мотивации в качестве формы вознаграждения.
* __SOft Data Augmentation (SODA)__ ([paper](https://arxiv.org/pdf/2011.13389), [github](https://github.com/nicklashansen/dmcontrol-generalization-benchmark), [сайт](https://nicklashansen.github.io/SODA/)) - метод, который стабилизирует обучение, отделяя увеличение объема данных от изучения политики. SODA - это общая структура (которая использует Soft Actor-Critic (SAC) в качестве базового алгоритма) для увеличения данных, которая может быть реализована поверх любого стандартного алгоритма RL.
* __Fault-Aware Robust Control via Adversarial RL__ ([paper](https://arxiv.org/pdf/2011.08728), 30 Nov 2020). Предложена состязательная структура RL, которая значительно повышает устойчивость робота к повреждениям суставов и сбоям в задачах манипулирования. Это позволяет роботу быть в курсе своих рабочих состояний.
* __Reachability-based Trajectory Safeguard (RTS)__ ([paper](https://arxiv.org/pdf/2011.08421), [github](https://github.com/roahmlab/reachability-based_trajectory_safeguard)). Используется параметризация траектории и анализ достижимости для обеспечения безопасности во время обучения стратегии. Метод RTS+RL демонстрируется в моделировании, выполняющем безопасное планирование отступающего горизонта в реальном времени на трех роботизированных платформах с пространствами непрерывного действия.
* __Joint Space Control via Deep RL (JAiLeR)__ ([paper](https://arxiv.org/pdf/2011.06332)). Глубокая нейронная сеть, обученная с помощью model-free RL, используется для сопоставления пространства задач (task space) с пространством соединений (joint space). Обучение модели показало, что этот простой подход позволяет достичь точности, сравнимой с точностью классических методов на большом рабочем пространстве, как в симуляции, так и в реальности. Преимущества этого подхода включают автоматическую обработку избыточности, ограничений на стык и профилей ускорения/замедления.
* __Accelerating Reinforcement Learning with Learned Skill Priors (SPiRL)__ ([paper](https://arxiv.org/abs/2010.11944), [github](https://github.com/clvrai/spirl)). Для ускорения обучения с помощью имеющихся данных излагаемый в работе подход предполагает разбиение задачи на навыки и обучение по ним отдельно. Так можно сократить объём передаваемой информации от предыдущих попыток обучения.
Сочетание RL и Control Theory
* __Learning Robot Trajectories subject to Kinematic Joint Constraints__ ([paper](https://arxiv.org/pdf/2011.00563), [github](https://github.com/translearn/limits)). В отличие от наказания за нарушение ограничений, этот подход обеспечивает четкие гарантии безопасности.
* __Motion planning for multi-robots__ - планирование движений нескольких роботов
* J. Kurosu, A. Yorozu, and M. Takahashi, “Simultaneous dual-arm motion planning for minimizing operation time”
* S. S. Mirrazavi Salehian, N. Figueroa, and A. Billard, “A unified framework for coordinated multi-arm motion planning,” Sep. 2018.
* J. P. Van Den Berg and M. H. Overmars, “Prioritized motion planning for multiple robots” 2005
* __Model-based RL from Signal Temporal Logic Specifications__ ([paper](https://arxiv.org/abs/2011.04950)). В этой статье предлагается выразить желаемое высокоуровневое поведение робота с помощью языка формальной спецификации Signal Temporal Logic (STL) в качестве альтернативы функциям вознаграждения/затрат. Используются спецификации STL в сочетании с model-based RL для разработки прогнозирующих поведение программ, которые пытаются оптимизировать выполнение спецификации STL в течение конечного временного горизонта:
* Формулируется процедура для обучения детерминированной прогностической модели динамики системы с использованием глубоких нейронных сетей. Учитывая состояние и последовательность действий, такая прогностическая модель создает прогнозируемую траекторию на заданном пользователем временном горизонте.
* Для оценки оптимальности прогнозируемой траектории используется функция затрат, основанная на количественной семантике STL, и оптимизатор черного ящика, который использует эволюционные стратегии для определения оптимальной последовательности действий (в настройках MPC - model predictive control).
____Темпоральная логика сигналов (STL)___ - это формализм темпоральной логики для определения свойств непрерывных сигналов. STL широко используется для анализа программ в киберфизических системах (CPS), которые взаимодействуют с физическими объектами. STL разработана в 2004 году ([pdf](https://www.researchgate.net/profile/Oded-Maler/publication/220958490_Monitoring_Temporal_Properties_of_Continuous_Signals/links/00b4951adab57d79c4000000/Monitoring-Temporal-Properties-of-Continuous-Signals.pdf)). Есть свежая [реализация](https://github.com/anand-bala/signal-temporal-logic) C++ библиотеки с Python-биндингами для мониторинга спецификаций STL._
____Управление с прогнозирующими моделями (Model Predictive Control, MPC)___ — один из современных методов теории управления использующийся в основном в управлении производственными процессами. Является улучшением классического управления с отрицательной обратной связью, в котором учитывается предсказание поведения объекта управления на различные типы входных воздействий. Обратная связь в таких системах управления используется для корректировки неточностей, связанных с внешними помехами и неточностью математической модели объекта управления. Регулятор полагается на эмпирическую модель процесса для того, чтобы предсказать дальнейшее его поведение, основываясь на предыдущих значениях переменных состояния. Модель объекта управления обычно выбирается линейной._
* Learning Stable Normalizing-Flow Control for Robotic Manipulation [paper](https://arxiv.org/abs/2011.00072). В работе предлагается решение проблемы стабильности в RL-алгоритмах с помощью применения теории управления. Метод предназначен для того, чтобы в конечном итоге создавать детерминированные контроллеры с доказуемой стабильностью без потери эффективности обучения.
State-of-the-Art deep-RL алгоритмы в робототехнике
__Основные классы алгоритмов:__
* Discrete action space algorithms (DAS)
* Deep Q-Network (DQN)
* Deep Duelling Networks
* Normalize Advantage Functions
* Continuous action space algorithms (CAS)
* Stochastic continuous action space (SCAS)
* Stochastic policy gradient
* Deep actor-critic (with experience replay)
* Trust region policy gradient
* Neutral policy gradient
* Deterministic continuous action space (DCAS)
* Deep Deterministic Policy Gradient (DDPG)
* On-policy DPG
* Off-policy DPG
__ACDER: Augmented Curiosity-Driven Experience Replay__ ([paper](https://arxiv.org/pdf/2011.08027.pdf)). ACDER демонстрирует многообещающие экспериментальные результаты во всех трех основных сложных
задачах роботизированной манипуляции и повышает эффективность выборки в пять раз по сравнению с ванильной DDPG+HER. Стратегии, обученные задачам "охват", "толчок" и "выбор и размещение", хорошо работают на физическом роботе без какой-либо дополнительной настройки.
__Critic PI2__: Master Continuous Planning via Policy Improvement with Path Integrals and Deep Actor-Critic Reinforcement Learning ([paper](https://arxiv.org/pdf/2011.06752.pdf)). Подход сочетает методы оптимизации траектории, deep actor-critic RL и model-based RL. Планирование с помощью критика значительно повышает эффективность выборки и производительность в реальном времени.
__Compose Hierarchical Object-Centric Controllers for Robotic Manipulation__ ([paper](https://arxiv.org/pdf/2011.04627)). RL используется создания иерархических объектно-ориентированных контроллеров для задач управления. Подход имеет несколько преимуществ. Во-первых, объектно-ориентированные контроллеры можно повторно использовать в нескольких задачах. Во-вторых, композиции контроллеров инвариантны к определенным свойствам объекта. Наконец, использование структурированного пространства действий вводит значимые индуктивные предубеждения для манипулирования. Эксперименты показывают, что предлагаемый подход приводит к более целенаправленному исследованию и, следовательно, повышается эффективность выборки. Это позволяет обобщать нулевые результаты в тестовых средах и передавать моделирование в реальность без точной настройки.
__Learning Force Control for Contact-rich Manipulation Tasks with Rigid Position-controlled Robots__ [paper](https://arxiv.org/pdf/2003.00628). Предлагаемый метод направлен на объединение управления силой с RL для изучения задач, связанных с контактами, при использовании роботов с позиционным управлением.
__Алгоритм поиска последовательности сборки изделий с использованием прошлых результатов обучения__ ([paper](https://www.sciencedirect.com/science/article/pii/S0925527320300037)). Вычислительный алгоритм для поиска эффективной последовательности сборки и назначения работы рукам робота с использованием обучения с подкреплением.
### Sim-to-Real Transfer in Deep Reinforcement Learning for Robotics: a Survey ([pdf](https://arxiv.org/pdf/2009.13303.pdf))
Авторы проанализировали, как multi-agent RL может преодолеть разрыв с реальностью в распределенных системах с несколькими роботами, где работа различных роботов не обязательно однородна.
### GIGA - Grasp detection via Implicit Geometry and Affordance
[Сайт](https://sites.google.com/view/rpl-giga2021) | [Paper](http://arxiv.org/abs/2104.01542) | [Github](https://github.com/UT-Austin-RPL/GIGA)
GIGA - Нейронная сеть, которая обнаруживает позы захвата с 6 степенями свободы и одновременно с этим реконструирует трехмерную сцену. GIGA использует преимущества глубоких неявных функций, непрерывного представления с эффективным использованием памяти, чтобы обеспечить дифференцированное обучение обеим задачам. GIGA принимает в качестве входных данных представление сцены с помощью функции усеченного расстояния со знаком (TSDF) и предсказывает локальные неявные функции для понимания доступности и трехмерной занятости. Запрашивая имплицитные функции аффорданса с кандидатами в центры захвата, мы можем получить качество захвата, ориентацию захвата и ширину захвата в этих центрах. GIGA обучается на синтетическом наборе данных о хватании, созданном с помощью моделирования физики.
## Инструменты машинного обучения
### Библиотеки RL
* [OpenAI Gym](https://gym.openai.com) - Наиболее распространённая библиотека для обучения с подкреплением. Стандарт индустрии.
* [Deepmind Acme](https://github.com/deepmind/acme) - Вторая по популярности библиотека для RL
* [Surreal](https://github.com/SurrealAI/surreal) - Open-Source Distributed Reinforcement Learning Framework by Stanford Vision and Learning Lab. Активно не разрабатывается.
* [tf2rl](https://github.com/keiohta/tf2rl) - python-библиотека [основных алгоритмов RL](https://github.com/keiohta/tf2rl#algorithms) на Tensorflow2
* [stable-baselines3](https://github.com/DLR-RM/stable-baselines3) - набор надежных реализаций алгоритмов обучения с подкреплением в PyTorch, [docs](https://stable-baselines3.readthedocs.io/en/master/index.html)
### [Gym-UnrealCV](https://github.com/zfw1226/gym-unrealcv)
Реалистичные виртуальные миры для обучения с подкреплением. [UnrealCV](https://unrealcv.org/)
используется для связи Unreal Engine и Gym.
### Flower
[Сайт](https://flower.dev/) | [Github](https://github.com/adap/flower) | [Paper](https://arxiv.org/pdf/2007.14390.pdf)
Фреймворк для federated learning (федеративное или распределённое обучение), который активно интегрируется в ROS ([презентация RosDevDay'21](https://www.youtube.com/watch?v=kRxmyr8-4RM)). Ключевая идея состоит в том, чтобы локальные агенты отправляли на сервер не данные, а уже обновлённые параметры модели, которые потом агрегируются с помощью метода federeated averaging от Google ([paper](https://arxiv.org/pdf/1602.05629.pdf)). В [примере](https://flower.dev/blog/2021-02-24-pytorch-from-centralized-to-federated) с pytorch существующий алгоритм обучения подключается к библиотеке Flower (указывается host:port сервера) и тиражируется на нескольких машинах, а на сервере задаётся количество раундов federated averaging.
### robo-gym
[Сайт](https://sites.google.com/view/robo-gym) | [Github](https://github.com/jr-robotics/robo-gym) | [Paper](https://arxiv.org/pdf/2007.02753.pdf)
Набор open source инструментов для распределённого машинного обучения на реальных и симулируемых роботах. Фреймворк состоит из двух частей:
* Серверной части, которая взаимодействует с реальным или симуляционным роботом. Реализована на ROS, Gazebo, Python.
* Части с окружающей средой, которая представляет OpenAI Gym интерфейс к роботу и реализует различные среды.
Ключевая особенность заключается в том, что части взаимодействуют между собой через сеть, что делает возможным реализацию обмена данными со множественными экземплярами частей как на одной машине, так и на нескольких.
Разработано [JOANNEUM RESEARCH Institute for Robotics and Mechatronics](https://joanneum.at/robotics), Klagenfurt, Austria. Активно разрабатывается по сей день, но развитого сообщества нет - всего 2 контрибьютора - это авторы статьи.
В [Paper](https://arxiv.org/pdf/2007.02753.pdf) также приведена сравнительная таблица(Table I, страница 7) фреймворков для глубокого машинного обучения роботов. Рассмотрены OpenAI Gym - Robotics Suite, DeepMind Control Suite, SURREAL Robotics Suite, RLBench, SenseAct, gym-gazebo-2, robo-gym. Показатели сравнения: количество форков, поддерживаемые роботы, количество задач, поддержка виртуального и реального железа, масштабируемость, используемая платформа симуляции. robo-gym
### [Unity ML Agents](https://github.com/Unity-Technologies/ml-agents)
Проект для обучения агентов на Unity, интегрирована с gym. Среды мультяшные, не очень фотореалистичные.
### Gym Ignition
[Github](https://github.com/robotology/gym-ignition) | [Документация](https://robotology.github.io/gym-ignition/master/index.html) | [Пример применения (видео)](https://youtu.be/mo4ZRi0mmSQ?t=145)
Фреймворк для создания воспроизводимых виртуальных сред для обучения с подкреплением. В Gym-ignition представлена попытка создания унифицированного программного интерфейса как для реальных роботов и сред, так и для виртуальных.
Фреймворк состоит из следующих компонентов:
* ScenarI/O (Scene Interfaces for Robot Input / Output) - слой абстракции C++ для взаимодействия с виртуальными и реальными роботами. Этот слой позволяет скрыть детали реализации конкретного физического движка.
* Gazebo ScenarI/O: Реализация интерфейсов ScenarI/O для взаимодействия с симулятором Ignition Gazebo. Предоставляются python-биндинги набором функций, сопоставимым с популярными альтернативами - например, pybullet и mujoco-py.
* gym_ignition: python-пакет с набором инструментов для создания OpenAI Gym сред и обучения в них роботов. Пакет предоставляет такие абстрации как `Task` и `Runtime` для облегчения создания сред, которые могут запускаться прозрачно во всех реализациях ScenarI/O (различные симуляторы, реальные роботы, ...). Пакет также содержит функции для расчёта инверсной кинематики и динамики с несколькими физическими телами, поддерживающей плавающих роботов на основе библиотеки iDynTree.
* gym_ignition_environments: Демонстрационные среды с образцовой структурой, созданные с помощью gym_ignition и gym-ignition-models.
### OpenDR
[Github](https://github.com/opendr-eu/opendr) | [Справочное руководство](https://github.com/opendr-eu/opendr/blob/master/docs/reference/index.md)
Целью проекта OpenDR является разработка модульного, открытого и непатентованного набора инструментов для основных функций роботов путем использования глубокого обучения для обеспечения расширенных возможностей восприятия и познания, таким образом отвечая общим требованиям приложений робототехники в прикладных областях здравоохранения, агропромышленного и гибкого производства. OpenDR предоставляет средства для связи приложений робототехники с программными библиотеками (средами глубокого обучения, например, PyTorch и Tensorflow) с операционной средой ( ROS ). OpenDR фокусируется на основных технологиях AI и Cognition для предоставления инструментов, которые делают роботизированные системы когнитивными, давая им возможность:
* взаимодействовать с людьми и окружающей средой, разрабатывая методы глубокого обучения для активного восприятия и познания, ориентированного на человека и окружающую среду,
* учиться и классифицировать, разрабатывая инструменты глубокого обучения для обучения и вывода в обычных условиях робототехники, а также
* принимать решения и получать знания, разрабатывая инструменты глубокого обучения для действий когнитивных роботов и принятия решений.
Проект реализует следующие основные категории задач для робототехники:
1. Инструменты распознавания человека и его деятельности, такие как распознавание лиц, жестов и эмоций человека, распознавание речи, обнаружение сердечных аномалий, оценки положения.
2. Инструменты обнаружения и сопровождения объектов в 2D и 3D, а также семантической и паноптической сегментации.
3. Инструменты обучения роботов навыкам движения и захвата.
4. Инструменты симуляции, такие как визуализация модели человека и фотореалистичный генератор многоракурсных изображений лица.
Также для взаимодействия с ROS разработан пакет opendr_bridge, который предоставляет интерфейс для преобразования типов данных и целей OpenDR в совместимые с ROS типы. Класс ROSBridge, реализующий данный интерфейс, предоставляет два метода для каждого типа данных X:
1. from_ros_X() : преобразует ROS-эквивалент X в тип данных OpenDR.
2. to_ros_X() : преобразует тип данных OpenDR в ROS-эквивалент X.
Большая часть пакетов представляет собой модули на Python'е, которые можно использовать раздельно по мере необходимости.
### MoPA-RL
[Website](https://clvrai.github.io/mopa-rl/) | [Github](https://github.com/clvrai/mopa-rl) | [Paper](https://arxiv.org/pdf/2010.11940.pdf) | [Video](https://www.youtube.com/watch?v=AEiNyY257fs)
Фреймворк сочетает преимущества обучения с подкреплением без модели (model-free RL) и планировщика движения (motion planner, MP) на основе выборки с минимальными знаниями о конкретных задачах.
Для задач, требующих касания манипулятором или его приспособлением других предметов целесообразно использовать RL-policy, а в задачах, где нужно перемещение манипулятора в сложных стеснённых условиях, используется планировщик. Ключевая роль алгоритма состоит в том, что в ходе решения задач выбирается либо планировщик движения, либо прямое выполнение политики обучения с подкреплением. Тем самым достигается высокая производительность. В симуляциях использовался движок физики Mujoco.
### SAPIEN - A SimulAted Part-based Interactive ENvironment
Фотореалистичная среда с большим количеством разнообразных объектов для взаимодействия с роботами-манипуляторами. Проект включает в себя cимулятор физических сред [sapien](https://sapien.ucsd.edu/docs/latest/tutorial/basic/hello_world.html) (движок PhysX, assimp, ros-console-bridge, парсер urdfdom, алгоритмы для расчёта динамики сплошных тел [pinocchio](https://github.com/stack-of-tasks/pinocchio), мультиплатформенная библиотека для работы с OpenGL/Vulkan [glfw](https://github.com/glfw/glfw)), [датасет](https://sapien.ucsd.edu/browse), планировщик движений [mplib](https://github.com/haosulab/MPlib) на Python, gym-фреймворк для обучения роботов манипуляторов [ManiSkill-Learn](https://github.com/haosulab/ManiSkill-Learn) и [Benchmark](https://github.com/haosulab/ManiSkill) для него.
Совместный проект UCSD, Stanford и SFU. На базе проекта создан обучающий курс по RL в робототехнике, по завершению которого требуется выполнить [тестовое задание](https://github.com/haosulab/CSE291-G00-SP20), где два робота-манипулятора с рабочими органами-лопатками должны подбирать предметы с пола и складывать в коробку.
### [AirSim](https://github.com/microsoft/AirSim)
Open source симулятор для автономных транспортных средств от Microsoft AI & Research. Интересен тем, что поддерживаются оба игровых движка для рендеринга - Unreal Engine и Unity(пока экспериментальная поддержка). Разработаны python-обёртки для OpenAI Gym и ROS.
Для поддержки URDF в AirSim [разработан](http://www.mitchellspryn.com/2019/01/19/Simulating-Arbitrary-Robots-Using-the-Unreal-Engine.html) форк - [UrdfSim](https://github.com/mitchellspryn/UrdfSim).
### [RelMoGen](http://svl.stanford.edu/projects/relmogen/)
Leveraging Motion Generation in Reinforcement Learning for Mobile Manipulation | [Paper](https://arxiv.org/abs/2008.07792)
### GraspNet
[Сайт](https://graspnet.net/index.html) | [Github](https://github.com/graspnet)
Открытый проект Шанхайского университета. [Базовая модель нейронной сети](https://github.com/graspnet/graspnet-baseline) для опознавания и захвата групп смешанных объектов. Много разнообразных датасетов.
### Gibson Environments
[Сайт](http://gibsonenv.stanford.edu/) | [Github](https://github.com/StanfordVL/GibsonEnv)
Набор виртуальных сред (в основном жилые помещения для людей) для обучение мобильных роботов. Используется bullet и gym-подобный интерфейс для взаимодействия с агентом.
### Nimble Physics
[Сайт](http://www.nimblephysics.org/) | [Docs](http://www.nimblephysics.org/docs) | [Github](https://github.com/nimblephysics/nimblephysics) | [Paper](https://arxiv.org/abs/2103.16021)
Движок предлагает использовать физику как нелинейность в нейронной сети. Форк популярного физического движка DART с аналитическими градиентами и привязкой к PyTorch. Многие симуляции, которые работали в DART, могут быть напрямую переведены в Nimble. Проект Stanford.
## Обучение с подкреплением - определения и подходы
___Обучение с подкреплением (ОП)___ - разновидность алгоритмов машинного обучения, наряду с обучением без учителя и обучением с учителем.
Алгоритм состоит в следующем:
* агент, руководствуясь стратегией (policy), воздействует (action, a) на окружающую среду с текущим состоянием (state, s)
* в ответ агент получает новое состояние окружающей среды s' и награду r
* на новом шаге агент меняет свою стратегию, чтобы максимизировать суммарное вознаграждение(value).
### Отличие ОП и обучения с учителем
Цель обучения с учителем научиться обобщать, располагая лишь фиксированным набором данных с ограниченным количеством примеров. Каждый пример состоит из входа и желательного выхода (или метки), так что реакция на выбор агента следует незамедлительно.
Напротив, в ОП акцент ставится на последовательных действиях, которые можно предпринять в конкретной ситуации. В данном случае единственное, что дает учитель, сигнал вознаграждения. Какое действие правильно при данных условиях, неизвестно, в отличие от обучения с учителем.
### Дилемма исследования(exploration)/использования(exploitation) в ОП
Агент должен совершать действия, которые с высокой вероятностью приведут к достижению цели (использование), но в то же время должен пробовать _иные действия_, чтобы другие части окружающей среды не остались неисследованными (исследование). Эту двойственность называют дилеммой (или компромиссом) исследования–использования, она призвана решить трудную проблему поиска баланса между исследованием и использованием окружающей среды. Она важна также и потому, что, в отличие от обучения с учителем, агент ОП может влиять на окружающую среду, т. к. вправе собирать новые данные, коль скоро считает это полезным.
### Off-policy, on-policy
_Off-policy_ - алгоритм ОП, где стратегия агента, воздействующего на среду (поведенческая стратегия), отличается от стратегии, которую обучают (целевая стратегия). Целевая стратегия фактически не используется для влияния на состояние среды.
_On-policy_ - алгоритм, где воздействует на среду и обучается одна и та же стратегия. То есть стратегия обучается на тех же данных, которые генерирует.
Алгоритмы с разделенной стратегией(off-policy) менее устойчивы и их труднее проектировать, чем алгоритмы с единой стратегией, зато у них более высокая выборочная эффективность, т. е. для обучения нужно меньше данных.
### Model-free (MFRL), model-based (MBRL)
Модель описывает поведение окружеющей среды, то есть может предсказать её состояние в следующем шаге. Если модель есть и известна(model-based), то можно использовать алгоритмы планирования. Модель может быть известна заранее или формироваться в ходе взаимодействия с окружающей средой.
Model-free делятся на
* Q-learning - алгоритм на основе обучения функции ценности действия); как правило это алгоритмы с разделённой стратегией(off-policy), чтобы сделать возможным обучение на базе предыдущего опыта, так как выборочные данные можно хранить в буфере воспроизведения.
* Policy gradient (градиент стратегии, метод оптимизации стратегии); как правило, это on-policy алгоритмы с единой стратегией. Актор-критик (actor-critic) - разновидность алгоритма оптимизации единой стратегии (актор) c одновременным обучением Q-функции ценности (критик). Поскольку алгоритмы исполнитель–критик обучают и используют функцию ценности, они классифицируются как алгоритмы градиента стратегии, а не как гибридные.
* Гибридные - сочетают обучение стратегии и функции ценности.
К model-based алгоритмам относятся
* чистое планирование
* встроенное планирование для улучшения стратегии и генерации выборки из аппроксимированной модели
* динамическое программирование - семейство алгоритмов, в которых модель используется для оценивания функции ценности. Смысл в том, чтобы разбить задачу на меньшие перекрывающиеся подзадачи, а затем найти решение исходной задачи, объединяя решения подзадач. Является одним из самых простых подходов. Подходит для вычисления оптимальной стратегии, поскольку имеется точная модель окружающей среды. Cложность экспоненциально возрастает вместе с увеличением числа состояний.
### Выбор алгоритма ОП
Нет универсальных алгоритмов, все имеют как преимущества, так и недостатки. Наиболее значимые критерии оценки - устойчивость, выборочная эффективность, время обучения, простота использования, надёжность. Алгоритмы градиента стратегии более устойчивы и надежны, чем алгоритмы функции ценности. С другой стороны, методы функции ценности обладают лучшей выборочной эффективностью, поскольку это методы с разделенной стратегией и потому могут использовать предшествующий опыт. В свою очередь, алгоритмы, основанные на модели, лучше алгоритмов Q-обучения с точки зрения выборочной эффективности, но гораздо дороже с вычислительной точки зрения и работают медленнее.
### Ссылки
[Курс лекций](https://deepmind.com/learning-resources/reinforcement-learning-series-2021) по Reinfocement Learning от Deepmind