Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing Visual Odometry update for quadruped robot? #5

Open
egordv opened this issue May 26, 2022 · 1 comment
Open

Missing Visual Odometry update for quadruped robot? #5

egordv opened this issue May 26, 2022 · 1 comment

Comments

@egordv
Copy link

egordv commented May 26, 2022

Hello and thank you for a great repo!

In my research I'm testing the SEROW on a consumer-grade quadruped robot.
Performance with IMU/leg_odometry looks good!
But the robot drifts in vertical position, which is expected if not using the visual odometry or other bias correction.

So I need to update the estimator Kalman core with direct position measurement coming from visual system.
The problem is that the realization of updatePositionOrientation() in a quadruped mode looks copy-pasted from biped mode and then commented and abandoned.
It's not clear from the code how to rearrange the required matrices to port the biped updatePositionOrientation() to a quadruped mode.
Could you please provide some support on this topic?

@mrsp
Copy link
Owner

mrsp commented May 28, 2022

Hello egordv

Thanks for the feedback!
SEROW was originally designed for biped/humanoid robots where it has been highly effective and optimized for. For the latter case the vertical base position drift is very minimal.
I've added support to quadruped robots via the Invariant Extended Kalman Filter (ImuInEKFQuad). Nevertheless, this filter has not been extensively tested as the biped/humanoid filters, that's why some filter updates are commented - marked as TODO -

The safer and tested way is to follow a similar logic to the humanoid_ekf.cpp for your quadruped robot and use the ImuEKF where you can provide velocity updates from the SEROW leg odometry (DeadReckoningQuad.h) which is highly accurate
and subscribe to your visual odometry topic to update the ImuEKF base position/orientation with the updateWithOdom function with useOutlierDetection = false .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants