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
  1. Работа с ROS

ROS_LIB

Для работы с различной периферией (микроконтроллеры) в составе ROS существует специальный пакет rosserial. Он позволяет просто подключить к ядру roscore микроконтроллер через Serial порт и взаимодействовать с ним как с полноценной нодой ROS.

Пакет rosserial состоит из двух основных частей, одна работает на стороне компьютера и взаимодействует с ядром ROS, вторая - это набор библиотек для микроконтроллера, которые позволяют, используя все сущности ROS, разрабатывать программы, взаимодействующие с ROS.

Установка пакета rosserial происходи командой apt

sudo apt install ros-noetic-rosserial-arduino

Для начала работы с ROS, вам необходимо "собрать" библиотеку ros_lib для Ардуино.

Сборку библиотеки необходимо производить самостоятельно, потому что файлы попадающие в библиотеку сильно зависят от того, какие пакеты ROS установлены на компьютере. "Сборщик" просматривает пакеты, находит в них все сообщения которые могут использоваться в вашей программе и собирает эти файлы в единую библиотеку. Только в этом случае и со стороны клиента и со стороны сервера мы получим одинаковые версии сообщений для топиков и сервисов. Использование "чужих" библиотек может привести к ошибкам.

Генерация библиотеки ros_lib для Arduino (обратите внимание на точку в конце, она обозначает то библиотека сгенерируется в папке из которой вы запускаете программу):

rosrun rosserial_arduino make_libraries.py .

После работы скрипта, мы получим папку ros_lib в которой находимся - это и есть библиотека.

Чтобы Arduino IDE смогла работать с библиотекой, перепишем ее в директорию библиотек Ардуино.

cp -r ros_lib ~/Arduino/libraries

Так же это можно сделать средствами Ubuntu - файловым менеджером. У вас с домашней директории после инсталляции появилась папка Arduino содержащая папку libraries - тут место для пользовательских библиотек ардуино.

Если вы все сделали правильно то в примерах Arduino появится раздел ros_lib. Выберите в нем пример HelloWorld

Скомпилируйте и загрузите на микроконтроллер VBCore. Если пример не открывается, то нужно поменять его расширение .pde на .ino Для этого зайдите в директорию, в которой лежит скетч: Arduino/libraries/ros_lib/examples/HelloWorld. Дальше переименуйте скетч, заменив расширение .pde на .ino Все, можно возращаться в среду Arduino и загружать скетч.

Если у вас возникли какие-то ошибки, попробуйте найти описание своей оброблемы в главе с ошибками или загуглить самостоятельно.

Запуск rosserial

Поскольку вы используете один порт и для загрузки скетчей и для коммуникации через rosserial, то запуск rosserial надо осуществлять после загрузки скетча. Не забудьте в Arduino IDE закрыть serial port.

При запущенном rosserial Arduino IDE будет ругаться на занятость порта. Каждый раз когда вы захотите залить новый скетч вам необходимо остановить rosserial.

Запустите roscore (если не запущен). В отдельном окне терминала запустите rosserial:

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0

Обратите внимание, что имя порта надо подставить правильное. Подсмотреть его можно в среде Arduino:

PreviousУстановка Ubuntu, ROS и ArduinoNextПримеры

Last updated 7 months ago