Программное обеспечение

На изображении представлена архитектура ПО робота, которое загружается при старте системы. Управление локомоцией осуществляется на базе ROS. Взаимодействие с сервоприводами происходит по протоколу LCM.

На схеме синим показаны стрелки, обозначающие ROS-топики, зеленым - каналы LCM. Красные блоки подразумевают аппаратную часть робота, синие - программные модули.

Программа управления передвижением полностью выполняется на бортовом компьютере робота. Внешний компьютер может служить для установки желаемых параметров, отслеживания состояния робота, либо для выполнения дополнительных алгоритмов.

Программное обеспечение имеет следующие блоки:

  1. locomotion_controller - выполняет алгоритм локомоции. На основе желаемых параметров (скорость, положение корпуса, положение ног, угловое положение приводов), данных с IMU и энкодеров в сочленениях ног, формирует желаемые углы для сервоприводов.

  2. bhi360_imu_node - читает данные с IMU BNO055 по UART и передает их по ROS и LCM-каналу. Основан на базе данного модуля.

  3. radiolink_teleop - читает данные с джойстика RadioLink T8S по радиоканалу и преобразует их в задающие параметры для алгоритмы локомоции, передавая их в виде сообщений ROS.

  4. robogui - программа с графическим интерфейсом для запуска на внешнем компьютере. Предназначена для формирования команд робота и для отслеживания текущего состояния.

  5. cmd_commutator - принимает сообщения от всех включенных в данный момент задающих устройств (ПК, джойстики и т.д.), и выводит сообщения самого приоритетного из них. Поддерживает до четырех разных устройств.

  6. power_bridge - осуществляет обмен данными с платой питания робота, взаимодействует с пьезодинамиком, светодиодами и кнопками.

  7. status_tracker - определяет, что делать в случае нажатия на кнопки: сбрасывать питание на двигателях при нажатии кнопки экстренного торможения и переходить в режим переноски при нажатии на пользовательскую кнопку

  8. servo_state_lcm2ros - преобразует сообщения о состоянии сервоприводов из LCM в ROS.

  9. robot_state_publisher - стандартный ROS-модуль. Необходим для преобразования данных о состоянии робота в tf2, который затем может использоваться пакетом rviz для графического отображения положения робота.

  10. plotjuggler - программный пакет с открытым исходным кодом, поддерживает ROS и предназначен для построения графиков в реальном времени.

Более подробно о каждом блоке и его параметрах, топиках и сервисах можно почитать в раделах ROS-топики, ROS-пакеты, ROS-сервисы, LCM-каналы.

Last updated