Мотор как датчик скорости? - PullRequest
1 голос
/ 26 февраля 2020

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

Я пытаюсь использовать двигатель, установленный на крутящий момент 0, который делает его свободным ', как датчик скорости для прикрепленного перевернутого маятника.

Стандартный узел двигателя имеет метод .getVelocity (), который должен позволять получать скорость, приложенную к двигателю. В реальных сервоприводах они даже предоставляют данные в пассивном режиме. Однако в веб-приложениях API описывает:

Обратите внимание, что если скорость не установлена ​​явно с помощью функции wb_motor_set_velocity, то функции wb_motor_get_velocity и wb_motor_get_max_velocity возвращают одно и то же значение.

Почему это так, и есть ли способ использовать пассивный двигатель / сервопривод для измерения скорости, как это можно сделать с настоящим сервоприводом?

1 Ответ

2 голосов
/ 26 февраля 2020

Чтобы получить скорость, вы не должны полагаться на Motor API, а использовать датчик положения: https://www.cyberbotics.com/doc/reference/positionsensor

Датчик положения позволяет получить текущее положение сустав (например, его угол для вращательного сустава). Затем из позиции вы можете легко вычислить скорость соединения (просто возьмите разницу между текущей позицией и позицией на предыдущем шаге и разделите ее на разницу во времени (т. Е. Шаг по времени для контроллера)).

...