Для развернутого узла ROS можно включить обнаружение переполнения. Как развернуть узел ROS из Simulink®, см. «Генерация автономного узла ROS из Simulink ®».
Переполнение происходит, когда развернутая модель Simulink все еще обрабатывает последний шаг, но запрашивается следующий шаг.
Когда вы активируете обнаружение переполнения, развернутый узел ROS уведомляет пользователя через ROS_ERROR
механизм логгирования (см. ROS Logging). Ошибка выводится в командную строку консоли ROS. Чтобы включить обнаружение переполнения во времени ROS:
На вкладке Apps, в разделе Control Systems, нажмите Robot Operating System (ROS).
В открывшемся Robot Operating System (ROS) окне выберите Robot Operating System (ROS)
из раскрывающегося списка ROS Network. Это открывает вкладку ROS на панели инструментов, которая показывает указанную сеть ROS в Connect разделе.
В разделе Prepare под вкладкой ROS нажмите Hardware Settings, чтобы открыть диалоговое окно параметров конфигурации модели. В разделе Hardware board settings > Operating system/scheduler settings > Operating system options выберите Detect task overruns.
После включения Detect task overruns можно заново построить и развернуть модель. При запуске узла ROS модель ожидает публикации времени ROS. При обнаружении переполнения в командную строку консоли ROS выводится ошибка, записанная в файле журнала и опубликованная через /rosout
. Типичная ошибка:
[ERROR [1518780859.389633256, 214281.990000000]: !!! Overrun 1 !!!
Модель продолжает выполняться, когда предыдущий шаг заканчивается, и ожидает следующего временного шага.
Когда возникает условие переполнения, можно исправить его с помощью одного из следующих подходов:
Упростите модель
Увеличьте шаги расчета для модели и блоков в ней. Например, измените параметр Sample time во всех исходных блоках данных с 0.1
на 0.2
.