From ebeb3f58d614b6eb506e060b284969b74c1a8577 Mon Sep 17 00:00:00 2001 From: Alexey Rogachevskiy Date: Fri, 31 Jul 2020 16:25:44 +0300 Subject: [PATCH] docs/simulation_usage: Performance suggestions (#262) --- .../simulation_usage/05_real_time_factor.png | Bin 0 -> 3180 bytes .../06_gazebo_px4_launcher.png | Bin 0 -> 38066 bytes docs/en/simulation_usage.md | 40 ++++++++++++++++++ docs/ru/simulation_usage.md | 40 ++++++++++++++++++ 4 files changed, 80 insertions(+) create mode 100644 docs/assets/simulation_usage/05_real_time_factor.png create mode 100644 docs/assets/simulation_usage/06_gazebo_px4_launcher.png diff --git a/docs/assets/simulation_usage/05_real_time_factor.png b/docs/assets/simulation_usage/05_real_time_factor.png new file mode 100644 index 0000000000000000000000000000000000000000..7dcc084e52a2a06c6ea3bcd4895495a646355db0 GIT binary patch literal 3180 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 BenbEO literal 0 HcmV?d00001 diff --git a/docs/en/simulation_usage.md b/docs/en/simulation_usage.md index 84ecb778..e50f4974 100644 --- a/docs/en/simulation_usage.md +++ b/docs/en/simulation_usage.md @@ -47,3 +47,43 @@ If you wish to add additional sensors or change their placement, you will have t ### Changing the default world Gazebo plugins for the drone currently require the `real_time_update_rate` world parameter to be 250, and `max_step_size` to be 0.004. Using other values will not work. Consider using `~/catkin_ws/src/clover/clover_simulation/resources/worlds/clover.world` as a base. + +## Performance suggestions + +Gazebo simulation environment is resource-intensive, and requires a fast CPU and a decent GPU for real-time execution. However, the simulation may still work on less powerful systems at slower-than-realtime rate. Below are some suggestions for running Gazebo on hardware that does not allow realtime execution. + +### Use `throttling_camera` plugin + +By default, Gazebo does not slow simulation down for visual sensors. This can be remedied by using the `throttling_camera` plugin from `clover_simulation`. + +You can enable it for the drone by changing the `maintain_camera_rate` argument to `true` in `clover_description/launch/spawn_drone.launch`: + +```xml + + +``` + +The plugin will collect publishing rate statistics and slow the simulation down so that the camera publishing rate is no less than requested. However, large slowdowns may negatively affect non-ROS software that connects to PX4. If your simulation is being slowed down to values lower than 0.5 of realtime, consider using the next suggestion. + +### Set simulation speed + +Since v1.9 the PX4 SITL setup supports [setting the simulation speed](https://dev.px4.io/v1.9.0/en/simulation/#simulation_speed) by setting the `PX4_SIM_SPEED_FACTOR` environment variable. Its value is picked up by PX4 startup scripts, which in turn reconfigure it to expect a certain speedup/slowdown. + +You should set its value to the actual real time factor that you get with `throttling_camera`. The real time factor may be found in the Gazebo GUI window at the bottom: + +![Real Time Factor](../assets/simulation_usage/05_real_time_factor.png) + +In this example you should set `PX4_SIM_SPEED_FACTOR` to `0.42` when launching the simulation: + +```bash +PX4_SIM_SPEED_FACTOR=0.42 roslaunch clover_simulation simulator.launch +``` + +> **Note** If you are using the VM, it may be convenient to put the value in the Gazebo desktop shortcut. Right-click on the Gazebo icon, select "Properties..." and add `PX4_SIM_SPEED_FACTOR=0.42` to the Command field as follows: +![Gazebo PX4 launcher command](../assets/simulation_usage/06_gazebo_px4_launcher.png) + +### Allocate more resources to the VM + +The virtual machine may benefit from several CPU cores, especially if the cores are not very performant. In our tests, a four-core machine with only a single core allocated to the VM was unable to run the simulation, with constant interface freezes and dropped ROS messages. The same machine with all four cores available to the VM was able to run the simulation at 0.25 real-time speed. + +Do note that you should not allocate more resources than you have on your host hardware. diff --git a/docs/ru/simulation_usage.md b/docs/ru/simulation_usage.md index ba611324..1778a6a7 100644 --- a/docs/ru/simulation_usage.md +++ b/docs/ru/simulation_usage.md @@ -47,3 +47,43 @@ roslaunch clover_simulation simulator.launch ### Изменение мира по умолчанию Плагины Gazebo для дрона на данный момент требуют, чтобы значение параметра мира `real_time_update_rate` было равно 250, а значение `max_step_size` было равно 0.004. С другими параметрами симулятор не заработает. Используйте файл `~/catkin_ws/src/clover/clover_simulation/resources/worlds/clover.world` как шаблон. + +## Повышение производительности + +Симуляция с использованием Gazebo требовательна к ресурсам, и для нормальной скорости работы требуются мощный процессор и видеокарта. При этом симуляции можно запускать и на менее мощном оборудовании, жертвуя при этом скоростью работы. Ниже приведены рекомендации для компьютеров, на которых симуляция не может работать в реальном времени. + +### Использование плагина `throttling_camera` + +По умолчанию Gazebo не замедляет симуляцию для достижения требуемой частоты работы визуальных сенсоров. Это можно исправить с помощью плагина `throttling_camera` из пакета `clover_simulation`. + +Включение этого плагина происходит путём выставления параметра `maintain_camera_rate` в значение `true` в файле `clover_description/launch/spawn_drone.launch`: + +```xml + + +``` + +Этот плагин будет собирать статистику по частоте публикации изображений, и будет замедлять симуляцию до тех пор, пока частота публикации не станет соответствовать или превышать требуемую. При этом значительные замедления симуляции могут негативно сказаться на программном обеспечении, которое подключается к PX4 (например, QGroundControl). Если скорость симуляции опускается ниже, чем 0.5 от реального времени, следует воспользоваться следующей рекомендацией. + +### Выставление скорости симуляции + +PX4, начиная с версии 1.9, поддерживает [принудительную установку скорости симуляции](https://dev.px4.io/v1.9.0/en/simulation/#simulation_speed) с помощью переменной окружения `PX4_SIM_SPEED_FACTOR`. Выставление этой переменной подготавливает все компоненты симулятора к соответствующему ускорению/замедлению. + +Значение этой переменной должно соответствовать величине Real Time Factor (скорости симуляции по отношению к реальному времени), получаемой при использовании `throttling_camera`. Величина Real Time Factor отображается в окне Gazebo на нижней панели: + +![Real Time Factor](../assets/simulation_usage/05_real_time_factor.png) + +В данном случае `PX4_SIM_SPEED_FACTOR` следует выставить в значение `0.42` перед запуском симулятора: + +```bash +PX4_SIM_SPEED_FACTOR=0.42 roslaunch clover_simulation simulator.launch +``` + +> **Note** При использовании виртуальной машины удобнее добавить эту переменную в ярлык запуска Gazebo на рабочем столе. Нажмите правой кнопкой на значок Gazebo, выберите "Properties..." и добавьте `PX4_SIM_SPEED_FACTOR=0.42` в поле Command, как показано на иллюстрации: +![Gazebo PX4 launcher command](../assets/simulation_usage/06_gazebo_px4_launcher.png) + +### Выделение ресурсов для виртуальной машины + +Выделение нескольких процессорных ядер для виртуальной машины может значительно повысить производительность симуляции. В наших испытаниях виртуальная машина, для которой было выделено одно ядро, не позволяла работать в симуляторе: окно Gazebo не реагировало на пользовательский ввод, сообщения ROS терялись. После выделения четырёх ядер для этой же виртуальной машины симуляция стала работать со скоростью 0.25 от реального времени. + +При этом не следует пытаться выделить для виртуальной машины больше ресурсов, чем доступно на основной системе.