Eternal Search

Предыдущая страница Следующая страница

Axum vs Actix vs Rocket

Логотип Rust

В этой статье мы сравним производительность 3 наиболее популярных бекэнд-фреймворков для Rust: Axum, Actix и Rocket.

Сравним основные особенности, качество документации и самое главное - проведём тест производительности. Для этого напишем с помощью каждого фреймворка простой REST-сервис с тремя эндпоинтами - один будет просто возвращать отформатированную строку, второй засыпать на 20 миллисекунд имитируя небольшую работу с БД или запрос к внешнему сервису, а третий будет выполнять тяжёлую работу вычисляя хеш bcrypt, имитируя какую-нибудь сложную бизнес-логику.

Killdozer

Одна из самых распространённых категорий робототехнических соревнований - РобоСумо. В этой номинации участвует два робота. Битва происходит на круглом поле стандартизированного диаметра. Края круга обозначены контрастным цветом (обычно круг чёрный, а граница круга белая или наоборот). Поле имеет определённую толщину возвышаясь над поверхностью, на которой оно установлено. Задачей одного робота является вытолкнуть другого за пределы круга, первый вышедший за пределы круга - проигрывает (победитель может установиться у черты, но обычно допускается тоже выкатиться за пределы круга, но вторым).

Номинация делится на весовые категории. Наш робот Killdozer участвовал в крупной весовой категории MegaSumo (вес до 3 кг). Оборудован моторами-редукторами от автомобильных стеклоподъёмников, двумя ультразвуковыми дальномерами HC-SR04, а для управления используется Arduino Nano.

При включении робот вращается, пока его дальномеры не обнаружат противника, затем робот на полной скорости движется вперёд. Специальный острый металлический ковш спереди робота позволяет ему поддеть противника и лишить его сцепления с поверхностью, в то время как колёса с покрышками отлитыми из двухкомпонентного силикона обеспечивают ему самому отличный контакт с поверхностью. Рама робота сделана из аллюминиевого профиля.

Overlord

Шагоход, участвующий в категории “Марафон шагающих роботов” фестиваля Robofinist.

Наш робот, использующий для движения механизм Чебышева, стабильно занимал призовые места в данном соревновании:

  • Robofinist 2018, Санкт-Петербург, Россия (первое место)
  • Robofinist 2016, Санкт-Перербург, Россия (первое место)

Задачей робота является следование по чёрной линии на белом полу. Роботы соревнуются по очереди, замеряется время прохождения круговой трассы с изогнутой линией. Может предоставляться несколько попыток, засчитывается лучшая.

Построен на базе Raspberry Pi 4 с USB-камерой, драйверах двигателей BTS7960 и двух моторах-редукторах. Использует библиотеку машинного зрения OpenCV для реализации распрознания линии.

Особенности нумерации вагонов поездов во Франции

Простое решение сложной проблемы

Когда пытаешься сориентироваться на любом вокзале, то тебя интересует ровно две вещи - на каком пути стоит твой поезд и в какой вагон у тебя куплен билет. С первым проблем обычно возникает не очень много - любой нормальный вокзал оборудован указателями, которые позволяют легко (или не совсем легко) найти нужный путь. В норме пути обозначаются с помощью натуральных чисел (1, 2, 3 и т. д.), иногда встречаются более экзотические варианты в виде букв (например, A, B, C, D…). С номерами вагонов дела обстоят сложнее, потому что вагоны в поезде могут быть отсортированы по-разному (первый вагон может быть как в начале, так и в хвосте), либо вовсе идти не попорядку. Существуют курьёзные случаи, когда в одном и том же поезде могут иметься несколько вагонов с одинаковыми номерами, но это уже совсем за гранью добра и зла. В любом случае, поезда часто достаточно длинные и на поиск вагона методом перебора всех может уйти достаточно много времени, когда у тебя в руках может быть тяжёлый чемодан, а времени до отправления остаётся совсем немного.

Я далеко не сразу заметил и понял это, но, как оказалось, французы (возможно, далеко не только они, я пока не посещал вокзалы других стран, кроме России и Франции и в России такого ни разу не видел) придумали весьма простое решение этой проблемы (ну, кроме того, что я пока не встречал ни одного поезда, где вагоны были бы не по порядку).

Pucks Harvester

Наш первый робот для участия в соревнованиях за пределами родного университета.

Был изготовлен с использованием доступных нам в тот момент технологий и поэтому в конструкции по большей части используется дерево.

Стал победителем с первых же соревнований категории Puck Collect, в которых принял участие и долгое время оставался безусловным фаворитом, однако через несколько лет пальма первенства ушла обновлённой версии - Puck Harvester 2, однако первый робот продолжил участие в соревнованиях и иногда всё равно занимал первые места.

Наиболее значимой победой является третье место на RobotChallenge 2018 в Пекине, Китае.

Работает на базе двух микроконтроллеров - Arduino Uno (выполняет управление движением) и STM32F103 (выполняет управление сортировкой и открытием задней заслонки).

Оборудован символьным LCD-дисплеем с тремя кнопками, позволяющими выполнять калибровку робота на цвета перед соревнованиями. Также имеет RGB-подсветку, которая индицирует цвет текущей команды, переключаемый тумблером. Как и новая версия, имеет компоновку с двумя распределительными механизмами, центральным накопителем шайб для шайб правильного цвета и двумя боковыми для шайб цвета неправильного.

Предыдущая страница Следующая страница