-
Notifications
You must be signed in to change notification settings - Fork 22
Error state kalman filter #564
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
base: main
Are you sure you want to change the base?
Conversation
…ses msg imu/data_raw and /orca/pose as the dvl info
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #564 +/- ##
========================================
- Coverage 6.61% 5.89% -0.72%
========================================
Files 37 42 +5
Lines 2117 2375 +258
Branches 50 52 +2
========================================
Hits 140 140
- Misses 1977 2235 +258
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Copilot reviewed 16 out of 18 changed files in this pull request and generated 2 comments.
Files not reviewed (2)
- navigation/eskf/CMakeLists.txt: Language not supported
- navigation/eskf/package.xml: Language not supported
for i in range(n): | ||
for j in range(n // 2): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The indexing in the generate_T_matrix function appears to use negative indices (e.g., 'i - 1' when i is 0), which may lead to unintended behavior. Consider revising the loop indices to start at 1 or adjust the indexing logic accordingly.
for i in range(n): | |
for j in range(n // 2): | |
for i in range(1, n + 1): | |
for j in range(1, (n // 2) + 1): |
Copilot uses AI. Check for mistakes.
start_time = time.time() | ||
estimated_state = ukf.unscented_transform(estimated_state) | ||
print(estimated_state.as_vector()) | ||
break |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The break statement in the simulation loop terminates the loop prematurely, preventing the full simulation from executing. It is likely unintended and should be removed or repositioned to allow complete simulation execution.
break |
Copilot uses AI. Check for mistakes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would be nice if odom is pubilshed in body(base_link) fame accompanied by a dynamic tf2 transform from odom to base_link.
|
||
void correct() { | ||
Eigen::Matrix3d R_nb; | ||
R_nb << 0, 0, -1, 0, -1, 0, -1, 0, 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe expose this rotation as ros params for when the dvl mount is altered
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is still some issue here, but yes that is the goal
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
*s
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Im still fighting for "Set the frame assumptions internally and correct on the outside" - I.e. use TF2 on the ros side.
The TLDR is: You will fuck up transforms when rolling it yourself, so better let TF handle it and just make sure to use it properly
|
||
// @brief Update the nominal state and error state | ||
// @param dvl_meas: DVL measurement | ||
// @return Updated nominal state and error state | ||
std::pair<state_quat, state_euler> dvl_update( | ||
const dvl_measurement& dvl_meas); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We talked about generalizing away specific sensors for any update methods - is that still a go?
I think it would be really nice to write the eskf as a library, and have the user provide the spec for whatever sensor they bring.
You could call it PO, but having seen how many kalman filters have been written over the years, it would be really clean to have this be the go-to solution for years to come 🙏
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, its the end goal, just making it work properly for the thesis now, but will be the next step before merge :)
for more information, see https://pre-commit.ci
No description provided.