Программное обеспечение
Last updated
Last updated
На изображении представлена архитектура ПО робота, которое загружается при старте системы. Управление локомоцией осуществляется на базе ROS. Взаимодействие с сервоприводами происходит по протоколу LCM.
На схеме синим показаны стрелки, обозначающие ROS-топики, зеленым - каналы LCM. Красные блоки подразумевают аппаратную часть робота, синие - программные модули.
Программа управления передвижением полностью выполняется на бортовом компьютере робота. Внешний компьютер может служить для установки желаемых параметров, отслеживания состояния робота, либо для выполнения дополнительных алгоритмов.
Программное обеспечение имеет следующие блоки:
locomotion_controller - выполняет алгоритм локомоции. На основе желаемых параметров (скорость, положение корпуса, положение ног, угловое положение приводов), данных с IMU и энкодеров в сочленениях ног, формирует желаемые углы для сервоприводов.
bhi360_imu_node - читает данные с IMU BHI360 по USB HID и передает их по ROS и LCM-каналу. Основан на базе данного модуля.
radiolink_teleop - читает данные с джойстика RadioLink T8S по радиоканалу и преобразует их в задающие параметры для алгоритма локомоции, передавая их в виде сообщений ROS.
robogui - программа с графическим интерфейсом для запуска на внешнем компьютере. Предназначена для формирования команд роботу и для отслеживания текущего состояния.
cmd_commutator - принимает сообщения от всех включенных в данный момент задающих устройств (ПК, джойстики и т.д.), и выводит сообщения самого приоритетного из них. Поддерживает до четырех разных устройств.
power_bridge - осуществляет обмен данными с платой питания робота, взаимодействует с пьезодинамиком, светодиодами и кнопками.
status_tracker - задает действие в соответсвии нажатой кнопки: кнопка экстренного торможения - сброс питания пользовательская кнопка - переход в режим переноски
servo_state_lcm2ros - преобразует сообщения о состоянии сервоприводов из LCM в ROS.
robot_state_publisher - стандартный ROS-модуль. Необходим для преобразования данных о состоянии робота в tf2, который затем может использоваться пакетом rviz для графического отображения положения робота.
plotjuggler - программный пакет с открытым исходным кодом, поддерживает ROS и предназначен для построения графиков в реальном времени.
Более подробно о каждом блоке и его параметрах, топиках и сервисах можно почитать в раделах ROS-топики, ROS-пакеты, ROS-сервисы, LCM-каналы.