rostf

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

Описание

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

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

tfTree.AvailableFrames

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

Создание

Синтаксис

tfTree = rostf
trtree = robotics.ros.TransformationTree(node)

Описание

пример

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

пример

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

Свойства

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

rosinit('192.168.203.129')
Initializing global node /matlab_global_node_92595 with NodeURI http://192.168.203.1:64550/

Создайте дерево преобразования. Используйте свойство 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'        }
    {'pole_top_0_link'           }
    {'pole_top_1_link'           }
    {'pole_top_2_link'           }
    {'pole_top_3_link'           }
    {'wheel_left_link'           }
    {'wheel_right_link'          }

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

rosshutdown
Shutting down global node /matlab_global_node_92595 with NodeURI http://192.168.203.1:64550/

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

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

rosinit
Initializing ROS master on http://ah-sradford:11311/.
Initializing global node /matlab_global_node_75001 with NodeURI http://ah-sradford:52256/
node = robotics.ros.Node('/testTf');
Using Master URI http://localhost:11311 from the global node to connect to the ROS master.
exampleHelperROSStartTfPublisher

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

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

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

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

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

     Sec: 1.5121e+09
    Nsec: 262000000

Ожидайте преобразования между двумя кадрами, '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: [1×1 Header]
          Point: [1×1 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_75001 with NodeURI http://ah-sradford:52256/
Shutting down ROS master on http://ah-sradford:11311/.

Представленный в R2015a