0: Так, добрый день. Участники конкурса студенческий трек роботы в городе. Сейчас ожидаем остальных участников. У нас ещё есть порядка 5 минут. Скажите, меня хорошо слышно? Видно?
1: Да, здравствуйте. Вас прекрасно слышно. Хотелось бы услышать фидбэк. Нас нормально слышно? Да, все хорошо. Угу. Мы команда плюс настроение. Отлично.
2: Так, ну сейчас побольше команд подключится к началу. Я расскажу, как будет проходить полуфинал, в каком порядке нужно будет показывать решение и презентацию.
3: Вот, ждём ещё, давайте 5 минут.
4: Итак, давайте я представлюсь и представлю членов жюри, которые сегодня будут оценивать полуфинал конкурса. Меня зовут Разорвин Андрей Дмитриевич. Я являюсь руководителем конкурса роботы в городе.
5: Сегодня в жюри у нас Башков Константин Евгеньевич и Макаревич Дмитрий Олегович, сотрудники кафедры радиотехнических систем. Вот, и они сегодня будут вас оценивать. Давайте расскажу про
6: Про порядок проведения сейчас продемонстрирую экран.
7: Так.
8: Должно быть видно так, задание конкурса. Соответственно, у нас роботы должны проехать так называемую эстафету. Задаётся. Начал
9: Положение каждого робота и конечная точка маршрута.
10: Эти начальные точки и финишная точка будет задаваться в среде моделирования в полуфинале, и код участников будет запускаться членами жюри.
11: И, ну, соответственно, запускаться на 1 компьютере будут вот.
12: После этого запускается программа участников, роботы выполняют движения, записывается лок файл и 1 из членов жюри, точнее, Константин Евгеньевич.
13: Будет проверять и показывать баллы, которые выдаёт система. Задача роботов вместе проехать по оптимальному маршруту. То есть робот 1 едет до робота 2, так далее и 3 робот.
14: Финиширует, смотрится длина всего маршрута и сравнивается с оптимальной длиной. Ну, естественно, проверяется, что по всем целевым точкам роботы проехали внешний вид.
15: Polygoneer у нас не изменился, то есть он выглядит следующим образом. Есть 15 точек, расстояние между точками указано в метрах, вот, но в симуляторе также там есть ещё
16: Пересчёт пиксели. Вот, соответственно, врезаться в препятствия, которые ограничены нашим полигоном, нельзя за это будут начисляться штрафные баллы за 1 столкновение с препятствием.
17: - 10% от максимального количества баллов, максимальное количество баллов за проезд, который можно получить, это 7 баллов.
18: Также после выступления, точнее после проверки решения команды будет
19: Заслушиваться. Презентация решения от команды, то есть или капитан команды, или из 1 из участников подключает демонстрацию экрана 5 минут на выступление расска.
20: Сказать своё решение жюри и 3 минуты на вопросы. Вот после этого выставляется ещё 3 балла максимум. Вот суммарное количество баллов 10. Вот после этого все заносится в протокол и
21: После сегодняшней конференции будет объявлен список команд, кто проходит у нас в финал. Вот есть ли сейчас какие-то вопросы по проведению
22: Если нет, то давайте двигаться дальше. Есть вопрос. Да, разрешите прав демонстрации у нас вот кнопочка-ка говорит, я так полагаю, оно уже перед самой демонстрацией будет выдаваться, да?
23: Не очень хорошо слышно было. Можете, да, ещё раз? У нас кнопочка демонстрации сейчас горит серым, я так понимаю, права на демонстрацию уже перед ответом выдаются. Да, да, да. То есть это у меня сейчас
24: Демонстрация включена, я сейчас её завершаю и
25: Буду выдавать, уже называть команду и будете уже включать демонстрацию. Давайте порядок будет следующий. То есть в начале я называю команду, представитель её.
26: Соответственно, отвечает, включает демонстрацию с презентацией, и после этого Константин Евгеньевич запускает программу для того, чтобы показать ваше решение, после этого задают.
27: Вопросы уже по презентации и по, ну, по результату проезда.
28: Итак, давайте тогда начнём. 1 команда у нас из Пётр гу петербургского государственного университета плюс.
29: Строение команда здесь.
30: Да, да, да, мы здесь сейчас. Угу. Так, тогда можете как, как подготовите все, можете запускать демонстрацию с презентацией и у вас 5 минут.
31: Напомню, что все участники скинули заранее код их программ, то есть они уже все есть у организаторов, и мы будем проверять тот код, который час.
32: Скинули вчера.
33: Инна, здравствуйте, у нас тут проблема небольшая возникла с тем, что у нас на аппарате linux и яндекс ипортировал под линукс, получается телемост, и когда мы включили под эмулятором windows.
34: Телемост, он, собственно говоря, вылетел просто когда мы включили демонстрацию, сейчас мы пробуем с браузерной версии. Если получится, то получится. Если не получится, то надо будет нас пропустить, чтобы мы разобрались.
35: Хорошо, ну если что, вы скидывали презентацию. Вчера можно будет открыть её с нашего, да, мы скидывали презентацию, если можно открыть презентацию, и у вас
36: Показать её, то это было бы вообще замечательно. Есть такая возможность. Давайте, давайте так, чтобы не задерживаться, тогда попрошу открыть презентацию команды плюс настроение. Вот. И соответственно,
37: Вы рассказываете, просите перелистывать слайды.
38: Так, уважаемые участники коллеги, запустилась ли демонстрация?
39: Да, да, демонстрация есть. Спасибо. Отлично.
40: Тогда можете начинать. Угу. Понял. Спасибо. Итак, здравствуйте. Уважаемые члены жюри, участники состязаний. Мы команда плюс настроение. Представляем петрозаводский государственный университет.
41: И хотим представить вам результат нашей работы. Следующий слайд, пожалуйста. Итак, целью нашей работы была организация коллективной работы 3 агентов.
42: Среде, с препятствиями имитирующий городскую застройку агенты должны выполнить эстафету. 1 получает стартовую цель строит путь ко 2 агенту, передаёт эстафету, 2 аналогично движется к 3, 3, в свою очередь, едет к финишу для выполнения
43: Для достижения цели выполнены задачи реализации системы, обеспечивающей построение карты поиска пути обмена данными между роботами и точное следование по траектории с учётом габаритов робота. Следующий слайд, пожалуйста.
44: В работе было разработано 4 основных компонента. Это представление пространства в виде сетки с градиентной стоимостью, алгоритм поиска пути с постобработкой траектории, система обмена сообщениями между агентами, а также управление на
45: Основе пид регулятора. Следующий слайд, пожалуйста.
46: Представлена краткая схема работы нашего алгоритма 1 машинка через протокол общения запрашивает координаты 2 машинки, та передаёт свои координаты.
47: Создаётся окрестность вокруг местоположения машинки 2 простраивается путь, и путь логически перестраивается в список инструкций для
48: Движение машинки дальше она следует этим инструкциям, добирается до точки по протоколу общения, сообщает машинке 2 о том, что она приехала, и 2 машинка дальше, по тому же алгоритму, связывается с 3, доезжает до неё, и 3 уже получает финиш.
49: Точку и также двигается по тому же принципу до неё. Вот следующий слайд и передаю слово участнику нашей команды, да, основой системы является дискретное представление рабочей области, а как класс грит
50: Инициализации сетки проводится растеризация препятствий. Размеры сетки вычисляются на основе габаритов рабочей области с учётом начального смещения. Каждая клетка имеет размер 6 пикселей. Ключевая особенность реализации процедуры инфляции препятствий. Поскольку робот имеет не нулевые габариты, необходимо гарантировать.
51: Проложенный путь будет безопасен при движении с учётом формы корпуса результатом является карта градиентной стоимости, где клетки в непосредственной близости от препятствий получают значение 2, 3, 7 и 10, возрастающие по мере приближения к стене. Это позволяет алгоритму
52: Поиска пути избежать опасных зон, выбирая траекторию с минимальной суммарной стоимостью. Далее передаю слово другому участнику нашей команды. Да, в том же классе гри для нахождения пути мы использовали такой алгоритм, как а со звёздочкой в качестве
53: Ретической функции. Мы использовали лидовое расстояние. Особенность реализации данной функции в нашей работе было то, что с учётом стоимости клеток происходил учёт стоимости клеток, полученной после инфляции, и целевая функция минимизирует
54: Только длину пути, но и сумму стоимости проходимых клеток, что эквивалента предпочтения более безопасных траекторий, удалённых от препятствий. Однако сам путь у нас не является идеальным. Поэтому мы используем несколько этапов, чтобы улучшить его траекторию. 1
55: Это сглаживание методом проверки прямой видимости. То есть проверяется отрезок между удалёнными узлами маршрута. Если на отрезке не возникает коллизии с препятствиями, с учётом габариты машинки, то промежуточные точки у нас будут исключаться, a2 этап это
56: Аппроксимация угловых соединений, то есть дугами окружности для 3 последовательных точек между пересечением перпендикуляров середины отрезка вычисляется центр окружности и затем генерируются промежуточные точки, формирующие плавный поворот с заданным радиус.
57: Следующий слайд.
58: Дальше у нас система протокола общения. Основой его является месседж басс сценарий. Предполагается, что у нас наличие нескольких агентов, которые будут взаимодействовать друг с другом. Именно для этого мы и реализовали данный класс.
59: Они работают у нас через fail connection тст и каждое сообщение у нас имеет свой префикс месседж для идентификатора, сама его структура является как отправитель, то тип команды message и сама дата.
60: Данные, которые мы передаём будь то инструкции либо greed, то есть у нас, а сама запрос карты координат. Ну и соответственно имеется несколько из возможных вариантов. Это get POS ей пос. Для передачи координат либо
61: Принятие шей грид или грид для передачи карты либо запроса, ну и финиш для передачи эстафеты, либо завершения самой гонки. Следующий слайд.
62: Обработка всех данных запросов в протоколе общения у нас является, ну, обрабатывается в классе месседж англер, обработка входящих сообщений организу, ну, для каждого типа команды зарегистрирован свой метод обработчик.
63: При получении сообщения вызывается соответствующий обработчик, который может обновить внутреннее состояние робота или сформировать ответное сообщение ответ следующему предыдущему агенту обработка производится в каждом цикле.
64: Считывается файл, выбирается сообщение, адресованное данному агенту, и дальше удаляется из самого файла. Это что, гарантирует нам, что каждое сообщение будет обработано только 1 раз. Передаю слово. Угу.
65: Следующий слайд, пожалуйста, e класс агент контроллер это у нас блок управления, его задача преобразовать последовательность точек на траектории в управляющие сигналы, то есть изменение линейной скорости и угла поворота. Реализация значит,
66: В этом классе у нас находится в методе get контрол, вызываемом для на каждом шаге симуляции в каждый момент времени робот ориентируется не на ближайшую точку маршрута, а на точку, с упреждением вычисляемую как линейная комбинация текущей и следующей целевых точек.
67: С коэффициентом 0 1 это повышает плавность движения и предотвращает рыскание угловая ошибка определяется как разность между желаемым направлением, лённым через арктангенс вектора до цели, и текущей ориентацией робота ошибка нормализуется в диапазон от минус пи до пи.
68: И для корректной обработки перехода через границу для управления используется пид регулятор. Пропорциональная составляющая с коэффициентом реагирует на текущие отклонение. Интегральная составляющая с коэффициентом накапливает ошибку для компенсации систематических смещений, но
69: Пределом для предотвращения перерегулирования. Следующий слайд ну и вывод по работе в ходе проекта разработана и реализована система автономной навигации.
70: Для группы мобильных роботов, выполняющих эстафету на городской карте со статическими препятствиями, на этом наше выступление закончено. Спасибо за внимание, спасибо, приглашаю жюри.
71: А или мы вопросы будем задавать после проезда? Как лучше сделать?
72: Я считаю, вопросы стоит задать сразу после презентации. Ну, тогда приглашаю жюри задать вопросы.
73: Так, ну давайте я задам 1 вопрос. У вас, соответственно, этот алгоритм будет работать только при статических препятствиях или он будет оценивать положение препятствий на каждом шаге, то есть
74: Если бы они изменялись, сработал ли ваш, ваш алгоритм? Нет, я думаю, не совсем бы сработал, потому что у нас считается путь каждый раз, когда переходит.
75: Ну, машинка переходит. То есть сначала для 1 машинки просчитано, но учитывается также местоположение машинок. То есть, собственно, у нас машинки делятся друг с другом своим местоположением и на карте, на нашей сетке.
76: Также появляются и считаются в начальный момент времени как раз-таки полигонами тоже, ну, в теории полигонами. И алгоритм пытается их обогнуть, потому что путь, который будет проходить через полигоны, очень
77: Дорог. Иногда, ну, буквально скипаем мы эти клетки, чтобы он в полигон не заехал. Машинка. Вот это было бы релевантно, если бы мы изначально обсуждали этот момент, и изначально стояла бы задача о том, что динамическая
78: Меняемая, ну, карта препятствий. Тогда бы, конечно, было бы это учтено сейчас. Нет, хорошо, спасибо.
79: Расскажите, чем обусловлен выбор выбор алгоритма построения пути, почему вы используете астар?
80: А не какой-то иной алгоритм. Честно говоря, я долго разбирался в этом вопросе. И 1, что было для меня самым подходящим, потому что я занимал
81: Именно этим классом, именно астар. То есть я сначала изучил алгоритмы декстры. В общем, и их модификации. Есть ещё тета со звёздочкой. Я попытался реализовать тету со звёздочкой, но упёрся в ограничение того, что нельзя использовать библиотеке. Я хотел использовать бинарную кучу.
82: Если я не ошибаюсь, хэп ку называется библиотека, но так как это было, ну, запрещено использовать, я решил обойтись как-то без неё, начал тестировать, и вычислений оказалось так много, что буквально у меня мой.
83: Устройство. Оболочка падала на моём устройстве, поэтому я решил использовать астар, потому что он давал в принципе, выигрыш во времени по отношению к
84: Алгоритма на основе алгоритма декстера, да, и он такой, он самый популярный буквально в любой статье его реализации. Говорится, хочешь найти путь, и у тебя есть взвешенный граф, то используй аста. Ну вот такое вот решение этим и обусловлено.
85: Хорошо, а что насчёт скорости работы вашей программы? Способна ли она обрабатывать в реальном времени данные?
86: Ну, опять же, вопрос реального времени не стоял. У нас есть симуляция, которая симулирует у нас сначала просчитывает полностью все эти кадры и после этого только решает. Но если оптимизировать, наверное,
87: Все компоненты, то это вполне реально, потому что обработ построение маршрута занимает около, ну, полностью построение сетки, построение маршрута, полностью скругление Углов и координат.
88: Занимает около 40 миллисекунд, что-то такое. Так что мне кажется 40 миллисекунд достаточно небольшой промежуток времени, за который в принципе можно построить данную данный маршрут. Ну вот.
89: Но на самом деле я считаю, что обработка динамических препятствий это уже задача не построения маршрута, а задача в 1 очередь как раз-таки контроллера машинки, потому что контроллер машинки должен найти это препятствие, ну, встретить и после этого
90: Запросить у контролёра обработки маршрутов как раз-таки, как сказать дальше руководство, куда ему ехать. Ну вот такая вот идея, если бы мне нужно было это сделать в реальном времени,
91: Хорошо, я упустил такой момент. У вас построение пути производится на 1, на 1 машинке сразу для всех агентов. Нет, у нас происходит построение маршрута сначала на 1.
92: Потому что в момент того, как мы строим маршрут, 1 машинка знает своё местоположение и опрашивает 2 машинки, которые есть. Потом машинка строит сначала сетку по вейпоинтам, потому что по
93: Задачи вейпоинты тоже не двигаются. После этого на этой сетке растеризует все полигоны и в том же там же она растеризует полигоны, там же она растеризует барьеры, и там же она
94: Машины сами на клетки. И после этого только по вот этому готовой по этому готовому полю строится как раз-таки маршрут. Используя алгоритм мастар. После этого данные переходят к машинке 2 машинка 2 это строят.
95: 5 потому что местоположение 1 машинки изменилось, и она это учитывает. Потом 3 машинке переходят тоже данные, и она перестраивает. Ну вот у нас протокол общения способен.
96: Давать возможность им передавать между собой данные. Как раз-таки они передают между собой сетку, чтобы сетку не рассчитывать каждый раз каждую итерацию, а и передают собой машинки.
97: Координаты. Ну вот как-то такая вот реализация именно поиска пути. Спасибо. Хорошо, спасибо. Вы ответили. Давайте перейдём к практической части. Мы потратили больше времени, чем планировалось. Давайте за
98: Кать, задание.
99: Так, сейчас я буду демонстрировать решение, которое вы прислали.
100: Так, видно ли, запустилась ли демонстрация? Да все видно.
101: Отлично, я заранее уже просчитал вашу симуляцию, чтобы не тратить на это время начальные позиции машинок будут следующими. 1 машинка стоит на 9 точке, 2 стоит
102: На 3 и 3 стоит на 6, дальше время симуляции будет 200 секунд.
103: Точка, до которой нужно доехать последней машинки, расположена по этим координатам. Можно заметить, что это точка под номером 12. То есть вот эта. Давайте запустим вашу симуляцию и посмотрим
104: Работа алгоритма.
105: Довольно волнообразно двигаются роботы. Интересно. Так, так это случилось из за того, что изначально вопрос о том, ну, как бы мы не уточнили вопрос о колли.
106: Машинок и двигаются так волнообразно, потому что пид регулятор чуть чуть не подстроен. В чем проблема? Просто комментирую проезд. Не нужно отвечать на вопрос да, да, какой результат?
107: Отлично. Давайте посмотрим на результаты слева будет график, отражающий оптимальный путь. Не обращайте внимание, что он проходит здесь сквозь препятствия. Это схематическое представле.
108: Которое показывает только последовательность точек, которая по метрам является оптимальной. Справа будет
109: Всегда представлен ваш заезд, снизу, будут рассчитываться параметры, параметр с и базовый балл, которые были представлены.
110: За ваши работы вам было поставлено 6,23 балла.
111: Так, можете видеть, что это связано с тем, что ваш путь 1 машинки является неоптимальным. Именно поэтому у вас неполный пал. Штрафов за столкновение у вас не было обнаружено.
112: Так, жюри, фиксируйте, пожалуйста, себе балл за проезд и, соответственно, баллы за презентацию. Соответственно, 6 целых 23.
113: Сотых балла мы вам записываем. Спасибо команде. Плюс настроение. Далее приглашается команда, команда из
114: Кубанского государственного университета. Командная работа.
115: Добрый день, сейчас я продемонстрирую.
116: Если готов, можешь. Картинка есть, да.
117: Значит, команда, командная работа из кубгу представляет жюри своё техническое решение целевой задачи, значит, формулировка задания, ну,
118: У нас на карте 3 агента робота под номером 1 должен доехать до номера 2. Сообщить ему об этом также 2, 3, 3 должен до определённой точки доехать. Соответственно, нужно найти путь.
119: От 1 роботу до другого. И чтобы они не сталкивались, значит алгоритм поведения роботов. У нас роботы, ну, имеют свои состояния, поэтому мы используем конеч.
120: Автомат для фиксации этих состояний. С самого начала у нас происходит рассылка координат. Роботы сообщают друг другу их позиции, ну, кроме 1 агента, потому что он сразу
121: Стартует. И какой смысл ему рассылать свои координаты, если они все равно изменятся? Потом режим ожидания тоже. Опять же, все роботы, кроме 1 агента, ждут, пока предыдущий агент
122: Сообщит о том, что он до них добрался. После этого роботы снова спрашивают других агентов о том, где они находятся потом
123: Основной режим именно в основном режиме происходит составление маршрута агент прокладывает путь к целевой точке, ориентируясь на такие переменные внутри класса, как weapons откликс.
124: Барьер, то есть напрямую строится путь по, ну, учитывая препятствия, координаты которых известны, в том числе туда же попадают и данные о местоположении агентов. При этом учитывается, что агенты не материальные точки.
125: Имеет там свой размер. Впоследствии, когда агент построил, доехал, он рассылает свои координаты, сообщает о том, что доехал и останавливается после
126: Это считается как физическое препятствие. Нужно было также по условиям задачи реализовать общение агентов через файл коннекшнс точка txt у нас вот реализовано как бы.
127: Токовая обработка. То есть все агенты как в поток закидывают, что они хотят сообщить, какому агенту. А потом этот самый агент просто считывает самое последнее сообщение. То есть здесь, допустим, пример справа агент
128: Когда отсылает свои координаты, он ещё и помечает, что как бы тип сообщения мой пост, моя позиция. Если же он доехал, он сообщает, что он, ну, тип ричет, то есть, доехал, вот, значит,
129: Алгоритм нахождения пути у нас, он состоит, ну, из 4 подэтапов, как только наступает этот самый main режим, то есть режим, когда он должен двигаться, агент, он строит граф видимости, потом по гра.
130: Видимости. Ну, алгоритм гетры находит кратчайший путь, интерполирует его для плавности, а затем последовательно движется по точкам маршрута, используя пропорциональный регулятор для управления скоростью и поворота.
131: Граф видимости у нас с самого начала вейпоинты, по сути, представляют собой как раз уже граф, и у нас, если я не ошибаюсь, вейпоинты находятся почти, ну, на, так сказать, значимых позициях, где там повороты есть, то есть
132: Можно их использовать как, ну, задел для графа видимости, но если мы напрямую проложим пути от точки к точке, то нет никакого учёта препятствий, сразу же агент сломается. Поэтому граф видимости это тот же самый
133: Граф, только там туда добавляются ещё точки, эти самые точки, ну, при объезде препятствий, которые мы получаем. Вот, значит, агрит екс, ну, получив граф видимост,
134: К слову, забыл уточнить, на граф видимости, там, наверное, самая добрая часть кода ушла декстра, там очень маленький алгоритм получился. Вот, соответственно, декстра это классический алгоритм.
135: Где мы? У нас расстояние до стата мы считаем 0 узлов, бесконечность посещаем каждый узел, выбираем узел с минимальным расстоянием, проверяем. Там для соседей можно уменьшить расстояние через теку.
136: Узел, обновляем узел и так далее. Вот алгоритм находит кратчайший путь в график, но нужно учитывать, что у нас в нашем коде есть параметры, которые отвечают
137: Да, там допустим, размер агента также допустимое расстояние агента до препятствий это все будет влиять на алгорит. То есть вполне возможно, что какие-то, какой-то
138: Слишком узкий путь. Алгоритм будет считать, что его как бы нет, что агент туда не поместится. Вот, значит, реализация алгоритма дикстры, ну, примеры просто поиска пути от точки к точке.
139: Как видите, здесь просто ломанная линия, то есть он напрямую, здесь просто алгоритм действий без интерполяции, ну, ездить как бы такое себе агенту по Такому пути, поэтому мы интерполируем.
140: После этого просто poe используем пропорциональный регулятор, который вычисляет скорость. Поворот относительно, ну,
141: Какая скорость поворота должна быть? Вот чтоб аген доехал от 1 точки к другой, которая очень находится близко, потому что точек там, ну, много получается по итогу. Вот. Значит, тут также используется параметр.
142: Степ, ну, именно в алгоритме он определяет, какое у нас расстояние должно быть от этих самых маленьких точек, ну, как массива точек. Вот, значит, команда, ну, команда.
143: Все студенты физико технического факультета кубанского государственного университета я, Камышевский Никита Александрович, капитан команды, студент 4 курса направления информационной системы технологий. Также мои коллеги Громов Сергей Валерьевич, Елькин Виктор Андреевич и
144: Тимурова Татьяна Юрьевна, все они студенты 1 курса, направление информационной системы технологий. Спасибо за внимание.
145: Спасибо команде командная работа жюри. Приглашаю задать вопросы по их решению.
146: Что вы имели ввиду под интерполяцией? Ну, сглаживание пути. То есть, опять же, эти ломаные, чтобы они плавные были.
147: А можете, пожалуйста, вернуть слайд, где у вас был? Были демонстрация графа на полигоне?
148: А вот можно узнать, вот вы точки графа брали так же, как здесь изображено, да, вот все эти красные точки, да, да. А как проедет робот от точки 13 до точки?
149: 11 по графу он проедет прям сквозь препятствия.
150: Препятствия, потому что его нету как бы в конфиге.
151: Так, а, то есть это приемлемо, что он проедет сквозь препятствия? Ну, я просто, когда мы, мы посчитали, что это, ну, не знаю, допустим.
152: Забыли добавить. Вот, а как вы считаете, как можно решить эту проблему? Вот если круговое движение, как можно детализировать, граф, чтобы избежать этой проблемы?
153: С прямыми линиями, понятно. То есть квадратами или прямоугольниками в плане прямоугольники, квадраты в плане препятствий. А вот круглые препятствия как можно изменить граф так, чтобы все-таки решить эту проблему?
154: Не совсем понял, как изменить. Граф граф строится, если есть препятствия. Ну, в смысле, по координатам препятствий. Если бы у нас был, ну, в конфиге все-таки был записан этот самый круг, да?
155: То он бы это препятствие учитывал. И, ну, просто очень много ломанных линий, которые потом бы сгладил, создал бы, ну, алгоритм.
156: То есть?
157: То есть, я правильно понимаю, 13 точка, 11 точка. Робот проедет сквозь препятствия. Да, принял. Спасибо.
158: Так, ну если вопросов больше нет, давайте запускать от команды. Прошу тогда команду отключить демонстрацию. И, Константин Евгеньевич, запускайте.
159: Видна ли демонстрация, коллеги? Да, отлично. Я также, как и с прошлой коммандой, уже все запустил. Давайте посмотрим. Повтор.
160: Ничего в конфиге не было поменяно, у всех команд одни и те же начальные параметры заданы в конфиг файле.
161: Отлично. Последняя машинка доехала до финальной точки. Давайте посмотрим результат.
162: Так, а можно уточнить так аналогично тому, как было у прошлой команды. Константин Евгеньевич, можно уточнить, почему путь 1
163: Не идёт до 2 в идеальном маршруте, это же неправильно.
164: Вообще идёт. Здесь накладываются линии. Ну, идеальный путь 1 это пунктир зелёный, он идёт до точки 12, а должен идти до точки.
165: 3. Так, так, так.
166: Предлагаю поменять конфигурацию маршрута и запустить у предыдущей команды тоже с другой конфигурацией, чтобы идеальный маршрут рисовался правильно, есть такая возможность.
167: Хорошо, давайте поменяем, да, чтобы просто не было вопросов потом, почему идеальный маршрут там не соответствует, возможно, баг программы оценки, но сейчас мы исправим.
168: Тогда, соответственно, все команды будут проходить тоже другой маршрут, чтобы не было накладок.
169: В таком случае давайте, чтобы не терять времени, попросим 3 команду представить свою презентацию. Я подготовлю. Хорошо? Задание. Ага, тогда далее.
170: Пишем баллы к у команды командная работа. Благодарю за выступление и приглашаю следующую команду. Привыкни к аппарату из Московского энергетического института.
171: Так, представители команды, привыкни к аппарату.
172: Константин Евгеньевич, команда, привыкни к аппарату, скидывали вам код.
173: Да, код скидывали.
174: Так, ну значит, мы защиту пока пропускаем, тогда приглашаю следующую команду электроник из сгту имени Гагарина.
175: Так, представители команды, не слышу.
176: Давайте пойдём дальше. Значит, команда Матыга из Московского энергетического института.
177: Команда мотыга.
178: Эта команда решение не предоставила. Так, давайте пойдём дальше. Следующая команда бешеный фотон из сфу.
179: Команда из сфу.
180: Так тоже не слышу никого. Эта команда решение предоставила.
181: Так, ну тогда можно будет запустить, наверное, их тоже решение, когда будем запускать предыдущие, пока приглашаю дальше с выступлением. Команда тачки 2 из
182: С немые также.
183: Тачки 2.
184: Команда тачки 2 была снята с конкурса по собственному желанию.
185: Так, понятно, тогда переходим к следующей. Команда кб миксов сгту имени Гагарина.
186: Команда предоставила презентацию, но не предоставила решение. Угу.
187: Понятно.
188: Так, ну давайте пойдём дальше. Команда кремень из полоцкого государственного университета.
189: Команда кремень
190: Команда не предоставила решение и не предоставила презентацию. Угу. Команда автоботы из каи рф. Цт. Добрый день. Здравствуйте.
191: Здравствуйте. Да, наконец то у нас есть участники на конференции. Можете включить демонстрацию и рассказать, да, секунду.
192: Да, все видно. Спасибо. Так. Угу. Так, наша команда автобота представляет нашу работу разработка системы управления группой мобильных роботов.
193: 3 роботов. Последовательной активацией. Цель заключалась в том, чтобы разработать алгоритм для управления 3 мобильными роботами. Для последовательного достижения цели задача была
194: Такова то, что агент 1 или робот доезжает до 2, отправляет сообщение тому, чтобы робот 2 начал своё движение и точно также робот 2 доезжает до 3, отправляет сообщение и
195: 3 начинает своё движение к финишной точке ограничения были то, что случайные позиции наших роботов и препятствия в ходе нашей работы.
196: Мы реализовали алгоритм, потому что у нас есть граф из 15 вершин.
197: Точки, которые соединены рёбрами и ребра, имеют вес и расстояние. Также есть препятствие. Все это говорит о том, что у нас граф жёстко задан, и в таком случае алгоритм
198: Будет хорошо работать и быстро выдавать результат алгоритм декстер в таком графе гарантирует кратчайший путь on можно будет учитывать.
199: И будет быстро все-таки работать. Наверное, сразу же отвечу насчёт вопроса, почему именно декстра? Потому что, допустим, алгоритм астар
200: Который быстрее, чем декстеры. В этом случае с этим, с этим графом, скорее всего, будет работать примерно одинаково. Поэтому декстер в плане в этом плане будет проще.
201: И и существенной разницы не будет и насчёт масштабирования или динамического изменения препятствий или добавления новых элементов.
202: Есть. Декстер будет в этом плане у него минусы, он не сможет такое делать, будет медленно работать, если будет больше вершин. Но
203: Есть алгоритм d start, который учитывает все эти нюансы, но в нашей задаче такого постановки задачи не было, поэтому.
204: Реализовали алгоритм. Это блок, схема работы всей программы, то есть начинается симуляция.
205: 1 получает расчет пути, который высчитал алгоритм, 3 начинает своё движение, получает сначала получает команду get control, потом начинает своё движение.
206: Своей точки до агента 2 также отправляет сообщение, потом происходит чтение этого сообщения. Агент 2 получает команду get контрол и начинает своё движение.
207: Точки 3 также отправляет сообщение и again 3 доезжает до конечной точки обработка препятствий вот с кем работаем обработки препятствий, наверное, лучше покажу.
208: На коде, то есть в функции по by барьер, у нас реализуется нахождение, получается барьера между 2 точками.
209: То есть, если барьере выдаёт тру, если его нет, выдаёт false в
210: Функция call Вейт, где мы рассчитываем расстояние между точками и проверяем барьер как раз-таки мы инициализируем эту функцию барьер и смотрим, если нет.
211: То высчитываем расстояние между точками в функции def декстра паф как раз-таки реализуется сама алгоритм.
212: То есть у нас, получается, создаётся очередь с приоритетами, из неё вытаскивается узел с наименьшей стоимостью, если это наш
213: Цель то восстанавливается путь если нет, то проверяется соседний, если его стоимость меньше, то обновляется путь и так до конца, пока очередь не опустоши.
214: Алгоритм движения и поворота. Изначально мы получаем наши текущие позиции сначала 1 агента.
215: Потом вычисляем вектор цели, то есть поворот, потом расчет желаемого угла, получение текущего угла и вычисление разницы, то есть насколько должен повернуть наш
216: Робот или агент. После мы смотрим на дистанцию. Если у нас дистанция до точки, до цели нашей большая, то делается точный поворот на месте.
217: Если агент близко, то делается плавный поворот в движении, и все это отправляется команда, и команда отправляется роботу.
218: Так, сам алгоритм, то есть, да, получения текущего угла ориентации, вычисление вектора, расчет желаемого угла, вычисление ошибки угла, расчет команды руля.
219: Вот насчёт команды руля его не было в блок схеме. То есть если мы встречаем препятствие, то восстанавливается, движение в противном случае идёт.
220: Движение к цели и плавное торможение также смотрится расстояние если далеко, то поворот на месте, если близко движение с коррекцией, поворот, движение.
221: Это, в принципе, все. Можете задавать вопросы. Спасибо за внимание. Спасибо за выступление. Давайте я задам 1 вопрос.
222: Где выполняется вот этот алгоритм планирования пути, то есть он выполняется на каждом роботе отдельно или расстраивается до начала движения всех роботов.
223: Она, скорее всего, на каждом роботе отдельно выполняется. Угу. Так, ну это я просто к тому, что в финале будет задание запустить тоже самое, но на реальных роботах. Вот. И там нужно будет тоже. Угу.
224: Про это подумать, в какой последовательности это запускать. Либо это 1 робот считает для всех, либо каждый по отдельности, но там будет ограниченные по ресурсам мини компьютеры. Вот. Ну это так.
225: Все, понял. Ну просто мы подумали, что лучше будет, если каждый робот будет высчитывать свой маршрут сам. Ну да, это, наверное, более эффективно так будет. Так, есть ли ещё вопросы у жюри?
226: А можно узнать, я правильно понял, что если вы видите между 2 узлами препятствия, то вы, получается, отбрасываете это ребро, через которое вы будете проезжать. Я правильно понял, да?
227: Тогда вопрос возникает в том, зачем тогда это ребро было вообще построено? Ребра же графа строятся именно там, где нет препятствий. В чем его смысл, граф?
228: Же все-таки строится так, чтобы обходить эти препятствия, зачем тогда и нужно это ребро.
229: Мы, как бы это сказать?
230: У нас же алгоритм декстера, он проходит по всем углам. Из за этого мы отбрасываем, ну, сначала проверяем, потом отбрасываем ненужное. А что вы проверяете конкретно? У вас же все-таки, граф, это совокупность.
231: Узлов и рёбер чётко соединённых и да, которые отождествляют у вас возможные пути движения робота и на которых в любом случае препятствий никаких не должно быть. Тогда что вы проверяете
232: Вот у вас было ребро, которое вы отбросили в алгоритм, вот при движении. Ну, какое тогда, если, к примеру, посмотреть на полигон,
233: Если даже смотрите, вот вы отбросили это ребро, а как далее робот будет двигаться, если вы перед ним отбросили целое ребро, ну как это отбросили? Не то, что он прям отбрасывает, то есть он смотрит, если между то
234: Препятствие. И если это препятствие есть, то он не высчитывает это расстояние.
235: Ответ принят, мы были услышаны так хорошо, давайте перейдём к запуску решения команды.
236: Так, напомню, команда, команда автоботы, Константин Евгеньевич, можете запустить решение команда автоботы, а потом перезапустим.
237: Решение предыдущих команд 2.
238: Так, коллеги, программа считала все правильно, никаких ошибок не возникало. А почему строилась траектория оптимального решения? Она строилась правильно? Сейчас запустим и посмотрим на это ещё.
239: Команде командная работа. Я выставляю те баллы, которые мы с вами увидели после работы программы. Это 6 23.
240: Код команды автоботов. Я по аналогии с остальными командами уже залил входные данные. Конфик не менялись. Посмотрим повтор.
241: Отлично. Машинка номер 3 доехала до 12 точки. Запустим проверку.
242: И посмотрим на решение. Оптимальный путь от машинки 1 до машинки 2 это 9 8:15 13 12 11 4 3. Он
243: На 30, ну, 0 3, короче, на полметра меньше пройдённого вами. Да, да, да. Там наложили просто, да.
244: Между 4 и 3 путь есть. Посидел с калькулятором, проверил специально все, тогда вопросов нету. Хорошо. Соответственно, у вас было найдено 2 пересечения с препятствиями. Вы полу
245: Штраф 1 целый 4/100 балла.
246: 40/100 балла. Итоговый балл вам выставлен. 5 53.
247: Его я записываю.
248: Все хорошо, спасибо. Это команда автоботы, команда автоботы.
249: Так, спасибо команде автобота. И сейчас повторю, кто у нас ещё остался, так остался. Осталась 1 команда из неумы юрок. Если
250: Представители команды.
251: Команда юрок не предоставила ни код, ни презентацию. Так, хорошо, давайте я сейчас повторю тогда команды, те, кто ещё не выступал, возможно, были какие-то проблемы со связью. Команда, привыкни к аппарату.
252: Команда электроник.
253: Команда мотыга.
254: Команда бешеный фотон команда тачки 2 команда кб миксов.
255: Команда кремень
256: Так, ну, соответственно, у этих команд мы не засчитываем их выступление. Вопрос к жюри. Мы можем запустить код команд, которые предоста
257: Решение, чтобы оценить только проезд за выступление, поставить 0 баллов, можно сделать так.
258: Для того, чтобы, ну, ребята все равно старались, писали, писали эту программу. Возможно, за это можно поставить им хотя бы баллы за проезд. Как вы считаете, поддержи?
259: Хорошо, тогда давайте по очереди запустим все, что все программы, которые у нас есть.
260: Запустил программу команды.
261: Привыкни к аппарату.
262: Ждём выполнения симуляции.
263: Презентация этой команды также не была выслана. Ну, презентацию мы не будем без участников оценивать, поэтому смотрим только на проезд.
264: Так смотрим на результат.
265: Машинка под номером 3 доехала до 12 точки. Посмотрим результат работы программы.
266: По оценке заезда.
267: Соответственно, 1 машинка также выбрала неоптимальный маршрут. Угу.
268: Как и 3, итоговый балл 6 23 штрафов за столкновение найдено не было. Можно 1 вопрос, да.
269: Вот у 3 агента оптимальный путь, это через точку 5, 4, 11, да, но машинка проезжает через другой путь. Это тоже оптимальный путь, видимо.
270: У 3 агента, у голубого, да.
271: У него оптимальный путь 5, 6, 5, 4, 11, 12, 7 с половиной.
272: У команды проехал больше.
273: Нет, ну это работа 7 и 5 метров, да, но проехал 10 и 8, да.
274: Ну, соответственно, оптимальный путь. Все правильно. Да, баллы 6,23. Записываю. Это команда кремень. Нет, кома.
275: Да а, привыкни к аппарату. Привыкни к аппарату, да.
276: 6 23.
277: От следующей команды.
278: Какая следующая команда электроник?
279: Запускаю симуляцию.
280: И, соответственно, я наблюдаю, что у этой команды возникла ошибка.
281: Посмотрим на ошибку видно, что не импортирована библиотека, очень жаль.
282: Выставляем команде 0 баллов, так далее. Команда бешеный фотон. Следующая команда.
283: Да, да, бешеный фотоны.
284: Презентация команды была выслана.
285: Запускаем симуляцию.
286: Ожидаем её выполнения.
287: Симуляция выполняется долго там, а вот и есть результат.
288: Интересный путь выбрала 1 машинка.
289: Интересный путь выбрала 3 машинка. Да, давайте запустим проверку.
290: Так мы видим, что машинка выбрала неоптимальный путь.
291: 1 и неоптимальный путь 3 машинка. При этом было допущено 4 столкновения, штраф, 2,80. Ито.
292: Ball 2 и 6 записываем команда электроник нет, команда бешеный потон это была. А, да.
293: Команда бешеный фотон. 2,6.
294: Так и осталась команда.
295: Так, команда кремень не предоставила решение, а не предоставили, да? Так, давайте посмотрим. Команда key автоботы, оценка выставлена, команда бешеный.
296: Он оценка выставлена команда командная работа, оценка выставлена плюс настроение, оценка выставлена, привыкни к аппарату, оценка выставлена команда электроник электро.
297: Они электроник, оценка выставлена команда кремне. Ты опечатался.
298: Угу. Итак, мы оценили все команды, которые предоставили решение. Даже запустили код тех, кто к нам не подключился. Вот. Далее.
299: Сегодня будут объявлены списки тех, кто прошло, те команды, кто проходит далее в финал. В финале эти команды должны будут адаптировать своё решение на реальных роботах. Подключи.
300: Не к этим роботам будет осуществляться по записи. То есть команда выбирает время, когда они будут работать над своим решением, подключаются к роботам через предоставленный веб интерфейс.
301: Запускают, соответственно, эту эстафету на роботах и готовятся к финалу. В финале. Соответственно, тоже самое будет проходить с защитой по презентации. Возможно, у вас будет доработанное решение про
302: Ботаны, ответы на вопросы и так далее. Вот. И в финале будут объявлены уже победители. Вот. Ну, на этом предлагаю заканчивать. Благодарю всех команд и всех участников.
303: А также членов жюри за хорошую оценку проектов команд всем спасибо и до свидания.
304: Значит, я немного не понял. Вы выставили оценки по презентациям, да, по презентациям жюри выставляет оценки, и сейчас будет проведён подсчёт.
305: Понял. Сейчас, сейчас. Все, все, тогда. Спасибо. Угу. Все. Всем. До свидания. Все. Всем спасибо. До сви.