diff --git a/blog/2024-01-25-2nd-3rd-year-summary.md b/blog/2024-01-25-2nd-3rd-year-summary.md new file mode 100644 index 0000000..c0acb8a --- /dev/null +++ b/blog/2024-01-25-2nd-3rd-year-summary.md @@ -0,0 +1,216 @@ +--- +slug: 2nd-year-summary +title: Итоги 2023 года +author: Игорь Брылёв +author_title: Team Lead @ Robossembler +author_url: https://gitlab.com/movefasta +author_image_url: https://gitlab.com/uploads/-/system/user/avatar/4249760/avatar.png +tags: [robossembler, milestone, summary] +--- + +[Видео-версия](https://youtu.be/vWpaZ8DRftI) + +В этом обзоре мы расскажем о разработках в рамках проекта Робосборщик в 2022-2023 годах. + +## Аппаратное обеспечение + +### Robossembler Arm и его двигатели + +Самая главная аппаратная разработка этих полутора лет — рука Робосборщика или [Robossembler Arm](https://gitlab.com/robossembler/roboarm-diy-version). + +![Alt text](img/2022-2023-summary-slides/image.png) + +Это шести-осевой робот манипулятор, который существенно изменился - сокращены габаритные размеры, вес, снижено общее количество деталей и крепежа. + +![Alt text](img/2022-2023-summary-slides/image-12.png) + +Всего в конструкции теперь 66 деталей и 32 соединителя, которые достаточно крупные, чтобы вставлять их вручную, без помощи вспомогательного инструмента, или даже автоматически - разработанным нами захватным устройством. Все детали содержат специальные пазы для удобства захвата. + +![Alt text](img/2022-2023-summary-slides/image-2.png) + +Конструкция робота предполагает возможность гибко менять количество степеней свободы под задачу. + +![Alt text](img/2022-2023-summary-slides/image-3.png) + +Одной из ключевых особенностей робота является [симметричный стыковочный интерфейс](https://gitlab.com/robossembler/arm-tools/connection-tool), который позволяет роботу перемещаться между совместимыми с ним посадочными местами и, тем самым, расширять доступную для работы зону. + +![Alt text](img/2022-2023-summary-slides/image-4.png) + +Стыковочный интерфейс претерпел уже 8 модификаций, прошёл первичные испытания на прочность соединения и готов к интеграционным испытаниям с остальной частью робота. + +![Alt text](img/2022-2023-summary-slides/image-5.png) + +Мы его упростили, облегчили, при этом сохранив его достаточно жёстким; конструкция препятствует повреждению контактов при ручной установке. + +Ключевым узлом робота является разработанный нами с нуля серводвигатель. На данный момент изготовлен его прототип вместе с контроллерами и ведётся разработка программного обеспечения для управления. + +![Alt text](img/2022-2023-summary-slides/image-6.png) + +Изначально мы разработали две модификации серводвигателя - один для создания крутящего момента на звене манипулятора, второй - для монтажа рабочего органа или монтажа самого манипулятора к опорному каркасу, но со временем заменили их на один универсальный контроллер для всех версий привода, что позволит ещё больше сократить номенклатуру компонентов и, соответственно, уменьшить себестоимость изделия. + +![Alt text](img/2022-2023-summary-slides/image-7.png) +![Alt text](img/2022-2023-summary-slides/image-8.png) + +Изменения в серводвигателях коснулись в основном системы вентиляции обмоток и подшипникового узла, который на данный момент может быть использован как радиально-упорный подшипник скольжения, изготовленный методом печати, так и на его место может быть установлен стандартный набор из двух подшипников качения. Улучшено крепление магнитов к ротору с целью уменьшения магнитного зазора. На данный момент испытано семь вариантов печатных роторов и найден оптимальный механизм крепления магнитов. + +![Alt text](img/2022-2023-summary-slides/image-9.png) + +Также разработана заглушка для стыковочного интерфейса, позволяющая подключить манипулятор напрямую, без опорного каркаса, если в нём нет необходимости. + +![Alt text](img/2022-2023-summary-slides/image-10.png) + +Разработан и изготовлен прототип датчика угла поворота на выходе редуктора для того, чтобы понимать реальное перемещение звена, что позволит сделать робота в дальнейшем коллаборативным. + +![Alt text](img/2022-2023-summary-slides/image-11.png) + +Датчик реализован на кондуктометрическом принципе и обладает чрезвычайно низкой себестоимостью. + +### Опорный каркас + +[Опорный каркас](https://gitlab.com/robossembler/cnc/cubic-modular-workspace), который мы показывали в прошлый раз, тоже претерпел большие изменения. Мы убрали дополнительные соединители и теперь весь каркас состоит из практически одних и тех же универсальных сборочных единиц - опорных пластин. Пластины могут быть двух типов. + +![Alt text](img/2022-2023-summary-slides/image-13.png) + +Первый тип — это пластины с симметричным стыковочным интерфейсом. К ним подключается активное оборудование - роботы или рабочие органы. Другие пластины - пассивные, в них вместо стыковочного интерфейса установлена заглушка. Они выполняют функции передатчиков сигналов и обеспечивают жесткость всей конструкции. + +![Alt text](img/2022-2023-summary-slides/image-14.png) + +![Alt text](img/2022-2023-summary-slides/image-15.png) + +### Источик питания + +Также разработан совместимый с опорным каркасом [источник питания](https://gitlab.com/robossembler/arm-tools/power-supply-box) от сети переменного тока. + +### Оснастка для производства + +Мы стремимся сделать робота максимально простым в изготовлении, поэтому помимо конструктивных решений для удобства сборки, разрабатываем и вспомогательную оснастку для автоматизации производства. Мы активно разрабатываем [станок для намотки катушек индуктивности двигателя](https://gitlab.com/robossembler/cnc/motor-wire-winder). + +![winder](img/2022-2023-summary-slides/image-16.png) + +Опробованы два варианта намоточного станка - ручной и полуавтоматический, сейчас разрабатывается третий вариант. Станок позволит нам обеспечить серийное производство моторов и сервоприводов. Как и во всех остальных случаях, конструкторская документация на станок будет открыта. + +### Приспособление для захвата + +Существенно изменена конструкция [приспособления для захвата](https://gitlab.com/robossembler/arm-tools/grip-tool), в котором теперь используются те же самые узлы, что и в манипуляторе - двигатель с контроллером, стыковочный интерфейс. + +![robossembler gripper](img/2022-2023-summary-slides/image-17.png) + +В новой версии улучшены передаточные механизмы, добавлены редукторы, изменён корпус. Новая конструкция позволяет вращать пальцы на угол 360 градусов, а новая форма пальцев - "захватывать" объекты внешней стороной. + +## Программные решения + +### Robonomics Bridge + +В 2022 году нашей командой разработан [мост между Робономикой и ROS2](https://gitlab.com/robossembler/robonomics_bridge), который решает проблему взаимодействия различных кибер-физических систем через публичную сеть интернет. + +![Robonomics DDS Bridge](img/2022-2023-summary-slides/image-18.png) + +Фреймворк ROS2 основан на протоколе под названием DDS или Data Distrubution Service, который обеспечивает взаимодействие узлов ROS друг с другом. Этот протокол ориентирован на работу в локальной сети, в нём заложены механизмы автоматического обнаружения устройств и очень интенсивное взаимодействие между ними. Однако, в случах когда требуется обеспечить работу отдельных узлов ROS с каким-то внешним сервисом или системой, то возникает проблема безопасности - получив доступ к одному узлу, сторонний сервис получает доступ и ко всем остальным - он может полностью прослушивать весь внутренний трафик DDS. + +Чтобы решить проблему доступа узлов друг к другу можно использовать пакет ROS2 Security, который настраивает политики доступа к данным. Однако, этот подход обладает большим минусом - весь трафик в системе шифруется, что может сказаться на быстродействии при той нагрузке на сеть, которую создаёт DDS. Другое решение заключается в создании так называемых шлюзов, которые публикуют нужные данные, сохраняя всё остальное приватным. Как правило, это достигается при помощи тоннелей VPN или SSH между взаимодействующими узлами. Такой подход применён в таких проектах как Husarnet, Integration Service и Zenoh, но и он не лишён недостатков. В этом случае вам нужно создать защищённый канал связи, который жёстко привязан к IP-адресу или доменному имени контрагента, а они имеют свойство меняться, блокироваться и подвергаться атакам. + +Проблему можно обойти с помощью технологий p2p, на которых построен блокчейн [Robonomics](https://robonomics.network/). По сути блокчейн может являться в этом случае очень защищённой таблицей маршрутизации, адресами контрагентов в которой являются публичные ключи узлов. Вам нужен локальный узел блокчейна и знание о том какой публичный ключ у вашего контрагента, чтобы далее не зависеть от системы DNS и блокировок IP-адресов. Библиотека libp2p, на которой построен блокчейн Робономики, может использовать разные транспортные протоколы для доставки сообщений. Однако, это не все возможности, которые может дать блокчейн. Помимо простого коммутирования потоков сообщений, в блокчейне в будущем может быть реализована и более сложная логика на смарт-контрактах, подразумевающая взаимодействие большого количества агентов. Например, принятие решение о запуске производства какого-то продукта может быть привязано к голосованию в организации потенциальных потребителей этого продукта, с учётом экономической целесообразности. Сейчас решение о запуске какого-либо производства принимается с помощью механизма инвестиций, когда инвесторы, получив информацию о потенциальном спросе, могут приобретать акции отдельных компаний, которые этот спрос смогут в будущем удовлетворить. То есть инвесторы являются лишним передаточным звеном между потребителями и производителями. Если потребители смогут более активно участвовать в разработке и ценообразовании новых продуктов, то мы сможем в перспективе перейти на такую схему работы, когда производство будет автоматически перестраиваться на удовлетворение спроса по данным, предоставляемым в блокчейн потребителями. + +### Robossembler Framework + +Основной разработкой проекта по-прежнему является Фреймворк Робосборщик, в котором можно выделить два основных блока - Offline и Online. + +![robossembler framework architecture](img/2022-2023-summary-slides/image-19.png) + +[Оффлайн-часть](https://gitlab.com/robossembler/framework) связана с подготовкой моделей для симуляции, машинному обучению, взаимодействию с системами контроля версий и непрерывной интеграции. По сути она представляет собой конвейер подготовки трёхмерных моделей и инструменты анализа статической структуры изделия. Одним из важнейших узлов в этом конвейере является разработанный нами планировщик сборки или планировщик последовательности сборки — Assembly Sequence Planner. + +![Assembly Sequence Planner](img/2022-2023-summary-slides/image-20.png) + +Этот программный компонент анализирует сборку в формате STEP, проверяет наличие дефектов в геометрии, которые делают проблематичным подготовку моделей в формат пригодный для симуляции. Также он проверяет требуемые допуски между деталями и строит так называемую матрицу смежности, которая содержит полную информацию о сопряжениях между деталями. Чтобы построить всю последовательность сборки. Дальше сформированные подсборки проверяются на стабильность в гравитационном поле и алгоритм генерирует подходящие варианты для отладки в симуляции. В 2023 году мы дополнили нашу [коллекцию исследований](https://robossembler.org/docs/technologies/ASP-overview) по генерации последовательности сборки. Найдены новые исследователи, работающие в направлении автоматизации планирования сборки - в частности, доктор технических наук Божко Аркадий Николаевич, преподаватель из Бауманского университета, с достаточно оригинальным подходом к решению задачи через использование гипер-графов, который мы планируем поддержать в нашей программной части. + +Далее работу принимает часть конвейера, отвечающая за компьютерную графику. + +![Alt text](img/2022-2023-summary-slides/image-21.png) + +Детали, входящие в сборки, преобразовываются в так называемые ассеты компьютерной графики разной степени полигональности. Для преобразования ассетов используется свободный редактор компьютерной графики Blender и разработанный нами аддон. Аддон формирует три типа ассетов. Высоко-полигональные модели содержат много деталей и могут использоваться для качественной визуализации. Для симуляции требуется обратное - чтобы количество полигонов было как можно меньшим. Поэтому производится оптимизация полигональной сети и в некоторых случаях склейка отдельных компонентов в монолитный кусок. Также аддон, используя информацию об материалах деталей из CAD, генерирует так называемые физически реалистичные текстуры, производит так называемое запекание текстур. Чтобы познакомиться с конвейером компьютерной графики подробнее, рекомендую прочесть статью на нашем сайте. + +Онлайн-часть или рантайм [Robossembler ROS2](https://gitlab.com/robossembler/robossembler-ros2) непосредственно выполняется на железе в момент работы робота. За прошедший год мы перевели проект с ROS2 Foxy, поддержка которой была прекращена в 2023 году, на ROS 2 Humble. ROS2 Humble является так называемым долгоживущим релизом или LTS, который будет поддерживаться еще три года. + +### Архитектура runtime + +В рантайме у нас реализована архитектура из нескольких разных уровней планирования. + +![Alt text](img/2022-2023-summary-slides/image-23.png) + +Самый верхний уровень стека - уровень миссии. Там происходит по сути планирование производственных заданий, подобно ERP-системе, где определяется сколько чего мы производим. Далее следует уровень планирования задач - разбиение процесса сборки отдельного изделия на кванты - логические операции, которые, в свою очередь, опираются на уровень поведения, где работают соответствующие задаче комбинации навыков в виде деревьев поведения. Это поведение стоится на базе атомарных навыков, например, движение к точке, движение по траектории, различные типы восприятия изображений, из которых собирается более сложное поведение. Атомарные навыки работают с аппаратным слоем, то есть с железом, через драйвера устройств. Там решается как именно мы получаем данные, через какие интерфейсы, топики или сервисы, как сигналы преобразовываем и куда передаем. + +### Деревья поведения и управление жизненным циклом навыков + +В основе рантайма у нас лежат деревья поведения. Изначально деревья поведения появились в сфере разработки компьютерных игр для того, чтобы программировать персонажей NPC. Однако, со временем данный подход был предложен также для использования и в робототехнике, в частности Петером Оргеном, который популяризирует и всячески пытается приладить к задачам робототехники. Очень хорошо данный подход себя зарекомендовал себя в области мобильной робототехники - это разнообразная навигация по помещениям. В основе популярнейшего пакета ROS Navigation лежат именно деревья поведения. Мы увидели преимущества этого подхода прежде всего в модульности. Мы заранее не знаем какие именно методы подойдут лучше всего для тех или иных задач, поэтому от фреймворка требуется обеспечить изменяемость - чтобы не надо было менять всю остальную программу при изменениях в отдельном навыке или дереве поведения. Также этому подходу присуща и нужная для производства отказоустойчивость. + +![Alt text](img/2022-2023-summary-slides/image-24.png) + +В проекте Robossembler ROS2 разработан BT-executor, в котором реализованы первые узлы или навыки - в частности, движения к точке пространства через решение обратной задачи кинематики, обнаружение объектов в сцене - Object Detection, а также оценка 6D позиции объектов - Pose Estimation для распознавания положения деталей в пространстве перед захватом и сборкой. + +Помимо деревьев поведения, нами также внедрён один из важных концептов, появившихся в ROS2 под названием Lifecycle Nodes или Managed Nodes. Это такой тип узлов ROS2, который позволяет их включать, выключать, конфигурировать, когда надо убирать, добавлять. Это делает удобным подмену, конфигурацию и запуск отдельных навыков в ходе исполнения программы. + +![Alt text](img/2022-2023-summary-slides/image-25.png) + +Например, навык Object Detection у нас используется в нескольких вариантах. В ходе работы программы часто возникает ситуация, когда нужно переключиться на другую реализацию навыка, если текущая не сработала. Разумеется, мы не можем держать всех их в памяти одновременно. Особенно это актуально когда для работы навыка требуется много ресурсов, что часто бывает с нейронными сетями. Здесь на помощь приходят Lifecycle Nodes. Почти все имеющиеся на данный момент навыки в фреймворке реализованы в виде Lifecycle Nodes. + +### Управление виртуальными средами + +Одним из нововведений, которые мы сделали в фреймворке, является Environment Manager или менеджер управления виртуальными средами. Это модуль, который соединяет рантайм с разнообразными средами - как виртуальными, так и не очень. Виртуальной средой может быть игровой движок или симулятор. + +![Alt text](img/2022-2023-summary-slides/image-26.png) + +Environment Manager реализует абстрактный интерфейс, который позволяет соединять рантайм, его драйвера с виртуальной средой. Например, мы можем получать изображение от реальной камеры через какой-то топик, а в этот же топик Environment Manager может нам в дальнейшем, когда мы переключимся на режим симуляции, передавать данные не с камеры, а с симулятора. В этом случае сама программа останется прежней, ничего переписывать не надо. В качестве первой среды мы выбрали симулятор Gazebo, архитектура которого предусматривает разбиение на отдельные компоненты, которые реализовывают физику, рендеринг и многое другое, что делает удобными применение нашего подхода. По нашей задумке Environment Manager должен оказать большое влияние на сам подход к разработке управляющих программ роботов, делая более простым и доступным обучение с подкреплением. + +## Прикладные решения + +### Растениеводство + +Продвигается и разработка прикладных решений на базе наших модулей. Одним из таких решений является роботизированный комплекс для размножения растений методом микроклонирования, который разрабатывается вместе с нашими коллегами из компании [Фито Слим](https://agrostab.ru/). + +![Alt text](img/2022-2023-summary-slides/image-27.png) + +На данный момент микроклонирование представляет собой комплекс сложных операций, каждая из которых требует большого объёма рутинного ручного труда, а качество результата очень чувствительно к чистоте и стерильности помещений. Любой случайно привнесенный вирус может означать гибель всех организмов на той стадии, когда они еще очень слабы и не могут этому вирусу сопротивляться. Роботы потенциально могут решить эти проблемы. В рамках концептуального проектирования разработано специальное приспособление для манипулирования растениями в пробирках. + +![Alt text](img/2022-2023-summary-slides/image-28.png) + +Форма нашего робота хорошо подошла для оперировавания в таких стеснённых пространствах как ламинатор. + +В рамках смежного направления также разработана концепция использования манипуляторов для черенкования, не столь требовательная к самим помещениям, но требовательная к стерильности инструментов. Мы разработали эскиз линии или аппаратный комплекс для отладки исследовательских программ черенкования. + +![Alt text](img/2022-2023-summary-slides/image-29.png) + +Комплекс включает в себя камеры для разносторонней съёмки процесса, чтобы собирать данные и в дальнейшем использовать их для научной и инженерной работы. + +![Alt text](img/2022-2023-summary-slides/image-30.png) + +На базе обоих решений можно создать научно-исследовательский комплекс, которые позволит проводить эксперименты по селекции и отлаживать весь цикл выращивания от микроклонирования до получения саженцев пригодных к открытому грунту. + +![Alt text](img/2022-2023-summary-slides/image-31.png) + +## Вместо заключения + +В заключение хотелось бы отметить, что мы кардинально изменили наш статус - открыли предприятие. Теперь Робосборщик — это не только кружок или клуб единомышленников, а полноценная организация с юридическим статусом. Организация оформлена после победы в конкурсе соискателей финансирования для открытых проектов библиотек программного обеспечения под названием «Код цифровые технологии», организованного Фондом содействия инновациям. + +В 2024 году мы планируем завершить разработку программного обеспечения контроллера серводвигателя, запустить манипулятор и испытать его вместе с нашим рантайм модулем. Параллельно этой работе будет вестись и проект фреймворка для отладки программ через симуляцию. + +Подписывайтесь на наши каналы в [Telegram](https://t.me/robossembler_ru) и [Youtube](https://www.youtube.com/channel/UC32Xgbsw9XQlN1QH59pe8HA). Если у Вас есть идеи как можно помочь проекту, то Вы можете непосредственно зайти в [GitLab](https://gitlab.com/robossembler), выбрать нужный подпроект и просто написать там issue, где поделиться своими мыслями. + +## Команда + +В работе участвовали: + +- Игорь Брылёв +- Станислав Сгонов +- Алексей Топтун +- Александр Оликевич +- Роман Андрианов +- Илья Ураев +- Марк Вольтов +- Илья Курочкин +- Никита Молканов +- Андрей Ермаков +- Вячеслав Македонский +- Александр Шевеленко +- Иван Ершов +- Михаил Якушкин +- Степан Воронов \ No newline at end of file diff --git a/blog/img/2022-2023-summary-slides/image-1.png b/blog/img/2022-2023-summary-slides/image-1.png new file mode 100644 index 0000000..7b66fd3 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-1.png differ diff --git a/blog/img/2022-2023-summary-slides/image-10.png b/blog/img/2022-2023-summary-slides/image-10.png new file mode 100644 index 0000000..a408832 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-10.png differ diff --git a/blog/img/2022-2023-summary-slides/image-11.png b/blog/img/2022-2023-summary-slides/image-11.png new file mode 100644 index 0000000..489f1fc Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-11.png differ diff --git a/blog/img/2022-2023-summary-slides/image-12.png b/blog/img/2022-2023-summary-slides/image-12.png new file mode 100644 index 0000000..48cc39b Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-12.png differ diff --git a/blog/img/2022-2023-summary-slides/image-13.png b/blog/img/2022-2023-summary-slides/image-13.png new file mode 100644 index 0000000..1cfb2ea Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-13.png differ diff --git a/blog/img/2022-2023-summary-slides/image-14.png b/blog/img/2022-2023-summary-slides/image-14.png new file mode 100644 index 0000000..846ccc2 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-14.png differ diff --git a/blog/img/2022-2023-summary-slides/image-15.png b/blog/img/2022-2023-summary-slides/image-15.png new file mode 100644 index 0000000..8cc0703 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-15.png differ diff --git a/blog/img/2022-2023-summary-slides/image-16.png b/blog/img/2022-2023-summary-slides/image-16.png new file mode 100644 index 0000000..d2c37bd Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-16.png differ diff --git a/blog/img/2022-2023-summary-slides/image-17.png b/blog/img/2022-2023-summary-slides/image-17.png new file mode 100644 index 0000000..6a423e7 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-17.png differ diff --git a/blog/img/2022-2023-summary-slides/image-18.png b/blog/img/2022-2023-summary-slides/image-18.png new file mode 100644 index 0000000..d252d35 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-18.png differ diff --git a/blog/img/2022-2023-summary-slides/image-19.png b/blog/img/2022-2023-summary-slides/image-19.png new file mode 100644 index 0000000..a71aca3 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-19.png differ diff --git a/blog/img/2022-2023-summary-slides/image-2.png b/blog/img/2022-2023-summary-slides/image-2.png new file mode 100644 index 0000000..3e19d86 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-2.png differ diff --git a/blog/img/2022-2023-summary-slides/image-20.png b/blog/img/2022-2023-summary-slides/image-20.png new file mode 100644 index 0000000..41f0201 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-20.png differ diff --git a/blog/img/2022-2023-summary-slides/image-21.png b/blog/img/2022-2023-summary-slides/image-21.png new file mode 100644 index 0000000..5994fcb Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-21.png differ diff --git a/blog/img/2022-2023-summary-slides/image-22.png b/blog/img/2022-2023-summary-slides/image-22.png new file mode 100644 index 0000000..5994fcb Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-22.png differ diff --git a/blog/img/2022-2023-summary-slides/image-23.png b/blog/img/2022-2023-summary-slides/image-23.png new file mode 100644 index 0000000..8a4e60b Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-23.png differ diff --git a/blog/img/2022-2023-summary-slides/image-24.png b/blog/img/2022-2023-summary-slides/image-24.png new file mode 100644 index 0000000..08dfd15 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-24.png differ diff --git a/blog/img/2022-2023-summary-slides/image-25.png b/blog/img/2022-2023-summary-slides/image-25.png new file mode 100644 index 0000000..966162d Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-25.png differ diff --git a/blog/img/2022-2023-summary-slides/image-26.png b/blog/img/2022-2023-summary-slides/image-26.png new file mode 100644 index 0000000..b0bfb79 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-26.png differ diff --git a/blog/img/2022-2023-summary-slides/image-27.png b/blog/img/2022-2023-summary-slides/image-27.png new file mode 100644 index 0000000..0a8cc58 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-27.png differ diff --git a/blog/img/2022-2023-summary-slides/image-28.png b/blog/img/2022-2023-summary-slides/image-28.png new file mode 100644 index 0000000..eda24cd Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-28.png differ diff --git a/blog/img/2022-2023-summary-slides/image-29.png b/blog/img/2022-2023-summary-slides/image-29.png new file mode 100644 index 0000000..eda24cd Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-29.png differ diff --git a/blog/img/2022-2023-summary-slides/image-3.png b/blog/img/2022-2023-summary-slides/image-3.png new file mode 100644 index 0000000..fb7958d Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-3.png differ diff --git a/blog/img/2022-2023-summary-slides/image-30.png b/blog/img/2022-2023-summary-slides/image-30.png new file mode 100644 index 0000000..92a01db Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-30.png differ diff --git a/blog/img/2022-2023-summary-slides/image-31.png b/blog/img/2022-2023-summary-slides/image-31.png new file mode 100644 index 0000000..749de44 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-31.png differ diff --git a/blog/img/2022-2023-summary-slides/image-4.png b/blog/img/2022-2023-summary-slides/image-4.png new file mode 100644 index 0000000..ae5e2a7 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-4.png differ diff --git a/blog/img/2022-2023-summary-slides/image-5.png b/blog/img/2022-2023-summary-slides/image-5.png new file mode 100644 index 0000000..16c1fe3 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-5.png differ diff --git a/blog/img/2022-2023-summary-slides/image-6.png b/blog/img/2022-2023-summary-slides/image-6.png new file mode 100644 index 0000000..9fe2c59 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-6.png differ diff --git a/blog/img/2022-2023-summary-slides/image-7.png b/blog/img/2022-2023-summary-slides/image-7.png new file mode 100644 index 0000000..9df2330 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-7.png differ diff --git a/blog/img/2022-2023-summary-slides/image-8.png b/blog/img/2022-2023-summary-slides/image-8.png new file mode 100644 index 0000000..cd8b409 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-8.png differ diff --git a/blog/img/2022-2023-summary-slides/image-9.png b/blog/img/2022-2023-summary-slides/image-9.png new file mode 100644 index 0000000..eaac26c Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image-9.png differ diff --git a/blog/img/2022-2023-summary-slides/image.png b/blog/img/2022-2023-summary-slides/image.png new file mode 100644 index 0000000..af93ea7 Binary files /dev/null and b/blog/img/2022-2023-summary-slides/image.png differ