Подглава 12.5 Понимание типа сообщения ROS JointState

Тип сообщения ROS Joint State предназначен для отслеживания всех шарниров робота. Как и во всех типах сообщений, мы можем отображать его поля с помощью команды rosmsg:

$ rosmsg show sensor_msgs/JointState

что должно привести к следующему результату:

Header header

uint32 seq

time stamp

string frame_id

string[] name

float64[] position

float64[] velocity

float64[] effort

Как вы можете видеть, сообщение JointState включает стандартный компонент заголовка ROS, состоящий из порядкового номера (seq), временной метки (stamp) и идентификатора frame_id. За этим следуют четыре массива: строковый массив под названием name для хранения названий шарниров, затем сервоприводы Dynamixel и три вещественных массива ROS - 225 для хранения положения, скорости и усилия (обычно крутящего момента) для каждого шарнира.

Теперь мы можем понять, почему сервоприводы Dynamixel хорошо подходят для ROS: а именно, мы можем запросить у каждого сервопривода его текущее положение, скорость и крутящий момент, которые являются именно теми данными,которые нам нужны для заполнения сообщения JointState. Как только мы выбрали аппаратный контроллер для сервоприводов Dynamixel, драйвер ROS для этого контроллера должен был бы публиковать состояния сервопривода в виде сообщения JointState в некотором топике. Этот топик обычно называется /joint_states, и другие узлы могут подписаться на него, чтобы узнать текущее состояние всех шарниров.

В то время как большинство шарниров, используемых на роботах, являются вращающимися, как сервоприводы, ROS может также иметь дело с линейными шарнирами, которые называются призматическими. Призматический шарнир может использоваться для перемещения туловища робота вверх и вниз, как на PR2, или для вытягивания или втягивания руки. В любом случае положение, скорость и крутящий момент призматического соединения могут быть заданы таким же образом, как и сервомоторное соединение, и поэтому ROS легко справляется с обоими.

Last updated