> For the complete documentation index, see [llms.txt](https://thegreatadam12.gitbook.io/translate-book-part7/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://thegreatadam12.gitbook.io/translate-book-part7/7.3-skruchivanie-i-povorot-s-pomoshyu-ros.md).

# 7.3 Скручивание и поворот с помощью ROS

ROS использует тип сообщения [Twist](http://www.ros.org/doc/api/geometry_msgs/html/msg/Twist.html) (см. Подробности ниже) для публикации команд движения, которые будут использоваться базовым контроллером. Хотя для темы можно использовать практически любое имя, обычно оно называется / cmd\_vel, что сокращенно от «скорости команд». Узел базового контроллера подписывается на тему / cmd\_vel и преобразует сообщения Twist в сигналы двигателя, которые фактически вращают колеса.&#x20;

Чтобы увидеть компоненты сообщения Twist, выполните команду:

```
$ rosmsg show geometry_msgs/Twist
```

который даст следующий результат:

> ```
> geometry_msgs/Vector3 linear
>   float64 x
>   float64 y
>   float64 z
>   geometry_msgs/Vector3 angular
>   float64 x
>   float64 y
>   float64 z
> ```

Как видите, сообщение Twist состоит из двух вложенных сообщений с типом Vector3, одно для компонентов линейной скорости x, y и z, а другое для компонентов угловой скорости x, y и z. Линейные скорости указаны в метрах в секунду, а угловые скорости - в радианах в секунду. (1 радиан равен приблизительно 57 градусам.)&#x20;

Для робота с дифференциальным приводом, работающего в двухмерной плоскости (такой как пол), нам нужны только линейный компонент x и угловой компонент z. Это потому, что этот тип робота может двигаться только вперед / назад вдоль своей продольной оси и вращаться только вокруг своей вертикальной оси. Другими словами, линейные компоненты y и z всегда равны нулю (робот не может двигаться вбок или вертикально), а угловые компоненты x и y всегда равны нулю, поскольку робот не может вращаться вокруг этих осей. Всенаправленный робот также будет использовать линейный компонент y, в то время как летающий или подводный робот будет использовать все шесть компонентов.
