rostime

Доступ к функциям времени ROS

Описание

A ROS- Time сообщение представляет образец времени в секундах и наносекундах. Это время может быть основано на вашем системном времени, времени симуляции ROS или произвольном моменте времени.

Создание

Описание

time = rostime(totalSecs) инициализирует значения времени для секунд и наносекунд на основе totalSecs, которое представляет время в секундах как число с плавающей запятой.

Примечание

В следующем релизе ROS Toolbox будет использовать структуры сообщений вместо объектов для сообщений ROS.

Чтобы использовать структуры сообщений, установите "DataFormat" аргумент имя-значение в "struct". Для получения дополнительной информации см. раздел Структуры сообщений ROS.

time = rostime(secs,nsecs) инициализирует значения времени для секунд и наносекунд по отдельности. Оба входов должны быть целыми числами. Большие значения для nsecs автоматически упаковываются с добавлением остатка в secs.

time = rostime("now") возвращает текущее время ROS. Если на use_sim_time Параметр ROS установлен в true, rostime возвращает время симуляции, опубликованное на clock тема. В противном случае функция возвращает системное время вашей машины. The time является ROS- Time объект. Если выходной аргумент не задан, текущее время (в секундах) выводится на экран.

The rostime может использоваться для меток времени или для измерения времени в сети ROS.

пример

[time,issimtime] = rostime("now") также возвращает логическое значение, указывающее, time находится во времени симуляции (true) или системное время (false).

пример

time = rostime("now","system") всегда возвращает системное время вашей машины, даже если ROS публикует время симуляции на clock тема. Если выходной аргумент не задан, системное время (в секундах) выводится на экран.

Системное время в ROS соответствует стандарту UNIX или POSIX. Время POSIX определяется как время, прошедшее с 00:00:00 Согласованное универсальное время (UTC), 1 января 1970 года, не считая високосных секунд.

пример

time = rostime(___,"DataFormat","struct") использует структуры сообщений вместо объектов с любым из аргументов в предыдущих синтаксисах. Для получения дополнительной информации см. раздел Структуры сообщений ROS.

Свойства

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

Общее время, заданное как скаляр с плавающей точкой. Целочисленный фрагмент установлен в Sec свойство с оставшейся частью, примененной к Nsec свойство Time объект.

Целые секунды, заданные как положительное целое число.

Примечание

Максимальное и минимальное значения для secs являются [0, 4294967294].

Наносекунды, заданные как положительное целое число. Это значение больше или равно 109, затем значение оборачивается и остатки добавляются к значению Sec.

Формат сообщения, заданный как "object" или "struct". Вы должны задать это свойство при создании с помощью входов name-value. Для получения дополнительной информации см. раздел Структуры сообщений ROS.

Примеры

свернуть все

Подключение к сети ROS.

rosinit
Launching ROS Core...
...Done in 4.0108 seconds.
Initializing ROS master on http://192.168.203.1:54077.
Initializing global node /matlab_global_node_06022 with NodeURI http://ah-sradford:55528/

Получите текущее время ROS как структуру сообщения ROS. Можно также проверить, является ли это системным временем, получив issim выход.

[t,issim] = rostime('now','DataFormat','struct')
t = struct with fields:
     Sec: 1606921641
    Nsec: 223781600

issim = logical
   0

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

rosshutdown
Shutting down global node /matlab_global_node_06022 with NodeURI http://ah-sradford:55528/
Shutting down ROS master on http://192.168.203.1:54077.

Инициализация сети ROS.

rosinit
Launching ROS Core...
...Done in 3.8149 seconds.
Initializing ROS master on http://192.168.203.1:56458.
Initializing global node /matlab_global_node_61113 with NodeURI http://ah-sradford:57406/

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

point = rosmessage('geometry_msgs/PointStamped','DataFormat','struct');
point.Header.Stamp = rostime('now','system','DataFormat','struct');

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

rosshutdown
Shutting down global node /matlab_global_node_61113 with NodeURI http://ah-sradford:57406/
Shutting down ROS master on http://192.168.203.1:56458.

В этом примере показано, как преобразовать текущее время ROS в стандартное время MATLAB ®. Объект ROS Time сначала преобразуется в double в секундах, затем в указанное время MATLAB.

Настройте сеть ROS и сохраните время ROS в качестве сообщения о структуре.

rosinit
Launching ROS Core...
...Done in 3.7844 seconds.
Initializing ROS master on http://192.168.203.1:57153.
Initializing global node /matlab_global_node_39117 with NodeURI http://ah-sradford:56074/
t = rostime('now','DataFormat','struct');

Преобразуйте ROS Time в double с помощью seconds и установите время в заданный формат MATLAB, datetime.

time = datetime(t.Sec + 10^-9*t.Nsec,'ConvertFrom','posixtime')
time = datetime
   02-Dec-2020 15:13:41

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

rosshutdown
Shutting down global node /matlab_global_node_39117 with NodeURI http://ah-sradford:56074/
Shutting down ROS master on http://192.168.203.1:57153.

Вопросы совместимости

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

Изменение поведения в будущем релизе

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

|

Введенный в R2019b