exponenta event banner

rostime

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

Описание

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

Создание

Описание

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

Примечание

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

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

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

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

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". Это свойство необходимо задать при создании с помощью ввода «имя-значение». Для получения дополнительной информации см. Структуры сообщений 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

Выключите сеть АФК.

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 сначала преобразуется в двойное значение в секундах, а затем в указанное время 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 в двойное с помощью 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++ с помощью MATLAB ® Coder™

.

См. также

|

Представлен в R2019b