Пошаговое моделирование - PullRequest
1 голос
/ 17 января 2020

Можно ли контролировать шаг симуляции / мира / физики c через (супервизор) API? (это необходимо для внешней оценки ОД и вмешательства в действие перед продолжением симуляции)

Это в некоторой степени связано с Шаг имитации для управления веб-ботами , однако ответ Фабьена описывает только то, как управлять имитируемым роботы, а не все моделирование пошагово. Узел worldInfo, похоже, не имеет пошаговой функции в руководстве по API.

1 Ответ

2 голосов
/ 18 января 2020

Я посмотрел поближе, и оказалось, что у узлов робота есть поле синхронизации, которое гарантирует, что мировые шаги приостановлены, пока шаги робота не будут выполнены. (это также упоминается во втором ответе Фабьена в исходном вопросе)

Если синхронизация имеет значение ИСТИНА (по умолчанию), симулятор будет ожидать вызова функции контроллера wb_robot_step всякий раз, когда необходимо сохранить симуляцию и контроллер синхронизирован. Так, например, если шаг моделирования (WorldInfo.basicTimeStep) составляет 16 мс, а шаг управления - 64 мс, то вебботы всегда будут выполнять ровно 4 шага моделирования в течение одного шага управления. После 4-го шага моделирования Webots будет ждать следующего шага управления контроллера (вызов wb_robot_step (64)).

https://cyberbotics.com/doc/reference/robot#synchronous -versus-asynchronous-controller

Я бы предположил, что для (интенсивных) подходов ML или облачного выполнения было бы лучше активировать syn c, чтобы избежать беглого шага по моделированию физики / мира. Если вы хотите тренироваться на разных скоростях реакции для своего робота, возможно, будет реализована случайная модуляция (мс до нескольких секунд) счетчика шагов робота во время выполнения, чтобы имитировать настройку asyn c. Но поправьте меня, если есть лучший подход.

...