> For the complete documentation index, see [llms.txt](https://voltbro.gitbook.io/robot-sobaka-mors/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://voltbro.gitbook.io/robot-sobaka-mors/ustroistvo-robota/ros-pakety/mors_hardware/status_tracker.md).

# status\_tracker

Пакет status\_tracker наблюдает за состоянием питания и кнопок на роботе, и, в случае необходимости, управляет светодиодной подсветкой кнопок и блокирует другие ноды.  Его логика работы следующая:

* если нажата красная кнопка экстренного прекращения работы, то он блокирует работу нод locomotion\_controller и radiolink\_teleop
* если нажата пользовательская кнопка (слева от кнопки питания), то робот переходит в режим переноски. Он тоже блокирует работу нод  locomotion\_controller и radiolink\_teleop, но при этом подает на электродвигатели Kp=0 и Kd=0.7, благодаря чему движения приводов становятся "вязкими" и ноги не падают, когда вы переносите робота.

## ROS API

ROS API состоит из вызова сервисов,  входящих и исходящих топиков.

### Входящие топики

* /power/buttons (power\_bridge/PowerButtons) - получает информацию о нажатых пользовательской кнопки и кнопки экстренного прекращения работы

### Исходящие топики

Здесь описываются названия топиков, которые установлены в пакете по умолчанию.

* /disable (std\_msgs/Bool) - если True, то блокирует всех, кто на него подписан. В данном случае блокируются ноды locomotion\_controller и radiolink\_teleop
* /hmi\_beeper (power\_bridge/HMIBeeper) - управляет пищалкой в роботе
* /hmi\_led (/power\_bridge/HMILed) - управляет светодиодом на кнопке питания

### Вызываемые сервисы

* robot\_mode (QuadrupedCmd) - переключение между режимами управления роботом: шагание/корпус/ступни/сочленения)
* joints\_kp (JointsCmd) - задает массив пропорциональных коэффициентов для сервоприводов.
* joints\_kd (JointsCmd) - задает массив дифференциальных коэффициентов для сервоприводов.
