Связь с ардуино
Соединение с 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.