Files
PX4-Autopilot/docs/uk/debug/system_wide_replay.md
T
Hamish Willee 88d623bedb Move PX4 Guide source into /docs (#24490)
* Add vitepress tree

* Update existing workflows so they dont trigger on changes in the docs path

* Add nojekyll, package.json, LICENCE etc

* Add crowdin docs upload/download scripts

* Add docs flaw checker workflows

* Used docs prefix for docs workflows

* Crowdin obvious fixes

* ci: docs move to self hosted runner

runs on a beefy server for faster builds

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: don't run build action for docs or ci changes

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* ci: update runners

Signed-off-by: Ramon Roche <mrpollo@gmail.com>

* Add docs/en

* Add docs assets and scripts

* Fix up editlinks to point to PX4 sources

* Download just the translations that are supported

* Add translation sources for zh, uk, ko

* Update latest tranlsation and uorb graphs

* update vitepress to latest

---------

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
Co-authored-by: Ramon Roche <mrpollo@gmail.com>
2025-03-13 16:08:27 +11:00

186 lines
10 KiB
Markdown

# Відтворення усієї системи
Можливо записувати та відтворювати довільні частини системи на основі повідомлень ORB.
Перегравання корисне для тестування ефекту різних значень параметрів на основі реальних даних, порівняння різних оцінювачів тощо.
## Вимоги
Перший крок - визначити модуль або модулі, які слід відтворити.
Потім визначте всі вхідні дані для цих модулів, тобто підписані теми ORB.
Для системного відтворення це включає в себе всі апаратні вхідні дані: сенсори, вхід RC, команди MAVLink та файлову систему.
All identified topics need to be logged at full rate (see [logging](../dev_log/logging.md)).
For `ekf2` this is already the case with the default set of logged topics.
It is important that all replayed topics contain only a single absolute timestamp, which is the automatically generated field `timestamp`.
Якщо потрібно додати більше відміток часу, вони повинні бути відносно основної відмітки.
For an example, see [SensorCombined.msg](https://github.com/PX4/PX4-Autopilot/blob/main/msg/SensorCombined.msg).
Причини цього наведено нижче.
## Використання
- Спочатку виберіть файл для відтворення та побудуйте ціль (з каталогу PX4-Autopilot):
```sh
export replay=<absolute_path_to_log_file.ulg>
make px4_sitl_default
```
This will create the build/make output in a separate build directory `build/px4_sitl_default_replay` (so that the parameters don't interfere with normal builds).
It's possible to choose any posix SITL build target for replay, since the build system knows through the `replay` environment variable that it's in replay mode.
- Add ORB publisher rules in the file `build/px4_sitl_default_replay/rootfs/orb_publisher.rules`.
Цей файл визначає модулі, які мають право публікувати певні повідомлення.
Має наступний формат:
```sh
restrict_topics: <topic1>, <topic2>, ..., <topicN>
module: <module>
ignore_others: <true/false>
```
This means that the given list of topics should only be published by `<module>` (which is the command name).
Публікації з будь-якої з цих тем з іншого модуля мовчки ігноруються.
If `ignore_others` is `true`, publications to other topics from `<module>` are ignored.
For replay, we only want the `replay` module to be able to publish the previously identified list of topics.
So, for replaying `ekf2`, the rules file should look like this:
```sh
restrict_topics: sensor_combined, vehicle_gps_position, vehicle_land_detected
module: replay
ignore_others: true
```
З цим модулями, які зазвичай публікують ці теми, не потрібно вимикати для повторення.
- _(Optional)_ Setup parameter overrides (see [instructions below](#overriding-parameters-in-the-original-log)).
- _(Optional)_ Copy a `dataman` mission file from the SD card to the build directory.
Це потрібно лише у випадку, якщо місію слід переграти.
- Почніть відтворення:
```sh
make px4_sitl_default jmavsim
```
Це автоматично відкриє файл журналу, застосує параметри та почне відтворення.
Після завершення буде повідомляти про результат і вихід.
Новостворений файл журналу можна потім проаналізувати. It can be found in `rootfs/fs/microsd/log`, in subdirectories organised by date.
Replayed log file names will have the `_replayed` suffix.
Зверніть увагу, що вищезазначена команда також покаже симулятор, але - в залежності від того, що відтворюється - вона не покаже, що насправді відбувається.
Ще завжди можна підключитися через QGC та, наприклад, переглянути зміну ставлення під час відтворення.
- Нарешті, скасуйте змінну середовища, щоб знову використовувалися звичайні цілі збирання:
```sh
unset replay
```
### Перевизначення параметрів у вихідному журналі
За замовчуванням, під час відтворення застосовуються всі параметри зі стартового файлу журналу.
Якщо параметр змінюється під час запису, він буде змінений у відповідний час під час відтворення.
Parameters can be overridden during a replay in two ways: _fixed_ and _dynamic_.
Коли параметри перевизначаються, відповідні зміни параметрів в журналі не застосовуються під час повторного відтворення.
- **Fixed parameter overrides** will override parameters from the start of the replay.
They are defined in the file `build/px4_sitl_default_replay/rootfs/replay_params.txt`, where each line should have the format `<param_name> <value>`.
Наприклад:
```sh
EKF2_RNG_NOISE 0.1
```
- **Dynamic parameter overrides** will update parameter values at specified times.
Ці параметри все ще будуть ініціалізовані до значень у журналі або в зафіксованих замінах.
Parameter update events should be defined in `build/px4_sitl_default_replay/rootfs/replay_params_dynamic.txt`, where each line has the format `<param_name> <value> <timestamp>`.
Відмітка часу - це час у секундах з моменту початку журналу. Наприклад:
```sh
EKF2_RNG_NOISE 0.15 23.4
EKF2_RNG_NOISE 0.05 56.7
EKF2_RNG_DELAY 4.5 30.0
```
### Важливе зауваження
- Під час відтворення всі відключення в журналі звітуються.
Вони мають негативний вплив на повторення, тому слід уникати втрат під час запису.
- Наразі можливо лише відтворення в 'реальному часі': так швидко, як було зроблено запис.
Це планується розширити у майбутньому.
- Повідомлення з міткою часу 0 буде вважатися недійсним і не буде відтворено.
## EKF2 Повтор
Це спеціалізація системного повторення для швидкого відтворення EKF2.
:::info
The recording and replay of flight logs with [multiple EKF2 instances](../advanced_config/tuning_the_ecl_ekf.md#running-multiple-ekf-instances) is not supported.
To enable recording for EKF replay you must set the parameters to enable a [single EKF2 instance](../advanced_config/tuning_the_ecl_ekf.md#running-a-single-ekf-instance).
:::
У режимі EKF2 відтворення автоматично створить правила публікації ORB, описані вище.
Для виконання повторення EKF2:
- Запишіть оригінальний журнал.
Optionally set `SDLOG_MODE` to `1` to log from boot.
- In addition to the `replay` environment variable, set `replay_mode` to `ekf2`:
```sh
export replay_mode=ekf2
export replay=<absolute_path_to_log.ulg>
```
- Run the replay with the `none` target:
```sh
make px4_sitl none
```
- Once finished, unset both `replay` and `replay_mode`.
```sh
unset replay; unset replay_mode
```
### Налаштування конкретних параметрів EKF2 для відтворення
First install `pyulog`:
```sh
pip install --user pyulog
```
Extract the original log's parameters to `replay_params.txt`:
```sh
ulog_params -i "$replay" -d ' ' | grep -e '^EKF2' > build/px4_sitl_default_replay/rootfs/replay_params.txt
```
Adjust these as desired, and add dynamic parameter overrides in `replay_params_dynamic.txt` if necessary.
## Позаду кадру
Перегравання розділено на 3 компоненти:
- A replay module
These have a negative effect on replay, so care should be taken to avoid dropouts during recording.
- Наразі можливо лише відтворення в 'реальному часі': так швидко, як було зроблено запис.
Модуль відтворення читає журнал та публікує повідомлення з тією самою швидкістю, з якою вони були записані.
До часового позначення кожного повідомлення додається постійний зсув, щоб відповідати поточному часу системи (це причина, чому всі інші часові позначення повинні бути відносними).
The command `replay tryapplyparams` is executed before all other modules are loaded and applies the parameters from the log and user-set parameters.
Then as the last command, `replay trystart` will again apply the parameters and start the actual replay.
Both commands do nothing if the environment variable `replay` is not set.
Правила видавця ORB дозволяють вибрати, яка частина системи повторюється, як описано вище. Вони компілюються лише для цільових posix SITL.
The **time handling** is still an **open point**, and needs to be implemented.