Skip to content

Связь с ардуино

Соединение с Arduino с использованием ROS Чтобы попробовать наладить связь между Arduino и одноплатным компьютером, можно воспользоваться готовыми примерами из библиотеки ros_lib. Для этого запустите Arduino IDE, выберите File > Examples > ros_lib. Выберите для начала пример HelloWorld. Код примера приведен ниже и прокомментирован:

#include <ros.h> // подключение библиотеки ROS
#include <std_msgs/String.h> // подключение библиотеки сообщения строкового типа

ros::NodeHandle  nh; // создание объекта для работы с ROS

std_msgs::String str_msg; // создание сообщения
ros::Publisher chatter("chatter", &str_msg); //  создание паблишера

char hello[13] = "hello world!"; // создание массива, содержащего сообщение. отправляемое в топик

void setup() // функция первоначальной настройки setup
{
  nh.initNode(); // инициализация ноды
  nh.advertise(chatter); // сообщение ядру ROS о создании нового топика и паблишера
}

void loop() // функция loop
{
  str_msg.data = hello; //запись текста в сообщение ROS
  chatter.publish( &str_msg ); // отправка сообщения в топик ROS
  nh.spinOnce(); //синхронизация с другими нодами
  delay(1000); // задержка после отправки сообщения
}

После загрузки данного кода в Arduino требуется подключить ее к одноплатному компьютеру с помощью провода USB и найти название устройства в папке /dev/ на одноплатном компьютере. Чаще всего Arduino присваиваются названия /dev/ttyACM0 и /dev/ttyUSB0. Проверить это можно командой:

ls /dev/tty*

Далее необходимо запустить на одноплатном компьютере узел-приемник сообщений от Arduino:

roscore
rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 _baud:=57600

Команда roscore должна выполняться в отдельной консоли. Чтобы посмотреть, что отправляется с Arduino на одноплатный компьютер, требуется в новой консоли ввести команду:

rostopic echo chatter

В консоль начнут выводиться данные, которые отправляет Arduino.