From 7558f633b56f2d2630012452528a9b118781fdfa Mon Sep 17 00:00:00 2001 From: Oleg Kalachev Date: Fri, 17 Nov 2017 01:48:31 +0300 Subject: [PATCH] Updates docs/arduino.md Auto commit by GitBook Editor --- docs/arduino.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 4 deletions(-) diff --git a/docs/arduino.md b/docs/arduino.md index 8b16ba31..82bfc445 100644 --- a/docs/arduino.md +++ b/docs/arduino.md @@ -32,9 +32,76 @@ sudo systemctl restart clever Набор сервисов и топиков аналогичен обычному набору в `simple_offboard` и `mavros`. -Пример кода контроля коптера по позиции: +Пример программы, контролирующей коптер по позиции, с использованием сервисов `set_position` и `set_mode`: -```c++ -``` +```cpp +// Подключение библиотек для работы с rosseral +#include -Пример кода с объявлением прокси ко всем сервисам пакета Clever: +// Подключение заголовочных файлов сообщений пакета Clever и MAVROS +#include +#include + +using namespace clever; +using namespace mavros_msgs; + +ros::NodeHandle nh; + +// Объявление сервисов +ros::ServiceClient setPosition("/set_position"); +ros::ServiceClient setMode("/mavros/set_mode"); + +void setup() +{ + // Инициализация rosserial + nh.initNode(); + + // Инициализация сервисов + nh.serviceClient(setPosition); + nh.serviceClient(setMode); + + // Ожидание подключение к Raspberry Pi + while(!nh.connected()) nh.spinOnce(); + nh.loginfo("Startup complete"); + + // Пользовательская настройка + // <...> + + // Тестовая программа + SetPosition::Request sp_req; + SetPosition::Response sp_res; + SetMode::Request sm_req; + SetMode::Response sm_res; + + // Взлет на 2 метра: + nh.loginfo("Take off"); + sp_req.yaw = 0; + sp_req.x = 0; + sp_req.y = 0; + sp_req.z = 2; + sp_req.frame_id = "fcu_horiz"; + setPosition.call(sp_req, sp_res); + + // Ждем 5 секунд + delay(5000); + + // Пролет вперед на 3 метра: + nh.loginfo("Fly forward"); + sp_req.x = 3; + sp_req.y = 0; + sp_req.z = 0; + setPosition.call(sp_req, sp_res); + + // Ждем 5 секунд + delay(5000); + + // Посадка + nh.loginfo("Land"); + sm_req.custom_mode = "OFFBOARD"; + setMode.call(sm_req, sm_res); +} + +void loop() +{ +} +``` \ No newline at end of file