TransformStamped

Создайте сообщение преобразования

Описание

The TransformStamped объект является реализацией geometry_msgs/TransformStamped тип сообщения в ROS. Объект содержит мета-информацию о самом сообщении и преобразовании. Преобразование имеет поступательный и вращательный компонент.

Создание

Описание

пример

tform = getTransform(tftree,targetframe,sourceframe) возвращает последнее известное преобразование между двумя системами координат. Преобразования структурированы как 3-D перемещение (3-элементный вектор) и 3-D вращение (кватернион).

Свойства

расширить все

Это свойство доступно только для чтения.

Тип сообщения ROS, возвращенный как вектор символов.

Типы данных: char

Это свойство доступно только для чтения.

Сообщение заголовка ROS, возвращенное как Header объект. Это сообщение заголовка содержит MessageType, последовательность (Seq), временная метка (Stamp), и FrameId.

Вторая система координат координат для преобразования точки в, заданный как вектор символов.

Это свойство доступно только для чтения.

Сообщение преобразования, заданное как Transform объект. Объект содержит MessageType с Translation вектор и Rotation кватернион.

Функции объекта

applyПреобразуйте сущности сообщения в целевую систему координат

Примеры

свернуть все

Этот пример рассматривает TransformStamped объект, чтобы показать базовую структуру TransformStamped Сообщение ROS. После настройки сети и преобразований можно создать дерево преобразований и получить преобразования между определенными системами координат. Использование showdetails позволяет просматривать информацию о преобразовании. Он содержит ChildFrameId, Header, и Transform.

Запустите сеть ROS и настройте преобразования.

rosinit
Launching ROS Core...
Done in 0.81999 seconds.
Initializing ROS master on http://192.168.0.10:52091.
Initializing global node /matlab_global_node_10080 with NodeURI http://bat6315glnxa64:42943/
exampleHelperROSStartTfPublisher

Создайте дерево преобразования и дождитесь обновления дерева. Получите преобразование между основой робота и ее центром камеры.

tftree = rostf;
waitForTransform(tftree,'camera_center','robot_base');
tform = getTransform(tftree,'camera_center','robot_base');

Осмотрите TransformStamped объект.

showdetails(tform)
  Header          
    Stamp      
      Sec  :  1622228442
      Nsec :  578808864
    Seq     :  0
    FrameId :  camera_center
  Transform       
    Translation    
      X :  0.5
      Y :  0
      Z :  -1
    Rotation       
      X :  0
      Y :  -0.7071067811865476
      Z :  0
      W :  0.7071067811865476
  ChildFrameId :  robot_base

Доступ к Translation вектор внутри Transform свойство.

trans = tform.Transform.Translation
trans = 
  ROS Vector3 message with properties:

    MessageType: 'geometry_msgs/Vector3'
              X: 0.5000
              Y: 0
              Z: -1.0000

  Use showdetails to show the contents of the message

Остановите издатель преобразования примера.

exampleHelperROSStopTfPublisher

Завершите работу сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_10080 with NodeURI http://bat6315glnxa64:42943/
Shutting down ROS master on http://192.168.0.10:52091.

Применить преобразование из TransformStamped объект в PointStamped сообщение.

Запустите сеть ROS и настройте преобразования.

rosinit
Launching ROS Core...
Done in 0.76826 seconds.
Initializing ROS master on http://192.168.0.10:54161.
Initializing global node /matlab_global_node_25282 with NodeURI http://bat6315glnxa64:35713/
exampleHelperROSStartTfPublisher

Создайте дерево преобразования и дождитесь обновления дерева. Получите преобразование между основой робота и ее центром камеры. Осмотрите преобразование.

tftree = rostf;
waitForTransform(tftree,'camera_center','robot_base');
tform = getTransform(tftree,'camera_center','robot_base');
showdetails(tform)
  Header          
    Stamp      
      Sec  :  1622228083
      Nsec :  411312213
    Seq     :  0
    FrameId :  camera_center
  Transform       
    Translation    
      X :  0.5
      Y :  0
      Z :  -1
    Rotation       
      X :  0
      Y :  -0.7071067811865476
      Z :  0
      W :  0.7071067811865476
  ChildFrameId :  robot_base

Создайте точку для преобразования. Вы также можете получить сообщение этой точки из сети ROS.

pt = rosmessage('geometry_msgs/PointStamped');
pt.Header.FrameId = 'camera_center';
pt.Point.X = 3;
pt.Point.Y = 1.5;
pt.Point.Z = 0.2;

Применить преобразование к точке.

tfpt = apply(tform,pt);

Завершите работу сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_25282 with NodeURI http://bat6315glnxa64:35713/
Shutting down ROS master on http://192.168.0.10:54161.
Введенный в R2019b