Skip to content

KinematicInertialObserver and EncoderObserver Discrepancy with Noisy Encoder Data #461

@Saeed-Mansouri

Description

@Saeed-Mansouri

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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions