> 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_pc/robogui.md).

# robogui

Данный модуль является реализацией ПО с графическим пользовательским интерфейсом Robogui. О том, как работать с самой программой, можно почитать в разделе [Графический интерфейс](/robot-sobaka-mors/nastroika-i-obsluzhivanie/graficheskii-interfeis.md).&#x20;

## ROS API

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

### Параметры

Файл параметров располагается в папке config

* general
  * frequency (по умолчанию: 40) - частота, на которой работает модуль
* cmd\_topics - название публикуемых топиков
  * cmd\_vel (по умолчанию: "gui/cmd\_vel") - топик для публикации желаемой скорости движения робота
  * cmd\_pose  (по умолчанию: "gui/cmd\_pose") - топик для публикации желаемых положения и ориентации корпуса&#x20;
  * cmd\_ef\_pose (по умолчанию: "gui/ef\_position/command") - топик для публикации желаемых положений ступней робота
  * cmd\_joint\_pose (по умолчанию: "gui/joint\_group\_position\_controlle/command") - топик для публикации желаемых угловых положений сервоприводов&#x20;
  * status (по умолчанию: "gui/status") - топик для публикации готовности программы к работе
* state\_topics - названия для входящих топиков
  * cur\_device (по умолчанию: "cur\_device") - имя топика с информацией о текущем подключенном наиболее приоритетном устройстве
  * joint\_state (по умолчанию: "joint\_states") - имя топика для получения информации о состоянии сочленений
  * imu\_data (по умолчанию: "imu/data") - имя топика для получения информации о состоянии IMU
  * temperature\_data (по умолчанию: "imu/temp") - имя топика для получения информации о температуре IMU
  * cmd\_vel (по умолчанию: "cmd\_vel") - топик для получения информации о желаемой скорости движения робота
  * cmd\_pose  (по умолчанию: "cmd\_pose") - топик для получения информации о публикации желаемых положения и ориентации корпуса&#x20;
  * cmd\_ef\_pose (по умолчанию: "ef\_position/command") - топик для получения информации о желаемых положений ступней робота
  * cmd\_joint\_pose (по умолчанию: "joint\_group\_position\_controlle/command") - топик для получения информации о желаемых угловых положений сервоприводов&#x20;
  * ef\_pose (по умолчанию: "ef\_position/states") - топик для получения информации о текущих положения ступней ног
  * ll\_cmd\_joint\_pos (по умолчанию: "lcm/servo\_cmd") - топик для получения информации о том, какие команды отправляются на аппаратный уровень по протоколу LCM
* gait - параметры для передвижения робота&#x20;
  * max\_speed\_x (по умолчанию: 0.3) - максимальная желаемая скорость по оси X&#x20;
  * max\_speed\_y (по умолчанию: 0.2) - максимальная желаемая скорость по оси Y&#x20;
  * max\_speed\_z (по умолчанию: 0.8)  - максимальный радиус поворота вокруг оси Z
* pose - параметры для желаемых положений корпуса робота&#x20;
  * max\_angle\_x (по умолчанию: 0.33) - максимально возможный угол поворота по крену&#x20;
  * max\_angle\_y (по умолчанию: 0.33) - максимально возможный угол поворота по тангажу&#x20;
  * max\_angle\_z (по умолчанию: 0.33)  - максимально возможный угол рысканья
  * max\_lin\_x (по умолчанию: 0.1) - максимально возможное смещение корпуса по оси X
  * max\_lin\_y (по умолчанию: 0.1) - максимально возможное смещение корпуса по оси Y&#x20;
  * max\_lin\_z (по умолчанию: 0.1) - максимально возможное смещение корпуса по оси Z в положительном направлении
  * min\_lin\_z (по умолчанию: 0.15) - максимально возможное смещение корпуса по оси Z в отрицательном направлении
* ef - параметры для желаемых положений ступней робота
  * max\_pos\_x (по умолчанию: 0.05) - максимально возможное смещение ступни по оси X
  * max\_pos\_y (по умолчанию: 0.05) - максимально возможное смещение ступни по оси Y&#x20;
  * max\_pos\_z (по умолчанию: 0.05) - максимально возможное смещение ступни по оси Z в положительном направлении
  * min\_pos\_z (по умолчанию: 0.05) - максимально возможное смещение ступни по оси Z в отрицательном направлении
* joints - параметры для желаемых угловых положений сочленений робота&#x20;
  * max\_abad (по умолчанию: 1.57) -  максимальный угол отклонения плечевых сочленений
  * max\_hip (по умолчанию: 1.57) - максимальный угол отклонения бедренных сочленений
  * max\_knee (по умолчанию: 1.57) - максимальный угол отклонения коленных сочленений
  * max\_vel (по умолчанию: 5.0) - максимальная скорость сочленений
  * max\_torq (по умолчанию: 5.0) - максимальный момент сочленений
  * max\_kp (по умолчанию: 24.0) - максимальное значение пропорционального коэффициента обратной связи
  * max\_kd (по умолчанию: 1.0) - максимальное значение дифференциального коэффициента обратной связи
* modes - параметры режимов робота
  * walk (по умолчанию: 0) - какой номер присваивается режиму шагания
  * ef (по умолчанию: 1) - какой номер присваивается режиму перемещения ноги
  * body (по умолчанию: 2) - какой номер присваивается режиму перемешения корпуса
  * joint (по умолчанию: 3) - какой номер присваивается режиму вращения сочленений

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

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

* gui/cmd\_vel ([geometry\_msgs/Twist](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/Twist.html)) - желаемая скорость перемещения робота
* gui/cmd\_pose ([geometry\_msgs/Twist](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/Twist.html)) - желаемые положения и ориентация корпуса робота
* gui/ef\_position/command ([geometry\_msgs/PoseArray](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/PoseArray.html)) - желаемые положения ступней ног робота
* gui/joint\_group\_position\_controlle/command ([trajectory\_msgs/JointTrajectoryPoint](https://docs.ros.org/en/noetic/api/trajectory_msgs/html/msg/JointTrajectoryPoint.html)) - желаемое угловое положение сочленений робота
* gui/status ([std\_msgs/Bool](https://docs.ros.org/en/noetic/api/std_msgs/html/msg/Bool.html)) - статус готовности программы к работе

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

* cur\_device ([std\_msgs/UInt8](https://docs.ros.org/en/melodic/api/std_msgs/html/msg/UInt8.html)) - текущее подключенное устройство. 1 - Dualshock 4, 2 - Radiolink T8S, 3 - модуль навигации, 4 - Robogui, 0 - ни одного устройства.&#x20;
* joint\_states ([sensor\_msgs/JointState](https://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/JointState.html)) - состояние всех электроприводов робота (угол, скорость момент)
* imu/data ([sensor\_msgs/Imu](http://docs.ros.org/api/sensor_msgs/html/msg/Imu.html)) - данные с IMU (линейное ускорение, угловая скорость, ориентация)
* imu/temp ([sensor\_msgs/Temperature](http://docs.ros.org/api/sensor_msgs/html/msg/Temperature.html)) - температура IMU
* cmd\_vel ([geometry\_msgs/Twist](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/Twist.html)) - желаемая скорость перемещения робота
* cmd\_pose ([geometry\_msgs/Twist](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/Twist.html)) - желаемые положения и ориентация корпуса робота
* ef\_position/command ([geometry\_msgs/PoseArray](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/PoseArray.html)) - желаемые положения стоп робота
* joint\_group\_position\_controlle/command ([trajectory\_msgs/JointTrajectoryPoint](https://docs.ros.org/en/noetic/api/trajectory_msgs/html/msg/JointTrajectoryPoint.html)) - желаемое угловое положение сочленений робота
* ef\_position/states ([geometry\_msgs/PoseArray](https://docs.ros.org/en/melodic/api/geometry_msgs/html/msg/PoseArray.html)) - текущее положение ступней ног робота
* lcm/servo\_cmd ([trajectory\_msgs](https://docs.ros.org/en/noetic/api/trajectory_msgs/html/index-msg.html)[/JointTrajectoryPoint](https://docs.ros.org/en/noetic/api/trajectory_msgs/html/msg/JointTrajectoryPoint.html)) - команды на сервоприводы, отправляемые на аппаратный уровень по протоколу LCM

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

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