Глава 6. Диагностика робота

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

  • уровень заряда батареи как для робота, так и для бортового компьютера (например, аккумулятор ноутбука)

  • ток, потребляемый приводными двигателями (во избежание перегрузки)

  • температура и нагрузки на суставы (чтобы избежать поджаривания сервоприводов)

Это зависит от аппаратного драйвера для данного устройства, чтобы прочитать необработанные значения этих переменных. Но нам нужен способ представления значений с использованием стандартного типа сообщения, чтобы другие узлы ROS могли отслеживать их, не беспокоясь о базовом драйвере и единицах измерения

С этой целью ROS предоставляет diagnostics stack (диагностический стек) для сбора и обобщения данных от датчиков и исполнительных механизмов, которые могут быть использованы для выявления потенциальных проблем. Ключевые компоненты стека диагностики включают тип сообщения о состоянии диагностики (DiagnosticStatus), API-интерфейс diagnostic_updater, diagnostic_aggregator и analyzer configuration file. API позволяет нам преобразовывать необработанные значения датчиков в массив DiagnosticStatus, который затем публикуется в виде сообщения DiagnosticArray в разделе /diagnostics. Категории diagnostic_aggregator и организует эти сообщения в иерархическое дерево, как указано в одном или нескольких файлах конфигурации анализатора, и публикует результат в разделе /diagnostics_agg. Утилита rqt_robot_monitor подписывается на тему /diagnostics_agg и отображает состояние всех отслеживаемых компонентов отображается в графической форме с цветовой кодировкой, что позволяет легко обнаружить проблему или перейти к более детальному представлению данного компонента.

Вы также можете написать свои собственные узлы, которые могут подписаться на топики /diagnostics или /diagnostics_agg, чтобы отслеживать состояние различных компонентов и действовать соответствующим образом, когда что-то находится в проблемном положении.

В некоторых случаях драйверы ROS для используемого вами оборудования уже публикуют диагностическую информацию в топике /diagnostics; затем вы можете просто подписаться на топики /diagnostics, чтобы использовать информацию в своих собственных узлах, или использовать rqt_robot_monitor для визуальной проверки диагностической информации. В других случаях вам может потребоваться написать свой собственный драйвер для публикации требуемой диагностической информации. Или, если драйвер уже существует, но данные еще не представлены в виде диагностического сообщения ROS, вам нужно будет соответствующим образом преобразовать его, как мы покажем далее в этой главе.

Мы начнем с предположения, что необходимая нам информация уже опубликована в топике /diagnostics одним или несколькими узлами. В следующем разделе мы опишем, как написать свой diagnostics publisher к вашим собственным аппаратным драйверам.

Last updated