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
    {'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
Launching ROS Core...
................................Done in 1.2488 seconds.
Initializing ROS master on http://192.168.0.10:60181.
Initializing global node /matlab_global_node_30695 with NodeURI http://bat1072001glnxa64:37239/
node = ros.Node('/testTf');
Using Master URI http://localhost:60181 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
    {'camera_center' }
    {'mounting_point'}
    {'robot_base'    }

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

     Sec: 1.6058e+09
    Nsec: 336644277

Ожидайте преобразования между двумя системами, '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_30695 with NodeURI http://bat1072001glnxa64:37239/
Shutting down ROS master on http://192.168.0.10:60181.
..........
Введенный в R2019b