rosrate

Выполните цикл в фиксированной частоте

Описание

rosrate возразите использует rateControl (Robotics System Toolbox) суперкласс, чтобы наследовать большинство его свойств и методов. Основным различием является тот rateControl использует узел ROS в качестве источника для получения информации времени. Поэтому это может использовать симуляцию ROS, или стенка показывают время (см. IsSimulationTime свойство.

Если rosinit создает ведущее устройство ROS в MATLAB®, глобальная стенка использования узла показывают время.

Эффективность rosrate возразите и способность обеспечить DesiredRate значение зависит от публикации информации о часах в ROS.

Совет

Разрешение планирования вашей операционной системы и уровень другого системного действия могут влиять на точность выполнения уровня. В результате точная синхронизация уровня ограничивается 100 Гц для подписания кода MATLAB. Чтобы улучшать скорости производительности и выполнения, используйте генерацию кода.

Создание

Описание

пример

rate = rosrate(desiredRate) создает Rate объект, который позволяет вам выполнить цикл в фиксированной частоте, DesiredRate. Источник времени соединяется с источником времени глобального узла ROS, который требует, чтобы вы соединили MATLAB с использованием сети ROS rosinit.

пример

rate = ros.Rate(node,desiredRate) создает Rate объект, который работает циклами с фиксированной процентной ставкой на основе источника времени, соединенного с заданным узлом ROS, node.

Свойства

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

Желаемый уровень выполнения цикла в виде скаляра в герц. При использовании waitfor, цикл управляет каждым DesiredRate секунды, если цикл не занимает больше времени. Это затем начинает следующий цикл на основе заданного OverRunAction.

Желаемый период времени между выполнением в виде скаляра в секундах. Это свойство равно инверсии DesiredRate.

Прошедшее время начиная с конструкции или сброса в виде скаляра в секундах.

Прошедшее время между последними двумя вызовами waitforВ виде скаляра. По умолчанию, LastPeriod установлен в NaN до waitfor называется впервые. После первого вызова, LastPeriod равняется TotalElapsedTime.

Метод для обработки переполнений в виде одного из этих векторов символов:

  • 'drop' — ожидает до следующего временного интервала, равного кратному DesiredPeriod

  • 'slip' — сразу выполняет цикл снова

Каждая секция кода вызовы waitfor (Robotics System Toolbox) в конце выполнения.

Индикатор, если симуляция или стенка показывают время, используется, возвращается как true или false. Если true, Rate объект использует время симуляции ROS, чтобы отрегулировать уровень выполнения цикла.

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

waitforПриостановите выполнение кода, чтобы достигнуть желаемого уровня выполнения
statisticsСтатистика прошлых периодов выполнения
resetСбросьте Rate объект

Примеры

свернуть все

Инициализируйте ведущее устройство ROS и узел.

rosinit
Launching ROS Core...
Done in 0.88749 seconds.
Initializing ROS master on http://192.168.0.10:53275.
Initializing global node /matlab_global_node_74826 with NodeURI http://bat1071901glnxa64:42045/

Создайте объект уровня, который достигает 1 Гц.

r = rosrate(1);

Запустите цикл, который распечатывает итерацию, и время протекло. Используйте waitfor приостановить цикл до следующего временного интервала. Сбросьте r до выполнения цикла. Заметьте, что каждая итерация выполняется в 1 втором интервале.

reset(r)
for i = 1:10
	time = r.TotalElapsedTime;
	fprintf('Iteration: %d - Time Elapsed: %f\n',i,time)
	waitfor(r);
end
Iteration: 1 - Time Elapsed: 0.003384
Iteration: 2 - Time Elapsed: 1.002043
Iteration: 3 - Time Elapsed: 2.000809
Iteration: 4 - Time Elapsed: 3.001471
Iteration: 5 - Time Elapsed: 4.002671
Iteration: 6 - Time Elapsed: 5.001428
Iteration: 7 - Time Elapsed: 6.000604
Iteration: 8 - Time Elapsed: 7.000977
Iteration: 9 - Time Elapsed: 8.000451
Iteration: 10 - Time Elapsed: 9.000460

Закройте сеть ROS.

rosshutdown
Shutting down global node /matlab_global_node_74826 with NodeURI http://bat1071901glnxa64:42045/
Shutting down ROS master on http://192.168.0.10:53275.

Инициализируйте ведущее устройство ROS и узел.

rosinit
Launching ROS Core...
Done in 0.83181 seconds.
Initializing ROS master on http://192.168.0.10:58292.
Initializing global node /matlab_global_node_17006 with NodeURI http://bat1071901glnxa64:35915/
node = ros.Node('/testTime');
Using Master URI http://localhost:58292 from the global node to connect to the ROS master.

Создайте ros.Rate объект, достигающий 20 Гц.

r = ros.Rate(node,20);

Сбросьте объект перезапустить таймер и запустить цикл для 30 итераций. Введите код, который вы хотите запустить в цикле прежде, чем вызвать waitfor.

reset(r)
for i = 1:30
	% User code goes here.
	waitfor(r);
end

Закройте узел ROS.

rosshutdown
Shutting down global node /matlab_global_node_17006 with NodeURI http://bat1071901glnxa64:35915/
Shutting down ROS master on http://192.168.0.10:58292.

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

Смотрите также

| (Robotics System Toolbox)

Введенный в R2019b