rostf

Получите, отправьте и примените преобразования ROS

Описание

Вызов rostf функция создает TransformationTree ROS объект, который позволяет вам получать доступ к tf, координирует преобразования, которые совместно используются в сети ROS. Можно получить преобразования и применить их к различным сущностям. Можно также отправить преобразования и совместно использовать их с остальной частью сети ROS.

ROS пользуется tf, преобразовывают библиотеку, чтобы отслеживать отношение между несколькими координатными системами координат. Относительные преобразования между этими координатными системами координат обеспечены в древовидной структуре. Запрос этого дерева позволяет вам преобразовать сущности как положения и точки между любыми двумя координатными системами координат. Чтобы получить доступ к доступным системам координат, используйте синтаксис:

tfTree.AvailableFrames

Используйте ros.TransformationTree синтаксис при соединении с определенным узлом ROS, в противном случае используйте rostf создать дерево преобразования.

Создание

Описание

пример

tfTree = rostf создает TransformationTree ROS объект.

пример

trtree = ros.TransformationTree(node) создает указатель на объект дерева преобразования ROS, к которому присоединено дерево преобразования. node узел, соединенный с сетью ROS, которая публикует преобразования.

Свойства

развернуть все

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

Список всех доступных координатных систем координат, заданных как массив ячеек. Этот список доступных систем координат обновляется, если новые преобразования получены объектом дерева преобразования.

Пример: {'camera_center';'mounting_point';'robot_base'}

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

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

Время, когда последнее преобразование было получено, задало как Time ROS объект.

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

Преобразования отрезка времени буферизованы, заданы как скаляр в секундах. Если вы изменяете буферное время от текущего значения, дерево преобразования и все преобразования повторно инициализируются. Необходимо ожидать в течение целого буферного времени, которое будет завершено, чтобы получить полностью буферизированное дерево преобразования.

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

waitForTransformОжидайте, пока преобразование не доступно
getTransformПолучите преобразование между двумя координатными системами координат
transformПреобразуйте сущности сообщения в целевую координатную систему координат
sendTransformОтправьте преобразование в сеть ROS

Примеры

свернуть все

Соединитесь с сетью ROS и создайте дерево преобразования.

Соединитесь с сетью ROS. Задайте IP-адрес.

rosinit('192.168.17.129')
Initializing global node /matlab_global_node_20832 with NodeURI http://192.168.17.1:55526/

Создайте дерево преобразования. Используйте AvailableFrames свойство видеть доступные системы координат преобразования. Эти преобразования были заданы отдельно до соединения с сетью.

tree = rostf;
pause(1);
tree.AvailableFrames
ans = 36×1 cell array
    {'base_footprint'            }
    {'base_link'                 }
    {'camera_depth_frame'        }
    {'camera_depth_optical_frame'}
    {'camera_link'               }
    {'camera_rgb_frame'          }
    {'camera_rgb_optical_frame'  }
    {'caster_back_link'          }
    {'caster_front_link'         }
    {'cliff_sensor_front_link'   }
    {'cliff_sensor_left_link'    }
    {'cliff_sensor_right_link'   }
    {'gyro_link'                 }
    {'mount_asus_xtion_pro_link' }
    {'odom'                      }
    {'plate_bottom_link'         }
    {'plate_middle_link'         }
    {'plate_top_link'            }
    {'pole_bottom_0_link'        }
    {'pole_bottom_1_link'        }
    {'pole_bottom_2_link'        }
    {'pole_bottom_3_link'        }
    {'pole_bottom_4_link'        }
    {'pole_bottom_5_link'        }
    {'pole_kinect_0_link'        }
    {'pole_kinect_1_link'        }
    {'pole_middle_0_link'        }
    {'pole_middle_1_link'        }
    {'pole_middle_2_link'        }
    {'pole_middle_3_link'        }
      ⋮

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_20832 with NodeURI http://192.168.17.1:55526/

Создайте дерево преобразования ROS. Можно затем просмотреть или использовать информацию о преобразовании в различной координатной настройке систем координат в сети ROS.

Запустите сеть ROS и широковещательно передайте демонстрационные данные о преобразовании.

rosinit
Initializing ROS master on http://bat6306glnxa64:37307/.
Initializing global node /matlab_global_node_45619 with NodeURI http://bat6306glnxa64:37829/
node = ros.Node('/testTf');
Using Master URI http://localhost:37307 from the global node to connect to the ROS master.
exampleHelperROSStartTfPublisher

Получите TransformationTree объект. Сделайте паузу, чтобы ожидать tftree обновляться.

tftree = ros.TransformationTree(node);
pause(1)

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

frames = tftree.AvailableFrames
frames = 3x1 cell array
    {'camera_center' }
    {'mounting_point'}
    {'robot_base'    }

updateTime = tftree.LastUpdateTime
updateTime = 
  ROS Time with properties:

     Sec: 1.5771e+09
    Nsec: 18000000

Ожидайте преобразования между двумя системами, 'camera_center' и 'robot_base'. Это будет ожидать, пока преобразование не допустимо, и блокируйте все другие операции. Время из 5 секунд также дано.

waitForTransform(tftree,'robot_base','camera_center',5)

Задайте точку в координатной системе координат камеры.

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

Преобразуйте точку в 'base_link' система координат.

tfpt = transform(tftree, 'robot_base', pt)
tfpt = 
  ROS PointStamped message with properties:

    MessageType: 'geometry_msgs/PointStamped'
         Header: [1x1 Header]
          Point: [1x1 Point]

  Use showdetails to show the contents of the message

Отобразите преобразованные координаты точки.

tfpt.Point
ans = 
  ROS Point message with properties:

    MessageType: 'geometry_msgs/Point'
              X: 1.2000
              Y: 1.5000
              Z: -2.5000

  Use showdetails to show the contents of the message

Очистите узел ROS. Закройте ведущее устройство ROS.

clear('node')
rosshutdown
Shutting down global node /matlab_global_node_45619 with NodeURI http://bat6306glnxa64:37829/
Shutting down ROS master on http://bat6306glnxa64:37307/.

Введенный в R2019b