Yakut
По аналогии с CAN utils для отладки и проверки корректности сообщений, отправленных через cyphal используется инструмент Yakut.
Yakut - это простой кроссплатформенный инструмент с интерфейсом командной строки (CLI) для диагностики и отладки сетей Cyphal. Благодаря тому, что Yakút основан на PyCyphal, он поддерживает все транспорты Cyphal (UDP, serial, CAN, ...) и совместим со всеми основными функциями протокола. Он разработан для использования в GNU/Linux, Windows и macOS.
Перед установкой yakut, убедитесь что версия python >=3.8 и установите дополнительные пакеты:
sudo apt update
sudo apt upgrade
sudo apt install libsdl2-dev libasound2-dev libjack-dev can-utils jq
pip install jsonnet
Если на последнюю строку выйдет ошибка, то попробуйте:
sudo apt install python3-jsonnet
Инструкция по установке yakut https://forum.opencyphal.org/t/screencast-of-installing-configuring-yakut/1197?u=pavel.kirienko
Если возникают ошибки при использолвании команды pip install yakut,
воспользуйтесь pipx:
sudo apt install pipx
pipx install yakut
pipx ensurepath
Убедитесь, что в файле .bashrc у вас прописаны все нужные экспорты:
export PATH="$PATH:/home/pi/.local/bin"
export YAKUT_FORMAT=json
export UAVCAN__CAN__IFACE=socketcan:can0
export UAVCAN__NODE__ID=101
export UAVCAN__CAN__MTU=64
export UAVCAN__CAN__BITRATE="500000 4000000"
export YAKUT_COMPILE_OUTPUT=~/.yakut
export YAKUT_PATH="$YAKUT_COMPILE_OUTPUT"
Репозитоий, содержащий определения регламентированных типов данных 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 отдельно следующим образом
sudo apt-get install python3-scipy
Или, если scipy уже установлен, проверьте его версию и поставьте 1.8.0:
python -m pip install scipy==1.8.0
При возникновении ошибки
libf77blas.so.3: cannot open shared object file: No such file or directory
И спользуйте команду
sudo apt-get install libatlas-base-dev
Если возникла ошибка
metadata-generation-failed
Попробуйте решить проблему с помощью google. Не поможет - переустановите систему и попробуйте все с начала (не забудьте про бэкап важных файлов)
О том, как пользоваться yakut написано здесь
Unexpected error with integration github-files: Integration is not installed on this space
Давайте разберем три основные команды - yakut monitor (y mon), yakut subscribe (y sub) и yakut publish (y pub).
Yakut monitor
Сокращенный вариант этой команды
y mon
Она используется для отображения всей активности в сети. Она отслеживает узлы, находящиеся в режиме онлайн, и ведет в реальном времени статистику всех передач, которыми обменивается каждый узел в сети. Она также может обнаружить некоторые распространенные проблемы конфигурации сети, например, "зомби-узлы" (узлы, не публикующие uavcan.node.Heartbeat).

Подробно узнать о том, какая информация отображается на экране, какие есть опции у команды вы можете введя команду
y mon --help
Yakut subscribe
Сокращенный вариант команды
y sub
Этой командой вы подписываетесь на конкретный топик (ID) и можете видеть что в него отправляется.
Приведем пример. У нас есть программа, которая по ID 1111 отправляет угол поворота мотора в радианах. Прочитать какие данные туда приходят можно командой:
y sub 1111:uavcan.si.sample.angle.scalar
uavcan.si.sample.angle.scalar - это тип получаемого сообщения. Выше дана ссылка на репозиторий, содержащий определения регламентированных типов данных Cyphal. Настоятельно рекомендуем ознакомиться с написанной там документацией, чтобы понимать каким образом устроена структура сообщений и их ID.
Результат введенной команды:

Подробнее познакомиться с командой и посмотреть больше примеров вы можете, введя
y sub --help
Yakut publish
Сокращенный вариант
y pub
Примеры и описание вы можете посмотреть, набрав
y pub --help
Рассмотрим один пример. Введите в терминале
yakut pub 33:uavcan.si.unit.angle.scalar 2.31 uavcan.diagnostic.Record 'text: "2.31 radian"'
В топик 33 будет публиковаться сообщение типа uavcan.si.unit.angle.scalar, значение угла 2.31 радиан. Также будет публиковаться сообщение типа uavcan.diagnostic.Record. Для такого типа зарезервирован топик 8184 (см в документации о регламентированных типах данных).
yakut pub 2004:uavcan.si.unit.angular_velocity.scalar -- "-10"
Откройте второй терминал и введите команду
yakut sub 33 8184
На экране вы должны будете увидеть публкуемые вами сообщения:
