---
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