Arduino и ROS — первый шаг

ros_lib в Arduino IDE

Использование пакета rosserial_arduino позволяет использовать ROS совместно с Arduino IDE. rosserial использует протокол передачи данных, который работает через UART (универсальный асинхронный приемопередатчик) Arduino. Это позволяет Arduino быть полноправным узлом ROS, который может публиковать и подписываться на сообщения ROS, публиковать TF (пространственные) преобразования и получать системное время ROS.

Связывание ROS с Arduino реализуется посредством использования библиотеки Arduino. Как и другие Arduino-библиотеки, для того, чтобы использовать ros_lib, ее необходимо поместить в папку, в которой находятся библиотеки Arduino. Про то, как устанавливать библиотеки Arduino я подробно описывал в статье, посвященной Motor Shield.

Для того, чтобы использовать библиотеки rosserial в своем коде, прежде всего, их необходимо подключить:

#include <ros.h>

Сделать это нужно перед включением любых других заголовочных файлов, например

#include <std_msgs/String.h>

В противном случае, Arduino IDE не сможет найти библиотеки.

 

Установка необходимого ПО

Так как я установил ROS на Linux Ubuntu, то и Arduino IDE у меня для экспериментов также установлена под Linux.  Если вам не нравится стандартная цветовая схема, то можно изменить внешний вид Arduino IDE.

Можно установить ros_lib, используя установочный файл deb или же собрать эту библиотеку из исходников. Рассмотрим оба эти варианта.

Установка исполняемых файлов на рабочую станцию ROS

Для установки ros_lib для ROS Indigo Igloo, выполняем

$ sudo apt-get install ros-indigo-rosserial-arduino
$ sudo apt-get install ros-indigo-rosserial

Если вы используете какую-либо другую версию ROS, например Hydro, то просто замените indigo на hydro в вышеупомянутых командах.

Установка из исходников на рабочую станцию ROS

Инструкции по сборке из исходников несколько отличаются для различных версий ROS, поэтому ниже приведены два варианта установки. Первый, основанный на catkin — для версий ROS Groovy и более свежих и второй для более ранних релизов, использующий rosbuild.

1. Для ROS Groovy и более свежих версий

Вместо того, чтобы запускать генератор библиотеки для каждого пакета, который вы хотели бы использовать, вы запускаете его один раз и генерируете библиотеки для всех установленных сообщений. В инструкциях ниже, <ws> обозначает ваше рабочее пространство catkin

$ cd <ws>/src
$ git clone https://github.com/ros-drivers/rosserial.git
$ cd <ws>
$ catkin_make
$ catkin_make install
$ source <ws>/install/setup.bash

Эти команды клонируют rosserial из репозитория GitHub, генерируют rosserial_msgs, необходимые для обмена данными, и создают библиотеку ros_lib в <ws>/каталог установки.

2. Для более ранних версий ROS

Если вы используете ROS Fuerte или же более ранние версии, выполните

$ hg clone https://kforge.ros.org/rosserial/hg rosserial
$ rosmake rosserial_arduino

Эти команды клонируют rosserial из репозитория kforge, используя mercurial, генерируют rosserial_msgs, необходимые для обмена данными, и создают библиотеку ros_lib.

Установка ros_lib в рабочее окружение Arduino

На предыдущих этапах была создана библиотека ros_lib, которую необходимо скопировать в рабочее окружение Arduino, чтобы скетчи Arduino смогли взаимодействовать с ROS.

Ниже, <sketchbook> — это папка, в которой хранятся ваши скетчи в Linux. Обычно, это папка sketchbook в вашей домашней папке, которая автоматически создается при установке Arduino IDE.

Копируем папку rosserial_arduino/libraries в папку sketchbook:

$ roscd rosserial_arduino/src
$ cp -r ros_lib <sketchbook>/libraries/ros_lib

После этого запускаем Arduino IDE, где в меню Файл → Примеры видим библиотеку ros_lib.

Библиотека ros_lib в Arduino IDE

 
Как вы оцениваете эту публикацию? 1 звезда2 звезды3 звезды4 звезды5 звезд (6 голосов, средняя оценка: 3,67 из 5)
Загрузка...

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

Оставить комментарий