<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Universal Autonomy Initiative</title><generator>teletype.in</generator><description><![CDATA[Memetic robotics research]]></description><image><url>https://img4.teletype.in/files/f7/41/f741a043-f7f5-44d5-a398-544957e520a8.png</url><title>Universal Autonomy Initiative</title><link>https://teletype.in/@robotsilike</link></image><link>https://teletype.in/@robotsilike?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=robotsilike</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/robotsilike?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/robotsilike?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 14 Aug 2026 16:27:52 GMT</pubDate><lastBuildDate>Fri, 14 Aug 2026 16:27:52 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@robotsilike/OgAd2_rLEZu</guid><link>https://teletype.in/@robotsilike/OgAd2_rLEZu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=robotsilike</link><comments>https://teletype.in/@robotsilike/OgAd2_rLEZu?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=robotsilike#comments</comments><dc:creator>robotsilike</dc:creator><title>Введение в Model Predictive Control</title><pubDate>Thu, 03 Apr 2025 17:37:25 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/ef/52/ef521e07-cde0-43c0-8bfc-6652fa690468.png"></media:content><description><![CDATA[<img src="https://img1.teletype.in/files/03/4e/034eb200-bb92-465d-bb5f-7f6ba2274664.png"></img>Итак, ребятки-зайчики-котики, сегодня мы немного расскажем вам про большое семейство методов управления, известных как Model Predictive Control, они же MPC, они же управления с прогнозирующими моделями. Сам по себе метод уже давно является индустриальным стандартом, однако, я замечаю, что в окружающем меня роботикс-комьюнити, да и во многих образовательных программах, его часто обходят стороной. Помимо этого, MPC постепенно обретает новую жизнь в эпоху всевозможного дип лернинга, так что понимать эту идею особенно полезно тем, кто хочет заниматься robot learning.]]></description><content:encoded><![CDATA[
  <p id="lcsW">Итак, ребятки-зайчики-котики, сегодня мы немного расскажем вам про большое семейство методов управления, известных как <em>Model Predictive Control</em>, они же <em>MPC</em>, они же <em>управления с прогнозирующими моделями</em>. Сам по себе метод уже давно является индустриальным стандартом, однако, я замечаю, что в окружающем меня роботикс-комьюнити, да и во многих образовательных программах, его часто обходят стороной. Помимо этого, MPC постепенно обретает новую жизнь в эпоху всевозможного дип лернинга, так что понимать эту идею особенно полезно тем, кто хочет заниматься robot learning.</p>
  <p id="BAq7">Сразу скажу, что я не являюсь специалистом по этой теме. Просто поработал с ней немного, мне зашло, решил поделиться, сделать entry point для более компетентных людей, так сказать.</p>
  <p id="Iv9J">Для базового ознакомления достаточно посетить разделы <em>Level 0 </em>и <em>MPC+DL</em>, для желающих посмотреть под капот есть разделы <em>Level 1</em> и <em>Прикладное</em>.</p>
  <nav>
    <ul>
      <li class="m_level_1"><a href="#XP7I">Level 0: Для самых маленьких</a></li>
      <li class="m_level_2"><a href="#ZHDn">Миленький примерчик</a></li>
      <li class="m_level_1"><a href="#Teyx">Level 1: Для подростков с матешей</a></li>
      <li class="m_level_2"><a href="#mL5J">Honorable mentions: DDP/iLQR и MPPI</a></li>
      <li class="m_level_1"><a href="#9hnl">Прикладное: фреймворки и пакеты</a></li>
      <li class="m_level_2"><a href="#OGH5">do-mpc</a></li>
      <li class="m_level_2"><a href="#z0e1">ForcesPro</a></li>
      <li class="m_level_2"><a href="#X5CG">ACADO</a></li>
      <li class="m_level_2"><a href="#l1sK">acado</a></li>
      <li class="m_level_2"><a href="#B1Qu">cvxpy</a></li>
      <li class="m_level_1"><a href="#Ao4M">MPC в эпоху Deep Learning</a></li>
      <li class="m_level_1"><a href="#V6ca">А мы что?</a></li>
    </ul>
  </nav>
  <hr />
  <p id="yqXd"></p>
  <h2 id="XP7I">Level 0: Для самых маленьких</h2>
  <p id="VSKv">Давайте начнём с простого анализа тайтла и поймём, какую задачу мы решаем. </p>
  <p id="SdMB">Предположим, что у нас есть какая-то <em>система</em>, которой мы хотим <em>управлять</em>. Этой системой может быть что угодно: от машин, роботов, до, в теории, государства. Под управлением понимают генерацию последовательности <em>управляющих сигналов</em> (они же <em>controls</em>, <em>actions</em>, <em>управления</em> и <em>экшены</em>), которые приводят к решению какой-либо поставленной задачи. В случае машины или робота этими сигналами могут быть, например, скорости или ускорения, которые привезут нас в целевую точку; в случае государства — придумайте сами (<s>ребята, записываем домашнее задание</s>). </p>
  <p id="NnSJ">Слово <em>Model</em> в MPC предполагает наличие (математической) модели нашей системы. Эта модель позволяет просчитать поведение системы в будущем — отсюда и слово <em>predictive</em>. </p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="hw3v">Идея MPC заключается в нахождении управлений, которые приведут к решению задачи в течение какого-то времени — <em>горизонта</em> — <em>T</em> в будущем, используя модель для предсказания состояния системы.</p>
  </section>
  <p id="VBfQ">Хорошо, предсказывать мы умеем, как найти-то управления? За это отвечает компонент, которого хоть и нет в тайтле, несмотря на ключевую роль — это <em>функция стоимости</em> (<em>cost function</em>, <em>cost</em>, <em>кост</em>). Стоимость говорит нам о том, насколько состояние системы (и в общем случае управляющий сигнал), плохи в контексте поставленной задачи. Тут RL-щики должны напрячься и словить флешбеки от понятия <em>награды</em> (<em>reward</em>): в общем случае cost и reward — понятия довольно взаимозаменяемые, просто reward говорит нам, насколько состояние, наоборот, хорошее (но заранее скажу, что между MPC и RL идейно очень большая разница, хоть и с первого взгляда может показаться обратное).</p>
  <section style="background-color:hsl(hsl(236, 74%, var(--autocolor-background-lightness, 95%)), 85%, 85%);">
    <p id="GhHA">MPC приводит к решению поставленной задачи за счет нахождения управлений, которые минимизируют суммарную стоимость в будущем.</p>
  </section>
  <h3 id="ZHDn">Миленький примерчик</h3>
  <figure id="KPYd" class="m_original" data-caption-align="center">
    <img src="https://img4.teletype.in/files/3a/c9/3ac95271-7692-497f-af8e-3f0946722910.png" width="375" />
    <figcaption>Милая иллюстрация, честно украденная <a href="https://www.colorado.edu/faculty/nicotra/research/model-predictive-control" target="_blank">отсюда</a>.</figcaption>
  </figure>
  <p id="9f6x">Давно нашёл эту картинку на сайте <a href="https://www.colorado.edu/faculty/nicotra/research/model-predictive-control" target="_blank">одной лабы из Колорадо</a> (кста, челики вроде прикольный рисерч делают, мне зашло). В общем, у зайца-гонщика из команды MPC поставлена <em>задача</em>: достичь финиша как можно быстрее. У него в голове есть какая-то интуитивная <em>модель</em> динамики мотоцикла: он понимает, как будет вести себя мотоцикл в зависимости от того, как жать на педали и поворачивать руль (ого, получается в этом случае модель — это биологическая нейронная сеть!!!). Эта модель позволяет ему примерно спроецировать будущую траекторию на трек — что и изображено в облачке.</p>
  <p id="9qsW">Далее, посмотрим на жёлтую и зелёную траекторию. Жёлтая траектория в целом,решает поставленную задачу, но не является оптимальной, т.к. слишком длинная. Поэтому и её стоимость выше. Зелёная же решает задачу и является более короткой, поэтому её стоимость ниже, можно сказать, минимальная из всех возможных — она является оптимальным решением в контексте поставленной задачи.</p>
  <p id="OVRm">Также одно из важных преимуществ MPC, не упомянутых выше —  возможность введения <em>ограничений,</em> т. е. определения множества состояний, в которых система не должна находиться ни при каких условиях. Посмотрим на красные траектории у зайчика. Они нарушают ограничения — ими в нашем случае являются границы трека — а значит, никак не могут быть решениями поставленной задачи, даже если бы они приводили меньшей стоимости. Иначе зайчика в лучшем случае ждёт дисквалификация, а в худшем — GGWP 😥.</p>
  <p id="fg3l">С Level 0 всё, дальше пойдёт уже полноценный рассказ для взрослых с математикой. Кому хочется ещё интуитивных объяснений — могу порекомендовать <a href="https://www.youtube.com/watch?v=8U0xiOkDcmw" target="_blank">серию видосов от доброй тётеньки из Matlab</a>.</p>
  <hr />
  <p id="uEbL"></p>
  <h2 id="Teyx">Level 1: Для подростков с матешей</h2>
  <p id="9QHp">Теперь давайте рассмотрим уже более строгую математическую постановку задачи.</p>
  <p id="htwZ">В дискретном случае нашу задачу можно записать в следующем общем виде (для непрерывного случая, по классике, сумма заменяется на интеграл, а модель динамики определяет производную состояния):</p>
  <figure id="8Bcw" class="m_column">
    <img src="https://img2.teletype.in/files/51/fb/51fbcda1-fb1e-4bf3-94de-d7191c85ae27.png" width="2588" />
  </figure>
  <p id="0bTN">Решив данную оптимизационную задачу, мы получим последовательность управлений на наш горизонт. На практике, обычно на вход системе подают <em>только первое управление</em> из последовательности, а на следующем шаге решают задачу заново. Зачем так, почему бы тогда не решать задачу только для одного шага? Ну, тут у нас, можно сказать, классическая проблема жадных алгоритмов vs. динамическое программирование. <em>Решая задачу на горизонт, мы можем получить более оптимальное решение для будущего</em>. Конечно, в идеале тогда горизонт должен быть бесконечным, что невозможно на практике, поэтому ограничиваемся <em>H</em> шагами. А перепланирование после первого шага нужно для быстрой реакции на изменения в наблюдаемой среде (например, на резкие манёвры машин и людей). Хотя никто не запрещает использовать все управления или часть из них.</p>
  <p id="J9aj">Для лучшего понимания всех ингредиентов давайте сразу рассмотрим простую прикладную задачу. Предположим, что у нас есть робот, представляемый кругом, для которого можно задавать вектор скорости в произвольном направлении. Наша цель — переместить робота из точки A в точку B, минуя круговые препятствия.</p>
  <figure id="feaq" class="m_column" data-caption-align="center">
    <img src="https://img4.teletype.in/files/f4/1d/f41dffce-9b03-4c27-82f9-fe003997938e.png" width="1684" />
    <figcaption>Игрушечный пример</figcaption>
  </figure>
  <p id="kxxH">Интуитивно, имеем слеудующую обстановку:</p>
  <ul id="10O5">
    <li id="vXGh">Мы хотим минимизировать расстояние между роботом и целью;</li>
    <li id="ftTL">При этом робот не должен столкнуться с препятствиями (это и есть наши ограничения) — для наших простых репрезентаций это означает, что расстояние до препятствия должно превышать сумму радиусов препятствия и робота;</li>
    <li id="EXBe">Движение робота в нашем случае можно описать простой кинематикой.</li>
  </ul>
  <p id="Ai60">Исходя из этого, можно предложить следующую постановку задачи для MPC:</p>
  <figure id="gSIm" class="m_column">
    <img src="https://img2.teletype.in/files/9a/f0/9af06042-22b1-47af-8d51-162757a83f1c.png" width="1340" />
  </figure>
  <p id="FlOa">Здесь мы предполагаем, что наша система — дискретная, и шаг дискретизации равен \Delta t. Состояние робота — декартовы координаты в 2D. В стоимости на этапе, равно как и в финальной, мы напрямую минимизируем расстояние между роботом и целью. На практике в стоимость на этапе также добавляют штрафы на большие величины управлений, поскольку в реальных системах это может привести к нестабильности. Поскольку ограничения у нас заданы в виде неравенств со знаком &gt;=, то и функция записывается по принципу расстояния минус суммарный радиус.</p>
  <p id="p56q">Для реальных систем, конечно, постановка задачи может быть намного сложнее: динамику могут задавать в виде системы диффуров, а ограничений может быть в разы больше.</p>
  <p id="txsO">Ок, с постановкой задачи мы разобрались, а как её решать-то?</p>
  <p id="lmQG">Ха-ха. Вопрос не простой и заслуживает отдельного поста, если наша организация, конечно, более глубоко разберётся в сабже. Но если дать хоть какой-то ответ, то можно выделить следующие методы. В первую очередь, это выпуклая оптимизация, или лучше даже сказать, выпуклое программирование (линейное программирование сюда же, вполне его юзают для MPC, если получается нормально линеаризовать проблему). Даже у легенды <a href="https://en.wikipedia.org/wiki/Stephen_P._Boyd" target="_blank">Stephen P. Boyd</a> <s>Rice</s> (кто не слышал, чекайте его книгу <em>Convex Optimization</em> и пакеты <em>CVX/CVXPY</em>) есть много работ про решение задачи MPC. Из методов, которые точно юзаются для MPC, хочется отметить <em><a href="https://en.wikipedia.org/wiki/Quadratically_constrained_quadratic_program" target="_blank">Quadratically Constrained Quadratic Program (QCQP)</a></em> и <em><a href="http://Second-order%20cone%20programming" target="_blank">Second-Order Cone Programming (SOCP)</a></em> — их точно можно найти в разных солверах и прикладных публикациях.</p>
  <p id="erZV">В общем случае для нелинейных задач применимы любые методы из <a href="https://en.wikipedia.org/wiki/Nonlinear_programming" target="_blank"><em>нелинейного программирования</em></a>. Выпуклое программирование, в общем-то, является частным случаем. Из всего этого разнообразия, особенно в контексте невыпуклых задач, важно отметить <a href="https://en.wikipedia.org/wiki/Interior-point_method" target="_blank"><em>Interior-point Methods</em></a>, в частности, солвер <em><a href="https://en.wikipedia.org/wiki/IPOPT" target="_blank">IPOPT</a></em>, и <em><a href="http://Sequential%20quadratic%20programming" target="_blank">Sequential Quadratic Programming (SQP)</a></em>. Из исследователей в области нелинейного программирования, помимо упомянутого выше Бойда, хочется выделить господина <a href="https://en.wikipedia.org/wiki/Dimitri_Bertsekas" target="_blank">Dimitri Bertsekas</a> (RL-щикам, знакомым с понятием <em>approximate dynamic programming</em>, он может быть уже знаком) — у него есть целая книжка по нелинейному программированию.</p>
  <p id="ZpBh">В целом, конечно, ограничений на методы нет, можно выбрать абсолютно любой метод оптимизации, который сможете прикрутить сюда. Далее вопрос только в качестве и скорости работы.</p>
  <h3 id="mL5J">Honorable mentions: DDP/iLQR и MPPI</h3>
  <p id="0lpf">Из альтернативных методов решения задачи MPC важно упомянуть две группы: DDP/iLQG и MPPI.</p>
  <p id="SHG6"><em>Differential Dynamic Programming</em> (<em>DDP</em>, не путать с Distributed Data Parallel!) и очень близкий к нему <em>Iterative Linear-Quadratic Gaussian</em> (<em>iLQG</em>) основаны на использовании <a href="https://en.wikipedia.org/wiki/Bellman_equation" target="_blank">принципа оптимальности Беллмана</a> и аппроксимации value-функции (да, здесь понятие value такое же, как в RL-е, только замените reward на cost) второго порядка. Очень хороший обзор с выводами можно найти в <a href="https://citeseerx.ist.psu.edu/document?repid=rep1&type=pdf&doi=71b552b2e058d5a6a760ba203f10f13be759edd3" target="_blank">этой статье</a>. Такие трюк позволяют нам получить решение на нашей проблемы в явном виде. Главный недостаток здесь — это отсутствие поддержки ограничений. Расширения DDP, поддерживающие ограничения, конечно, есть, но в их случаях уже редко можно получить решения в явном виде, насколько нам известно. Тем не менее, методы довольно широко используются, например, в свое время их любили использовать для походки робо-собак и робо-гуманоидов.</p>
  <p id="yhCG">А вот про <em>Model Predictive Path Integral</em> (<em>MPPI</em>) у нас точно будет отдельный пост. Во-первых, нам он видится как один из самых перспективных алгоритмов будущего, во-вторых, это просто очень красивая математическая идея. MPPI относится к <em>sampling-based</em> подходам — он позволяет решить задачу оптимизации вообще без градиентов, только за счёт хитрых манипуляций над рандомными сэмплами управлений!!!! И нет, это даже не простой перебор рандомных сэмплов!!! Главное преимущество здесь в том, что теперь у нас нет ограничений на форму динамики и стоимости (хоть фидбек из онлайн API чатгпт используй как стоимость), а также эта штука, по крайней мере, в исходном виде, позволяет эффективно использовать многопоточные вычисления. Один из самых более-менее доступных выводов MPPI можно найти в <a href="https://homes.cs.washington.edu/~bboots/files/InformationTheoreticMPC.pdf" target="_blank">этой статье</a>, но опять же, ждём отдельного поста на эту тему.</p>
  <hr />
  <p id="cZeo"></p>
  <h2 id="9hnl">Прикладное: фреймворки и пакеты</h2>
  <p id="VBKf">Захотелось потрогать MPC? <s>Чел харош! А слабо потрогать траву?</s> Тогда вот подборка библиотек и фреймворков, с которых можно начать. По факту, их, конечно, больше, но здесь мы укажем только то, с чем работали или имеем хоть какое-то представление.</p>
  <h3 id="OGH5"><a href="https://github.com/do-mpc/do-mpc" target="_blank">do-mpc</a></h3>
  <p id="clqo">Языки: Python</p>
  <p id="Kjh1">Пожалуй, лучший entry point из всех возможных вариантов. Отличается от остальных относительно подробной документацией, покрывающей в том числе теоретические аспекты, в наличии также информативные примеры. Если начинать погружаться в тему MPC, я бы рекомендовал начать именно с него.</p>
  <p id="YgjJ"><em><u>Nota bene</u></em>: do-mpc, и многие другие либы используют фреймворк <em><a href="https://web.casadi.org/" target="_blank">Casadi</a> --</em> это такой инструмент для автоматического дифференцирования. По сути, задавая динамики и стоимости в do-mpc, вы создаёте выражения на <em>Casadi</em>, по которым потом явно находятся выражения для градиентов по принципу графа вычислений. Это очень похоже на то, как в своё время работал старый товарищ <em>TensorFlow</em>, с, имхо, главной вытекающей проблемой: фиг получится увидеть какие-либо промежуточные значения для выражений (в отличие от <em>PyTorch</em>). Также <em>Casadi</em> использует column-major репрезентацию для матриц, в отличие от row-major в <em>NumPy</em>, к которому, скорее всего, привыкло большинство читателей. Так что поначалу работать с этой штукой будет больно, но такова жизнь. Мы вообще пришли к юнит-тестам для <em>Casadi</em>-выражений, втупую сравнивая их конечные результаты с более понятными аналогами на <em>NumPy</em>.</p>
  <h3 id="z0e1"><a href="https://www.embotech.com/softwareproducts/forcespro/overview/" target="_blank">ForcesPro</a></h3>
  <p id="YuBG">Языки: C++, Python</p>
  <p id="hhcI">Коммерческий фреймворк от выходцев из ETH Zurich, хотя студенческие лицензии выдают без проблем, даже в наше непростое время. Позиционируется как решение с фокусом на продакшн, хотя и в рисерческих статях его можно встретить довольно часто. Разработчики утверждают, что их солверы самые быстрые на рынке. Документация есть, но, скажем так, порог вхождения в этой штуке очень высокий. Так что новичкам я бы не рекомендовал ForcesPro. А вот если нужно добиться максимальной производительности или в целом хочется потыкать индустриальные решения — то велком.</p>
  <h3 id="X5CG"><a href="https://acado.github.io/" target="_blank">ACADO</a></h3>
  <p id="Rhmz">Языки: C++, Matlab</p>
  <p id="gK45">Довольно старый оптимизационный тулкит, из всего рассмотренного, наверное, лежит ближе к ForcesPro, но с открытым кодом. Не могу особо много что-то про него сказать, видел, что его юзали в статьях от топ лаб из ETH Zurich, но по сайту и документации не понятно, жив он вообще или нет. Но решили на всякий случай добавить его в наш список.</p>
  <h3 id="l1sK"><a href="https://github.com/acados/acados" target="_blank">acado</a></h3>
  <p id="cCGA">Языки: C, Python, Matlab, Octave</p>
  <p id="EsS8">Наследник ACADO, но, в отличие от него, жив и развивается. Есть документация, примеров в репозитории много. Сами с ним не работали, но слышали о нем хорошие отзывы от коллег. В списке кандидатов на потыкать, наверное, на втором месте после do-mpc.</p>
  <h3 id="B1Qu"><a href="https://www.cvxpy.org/" target="_blank">cvxpy</a></h3>
  <p id="YAjt">Языки: Python</p>
  <p id="066k">Известная среди оптимизаторов библиотека от лабы упомянутого выше С. Бойда. Это инструмент для выпуклой оптимизации общего назначения, поэтому к MPC-фреймворкам она относится постольку-поскольку, однако, видел не одно её применение к MPC и управлению в целом, например, <a href="https://github.com/AtsushiSakai/PythonRobotics" target="_blank">здесь</a>.</p>
  <hr />
  <p id="BYUM"></p>
  <h2 id="Ao4M">MPC в эпоху Deep Learning</h2>
  <figure id="lZjJ" class="m_custom" data-caption-align="center">
    <img src="https://img2.teletype.in/files/11/5c/115c5ef3-16b3-4b66-924d-f27ba05332d5.png" width="520" />
    <figcaption>Некто Yann Lecun популяризирует MPC</figcaption>
  </figure>
  <p id="64ee">Прошаренные читатели могли подумать, что динамика в MPC очень похожа на... те самые <a href="https://arxiv.org/abs/1803.10122" target="_blank">World Models</a> от Шмидхубера! Ну или правильнее сказать, что world models похожи на динамику.</p>
  <p id="rixH">Действительно, обучаемые модели динамики, да и обучаемые стоимости — идея не новая. Даже <a href="https://homes.cs.washington.edu/~bboots/files/InformationTheoreticMPC.pdf" target="_blank">в статье про MPPI</a>, о которой я упоминал выше, и, по факту, довольно старой, контрибушн заключался в использовании нейросети в качестве модели динамики. В наши дни эти идеи обрели новую жизнь, в первую очередь благодаря появлению разных foundation-моделей и больших world models (из недавнего, взять те же <a href="https://arxiv.org/abs/2309.17080" target="_blank">GAIA-1</a> и <a href="https://www.nvidia.com/en-us/ai/cosmos/" target="_blank">Nvidia Cosmos</a>, хоть и их практическое использование из-за большого размера и ограниченных condition-ов на управления остается под вопросом).</p>
  <p id="rUmE">За идею MPC с обучаемой моделью динамики активно топит Ян Лекун. Из его недавних работ по сабжу стоит отметить <a href="https://dino-wm.github.io/" target="_blank">DINO-WM</a> и <a href="https://arxiv.org/abs/2412.03572" target="_blank">Navigation World Models</a>. Из менее известных исследователей в этой области хотелось бы отметить господина  <a href="https://scholar.google.com/citations?user=r4hMllQAAAAJ&hl=en" target="_blank">Tim Salzmann</a>, в частности, его проект <a href="https://github.com/Tim-Salzmann/l4casadi" target="_blank">l4casadi</a>, посвящённый женитьбе <em>PyTorch</em>-моделей и солверов на основе упомянутого выше <em>Casadi</em>. Также очень важные работы, на которые стоит обратить внимание — <a href="https://www.nicklashansen.com/td-mpc/" target="_blank">TD-MPC</a> и <a href="https://www.tdmpc2.com/" target="_blank">TD-MPC2</a> от челиков из UC San Diego. Они предложили подход на основе model-based planning в в стиле MPC для решения онлайн и офлайн RL-ных задач и достигли в них очень крутых метрик.</p>
  <hr />
  <p id="7sMH"></p>
  <h2 id="V6ca">А мы что?</h2>
  <figure id="AhZ8" class="m_column" data-caption-align="center">
    <img src="https://img4.teletype.in/files/78/6d/786de8cd-df67-4c40-9d83-def87a427950.png" width="1267" />
    <figcaption>Робот, который смог. Смотрим <a href="https://www.youtube.com/watch?v=bx0N9UuKlb4" target="_blank">оригинальное видео</a>.</figcaption>
  </figure>
  <p id="RUMH">Мы пришли к MPC, решая задачу <em>социальной навигации робота с учётом неопределённости</em>. Роботу нужно доехать из точки A в точку B в среде, где ходят люди, чьё движение мы можем предсказать и получить оценку неопределённости этого предсказания в виде матрицы ковариации. Рисёрч посвящён дизайну MPC, позволяющему эффективно учесть эту неопределённость. С подробностями можно ознакомиться <a href="https://sites.skoltech.ru/app/data/uploads/sites/50/2024/11/2024-ras-socnav-extended.pdf" target="_blank">в нашей публикации</a>. В общем, что-то сделали, что-то получилось.</p>
  <p id="dAr1">Сейчас нас сильно интересует свадьба learnable-моделей и sampling-based подходов для MPC, в частности, свзяь диффузионных моделей и MPPI. Работа идёт, так что stay tuned!</p>
  <hr />
  <p id="tof1"></p>
  <p id="fmdz">А на этом всё. Подписывайтесь, ставьте лайки, пишите комментарии, делайте рисёрч, и до новых встреч!</p>

]]></content:encoded></item></channel></rss>