VBCores Документация
СайтGitHub
  • VBCores
  • Hardware
    • VBCore VB32G4
    • VB STM32 программатор
    • BLDC драйвер 30A
    • DC драйвер 15A
    • Stepper драйвер 10A
    • CAN-FD - Raspberry PI
      • Настройка CAN на RPI
      • Часто возникаемые ошибки при работе с CAN/CAN FD
      • Работа с CAN FD через Python
    • Power board 30A
    • SBus-HID
    • DC-DC преобразователь
    • Ethernet - CAN-FD
    • USB-HUB
    • IMU BNO055
    • IMU BHI360
    • Т-Энкодер
  • Настройка ПО
    • Arduino IDE
      • Подготовка модуля VBCore
      • Установка среды программирования на Windows
      • Установка среды программирования на Ubuntu
        • Возможные ошибки в Ubuntu при работе с Arduino
      • Выбор платы в Arduino IDE
      • Установка базовой библиотеки
      • Структура ПО для Arduino
      • Примеры
        • Работа с CAN и CAN FD на Arduino
        • Работа с I2C
        • I2C detect
        • Датчик BNO055 / I2C
        • Датчик AS5047P / SPI
        • Датчик AS5600 / I2C
        • Работа с бесколлекторными двигателями
          • Simple FOC. Управление скоростью. Нахождение количества пар полюсов.
          • Simple FOC. Управление моментом
          • Чтение данных с датчика тока
        • Работа с коллекторным двигателем
          • Вращение DC мотором
          • Чтение угла по энкодеру. Управление DC мотором по углу
          • Чтение скорости вращения мотора по энкодеру
        • Работа с шаговым двигателем
          • Вращение шагового двигателя.
          • Контроль двигателя по интерфейсу SPI
    • STM32 CUBE IDE
      • Типовые настройки
      • Подсказки начинающим
        • Cube IDE для начинающих
        • Clock configuration
        • Таймеры - прерывания
        • Таймеры - ШИМ
        • Отладка программ
        • Коммуникации - FDCAN
        • Управление DC-мотором
        • Backup программы
  • Cyphal CAN
    • Cyphal CAN
    • PyCyphal
    • Yakut
    • Cyphal Arduino
      • Отправка и получение сообщений по cyphal
  • Работа с ROS
    • Установка Ubuntu, ROS и Arduino
    • ROS_LIB
    • Примеры
      • Publisher. Hello World!
      • Publisher with Subscriber
      • Rotation by DC motor
  • Работа с научным ПО
    • TCP Server
    • LabView
    • Matlab
  • Инструкции
    • Стенд управления двигателями
    • Переделка датчика мотор-колеса
    • Стенд мотор-колеса
    • iPower Motor
    • AS5047p OEM
  • Практические занятия
    • Коллекторный двигатель
      • Устройство коллекторного двигателя
  • RPI Display
Powered by GitBook
On this page
  • Yakut monitor
  • Yakut subscribe
  • Yakut publish
  1. Cyphal CAN

Yakut

PreviousPyCyphalNextCyphal Arduino

Last updated 4 months ago

По аналогии с CAN utils для отладки и проверки корректности сообщений, отправленных через cyphal используется инструмент .

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

Если возникают ошибки при использолвании команды 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"

При компиляции данного проекта укажите ссылку на архив

Если при установке 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 написано здесь

Давайте разберем три основные команды - 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 возникнет неправильная интерпретация аргументов. Проблема в том, что отрицательное число (-10, например) воспринимается как опция, а не как значение. Чтобы исправить это, нужно явно указать, что это аргумент значения, а не флаг опции:

yakut pub 2004:uavcan.si.unit.angular_velocity.scalar -- "-10"

Откройте второй терминал и введите команду

yakut sub 33 8184

На экране вы должны будете увидеть публкуемые вами сообщения:

Репозитоий, содержащий определения регламентированных типов данных Cyphal вы найдете по ссылке:

Yakut
https://forum.opencyphal.org/t/screencast-of-installing-configuring-yakut/1197?u=pavel.kirienko
https://github.com/OpenCyphal/public_regulated_data_types/tree/master
https://github.com/OpenCyphal/public_regulated_data_types/archive/refs/heads/master.zip