Yakut
По аналогии с CAN utils для отладки и проверки корректности сообщений, отправленных через cyphal используется инструмент Yakut.
Yakut - это простой кроссплатформенный инструмент с интерфейсом командной строки (CLI) для диагностики и отладки сетей Cyphal. Благодаря тому, что Yakút основан на PyCyphal, он поддерживает все транспорты Cyphal (UDP, serial, CAN, ...) и совместим со всеми основными функциями протокола. Он разработан для использования в GNU/Linux, Windows и macOS.
Перед установкой yakut, убедитесь что версия python >=3.8 и установите дополнительные пакеты:
Если на последнюю строку выйдет ошибка, то попробуйте:
Инструкция по установке yakut https://forum.opencyphal.org/t/screencast-of-installing-configuring-yakut/1197?u=pavel.kirienko
Если возникают ошибки при использолвании команды pip install yakut,
воспользуйтесь pipx:
Убедитесь, что в файле .bashrc у вас прописаны все нужные экспорты:
Репозитоий, содержащий определения регламентированных типов данных Cyphal вы найдете по ссылке: https://github.com/OpenCyphal/public_regulated_data_types/tree/master
При компиляции данного проекта укажите ссылку на архив
https://github.com/OpenCyphal/public_regulated_data_types/archive/refs/heads/master.zip
Если при установке yakut возникает ошибка сборки scipy, то установите scipy отдельно следующим образом
Или, если scipy уже установлен, проверьте его версию и поставьте 1.8.0:
При возникновении ошибки
И спользуйте команду
Если возникла ошибка
Попробуйте решить проблему с помощью google. Не поможет - переустановите систему и попробуйте все с начала (не забудьте про бэкап важных файлов)
О том, как пользоваться yakut написано здесь
Давайте разберем три основные команды - yakut monitor (y mon), yakut subscribe (y sub) и yakut publish (y pub).
Yakut monitor
Сокращенный вариант этой команды
y mon
Она используется для отображения всей активности в сети. Она отслеживает узлы, находящиеся в режиме онлайн, и ведет в реальном времени статистику всех передач, которыми обменивается каждый узел в сети. Она также может обнаружить некоторые распространенные проблемы конфигурации сети, например, "зомби-узлы" (узлы, не публикующие uavcan.node.Heartbeat).
Подробно узнать о том, какая информация отображается на экране, какие есть опции у команды вы можете введя команду
Yakut subscribe
Сокращенный вариант команды
Этой командой вы подписываетесь на конкретный топик (ID) и можете видеть что в него отправляется.
Приведем пример. У нас есть программа, которая по ID 1111 отправляет угол поворота мотора в радианах. Прочитать какие данные туда приходят можно командой:
uavcan.si.sample.angle.scalar - это тип получаемого сообщения. Выше дана ссылка на репозиторий, содержащий определения регламентированных типов данных Cyphal. Настоятельно рекомендуем ознакомиться с написанной там документацией, чтобы понимать каким образом устроена структура сообщений и их ID.
Результат введенной команды:
Подробнее познакомиться с командой и посмотреть больше примеров вы можете, введя
Yakut publish
Сокращенный вариант
Примеры и описание вы можете посмотреть, набрав
Рассмотрим один пример. Введите в терминале
В топик 33 будет публиковаться сообщение типа uavcan.si.unit.angle.scalar, значение угла 2.31 радиан. Также будет публиковаться сообщение типа uavcan.diagnostic.Record. Для такого типа зарезервирован топик 8184 (см в документации о регламентированных типах данных).
Откройте второй терминал и введите команду
На экране вы должны будете увидеть публкуемые вами сообщения:
Last updated