Обнаружение переполнения с помощью развернутых узлов ROS

Для развернутого узла ROS можно включить обнаружение переполнения. Как развернуть узел ROS из Simulink®, см. «Генерация автономного узла ROS из Simulink ®».

Переполнение происходит, когда развернутая модель Simulink все еще обрабатывает последний шаг, но запрашивается следующий шаг.

Когда вы активируете обнаружение переполнения, развернутый узел ROS уведомляет пользователя через ROS_ERROR механизм логгирования (см. ROS Logging). Ошибка выводится в командную строку консоли ROS. Чтобы включить обнаружение переполнения во времени ROS:

  1. На вкладке Apps, в разделе Control Systems, нажмите Robot Operating System (ROS).

  2. В открывшемся Robot Operating System (ROS) окне выберите Robot Operating System (ROS) из раскрывающегося списка ROS Network. Это открывает вкладку ROS на панели инструментов, которая показывает указанную сеть ROS в Connect разделе.

  3. В разделе 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.

См. также

|

Похожие темы