Skip to content
AJIOB edited this page Apr 20, 2018 · 17 revisions

API для взаимодействия с роботом

Версию API v4 смотрите по следующей ссылке: https://github.com/Lipotam/trackPlatform/blob/master/docs/Arduino%20api%20v4/Requirements.md

Версия API Стоп-символ команды Символ-разделитель между однотипными операндами в одной команде (запросе) Команда-ответ Команда подключения (в HEX представлении) Команда отключения (в HEX представлении) Первый коммит Последний коммит Версия списка поддерживаемых команд Поддержка USB Поддержка Bluetooth Поддержка Wi-Fi Отключение управляющего устройства по таймауту
0 Отсутствует Точка с запятой (;) Отсутствует по умолчанию (только ответы на запросы) Не требуется Не требуется Не известно Не известно 0 - + - -
1 Вертикальная черта (|) Точка с запятой (;) Отсутствует по умолчанию (только ответы на запросы) 04 01 01 04 02 cxx-api arduino-api cxx-api arduino-api 1 + + - -
2 Вертикальная черта (|) Точка с запятой (;) OK (и потом ответ на запрос, если описан в списке команд для данной команды) 04 01 02 04 02 arduino-api arduino-api 1 + + Пока нет -
3 Вертикальная черта (|) Точка с запятой (;) OK (и потом ответ на запрос, если описан в списке команд для данной команды) 04 01 03 04 02 arduino-api arduino-api 2 + + Пока нет +

Список команд

Команда Группа команды Запрос (в HEX представлении) Ответ (в HEX представлении) Версии списка команд, поддерживающие данную команду
Подключение Команды соединения (CommunicationCommands) 04 01 <версия API, 1 байт> Отсутствует Все, начиная с версии 1
Отключение Команды соединения (CommunicationCommands) 04 02 Отсутствует Все, начиная с версии 1
Обновление соединения Команды соединения (CommunicationCommands) 04 03 Отсутствует Все, начиная с версии 2
Движение вперед Команды передвижения (MoveEnum) 01 01 Отсутствует Все
Движение влево Команды передвижения (MoveEnum) 01 02 Отсутствует Все
Движение вправо Команды передвижения (MoveEnum) 01 03 Отсутствует Все
Движение назад Команды передвижения (MoveEnum) 01 04 Отсутствует Все
Остановить движение Команды передвижения (MoveEnum) 01 05 Отсутствует Все
Движение вперед с заданной скоростью Команды передвижения (MoveEnum) 01 06 <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [0; 255]> Отсутствует Все
Движение вперед заданное время Команды передвижения (MoveEnum) 01 07 <время движения в миллисекундах в человекочитабельном виде> Отсутствует Все
Движение назад с заданной скоростю Команды передвижения (MoveEnum) 01 08 <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [0; 255]> Отсутствует Все
Установить скорость определенной гусеницы Команды передвижения (MoveEnum) 01 09 <идентификатор гусеницы в человекочитабельном виде: 0 - левая гусеница, 1 - правая гусеница> 3B <скорость движения в человекочитабельном виде. Параметр должен быть в промежутке [-255; 255]> Отсутствует Все
Установить угол отклонения сервопривода от левого крайнего положения в горизонтальной плоскости Команды сервопривода (ServoCommands) 03 01 <угол отклонения в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> Отсутствует Все
Установить угол отклонения сервопривода от левого крайнего положения в вертикальной плоскости Команды сервопривода (ServoCommands) 03 02 <угол отклонения в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> Отсутствует Все
Установить угол отклонения сервопривода от левого крайнего положения в горизонтальной и вертикальной плоскостях Команды сервопривода (ServoCommands) 03 03 <угол отклонения в горизонтальной плоскости в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> 3B <угол отклонения в вертикальной плоскости в человекочитабельном виде. Параметр должен быть в промежутке [0; 180]> Отсутствует Все
Получить угол отклонения сервопривода от левого крайнего положения в горизонтальной и вертикальной плоскостях Команды сервопривода (ServoCommands) 03 04 <угол отклонения в горизонтальной плоскости в человекочитабельном виде в промежутке [0; 180]> 3B <угол отклонения в вертикальной плоскости в человекочитабельном виде в промежутке [0; 180]> Все
Получить расстояние с определенного датчика расстояния Команды сенсоров (SensorsEnum) 02 01 <номер датчика расстояния в промежутке [1; 5]> <расстояние до препятствия в сантиметрах (см)> Все
Получить расстояние со всех датчиков расстояния Команды сенсоров (SensorsEnum) 02 02 <расстояние до препятствия в сантиметрах (см)> 3B <расстояние ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) Все
Получить данные с определенного датчика линии Команды сенсоров (SensorsEnum) 02 03 <номер датчика линии в промежутке [1; 5]> <1, если под датчиком темная область, иначе 0> Все
Получить данные со всех датчиков линии Команды сенсоров (SensorsEnum) 02 04 <1, если под датчиком темная область, иначе 0> 3B <число ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) Все
Получить расстояние с определенного датчика расстояния в исходном представлении Команды сенсоров (SensorsEnum) 02 05 <номер датчика расстояния в промежутке [1; 5]> <расстояние до препятствия в виде, пришедшем с датчиков (без обработки)> Все, начиная с версии 4.1
Получить расстояние со всех датчиков расстояния в исходном представлении Команды сенсоров (SensorsEnum) 02 06 <расстояние до препятствия в виде, пришедшем с датчиков (без обработки)> 3B <расстояние ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) Все, начиная с версии 4.1
Получить данные с определенного датчика линии в исходном представлении Команды сенсоров (SensorsEnum) 02 07 <номер датчика линии в промежутке [1; 5]> <данные в исходном виде> Все, начиная с версии 4.1
Получить данные со всех датчиков линии в исходном представлении Команды сенсоров (SensorsEnum) 02 08 <данные в исходном виде> 3B <данные ...> ... (возвращается ровно 5 блоков с данными (числами) и ровно 4 разделителя 3B; в конце 3B не должно быть) Все, начиная с версии 4.1

Особенности

Особенность Затрагиваемые версии API
Если отпитать платформу (arduino), то cxx приложение не может связаться с роботом по USB Все, начиная с версии 1
В main для примеров приложений нужно указывать точные параметры соединения на вашем конкретном устройстве (например, для Linux - /dev/ttyS0, для Windows - COM23 - для последовательного соединения) Все
Приложение не зависит от версии используемого API (т.е. на старые версии приложения можно добавлять новые API, если не оговорено иное) Все реазизации API под cxx
Если предполагается использование USB как средство связи с Arduino, то нужно компилировать "решение" Visual Studio с прошивкой только в Release версии. Это обусловлено тем, что в режиме отладки (Debug компиляция) данное соединение используется для передачи внутренних отладочных сообщений от Arduino, которые понимает только Visual Micro (и, возможно, Arduino IDE) Все
Обновление соединения требуется производить не реже, чем раз в 2 секунды. Обновление соединения также производится отправкой любой команды (т.е. если хотя бы 2 секунды ничего из списка поддерживаемых команд не было отправлено модулю, соединение будет сброшено и модуль будет искать нового "менеджера") Список команд v2 и выше
Чем светлее поверхность под датчиком линии, тем меньшее напряжение будет получено на выходе (в исходном представлении). Такие данные возвращает сам датчик Все, начиная с версии 4.1
Платформа вернет -1, если произошла ошибка получения информации с датчика Все
Clone this wiki locally