-
Notifications
You must be signed in to change notification settings - Fork 48
Description
Hello,
@gergondet @arntanguy @mehdi-benallegue
The KinematicInertialObserver updates the posW() and velW() of the realRobot, while the EncoderObserver updates the q and alpha of the realRobot. Within the EncoderObserver, there are three modes for updating alpha:
VelUpdate::Control
VelUpdate::EncoderFiniteDifferences
VelUpdate::EncoderVelocities
When we select VelUpdate::EncoderVelocities, the realRobot's alpha is set based on the measured joint velocities. However, when VelUpdate::EncoderFiniteDifferences is chosen, the alpha updates based on finite differences of the encoder data.
From my understanding, the KinematicInertialObserver always updates the velW() based on the numerical differential of posW(), which in turn is updated using encoder values. This implies that, even when using VelUpdate::EncoderVelocities in the EncoderObserver, the velW() of the realRobot is still being updated via the finite difference of encoder data.
Given that noisy encoder data and filtered joint velocity (from the encoder) may be present, this results in the alpha of the realRobot being relatively smooth, while the velW() becomes noisy. This discrepancy could lead to issues in the real system.
I would greatly appreciate any insights or features in mc_rtc that could help resolve this discrepancy.
Thank you!