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

ROS использует тип сообщения Twist (см. Подробности ниже) для публикации команд движения, которые будут использоваться базовым контроллером. Хотя для темы можно использовать практически любое имя, обычно оно называется / cmd_vel, что сокращенно от «скорости команд». Узел базового контроллера подписывается на тему / cmd_vel и преобразует сообщения Twist в сигналы двигателя, которые фактически вращают колеса.

Чтобы увидеть компоненты сообщения 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 градусам.)

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

Last updated