eskf with sensor concept, less states, and latest fixes from dev/auv-navigation-eskf#640
eskf with sensor concept, less states, and latest fixes from dev/auv-navigation-eskf#640AhmedBorch wants to merge 92 commits into
Conversation
|
Your branch is behind the main branch, and that is causing merge conflicts. Update that and make sure all tests pass 😄 Also, you could still change the target branch to Talha's branch so the PR can be continued there, but it probably doesnt matter if this is up to date. |
684658e to
d87003b
Compare
| Eigen::Matrix15d G = Eigen::Matrix15d::Identity(); | ||
|
|
||
| current_error_state_.covariance = | ||
| G * current_error_state_.covariance * G.transpose(); |
|
|
||
|
|
||
| template <SensorModelConcept SensorT> | ||
| void ESKF::measurement_update(const SensorT& meas) { |
There was a problem hiding this comment.
if you're looking for quick/easy performance gains, i think you can just use cholesky in here instead of doing a full inversion (should also constrain you to PSD-ness). Won't be anything major as the DVL measurement updates are very slow and small dims, but good for the future if higher-rate sensors are ever used.
| // 2. Initialize Quaternion: -90 degrees Yaw because of initial drone_orientation | ||
| Eigen::AngleAxisd init_rotation(-M_PI / 2.0, Eigen::Vector3d::UnitZ()); |
There was a problem hiding this comment.
You sure you want to do this? Not having true-north I'd think fixing the orientation of the odom frame as "whatever it is on startup" is better than offsetting by -90deg?
There was a problem hiding this comment.
The -90deg was left there because the auv is initially rotated by that in the simulation (drone_orientation: "-1.57 0.0 0.0")
So on sim we get big errors because of that. This will be fixed soon I've heard.
I removed it.
|
|
||
| Eigen::Matrix30d vanLoanExp = (vanLoanMat * dt).exp(); |
There was a problem hiding this comment.
have you looked into the runtime performance of this one here? If its an issue you could speed it up quite a bit using a "good-enough" truncated taylor. If its already "good enough" then no need to change it 🔥
(For reference, did some very primitive testing on this, and keeping terms up to dt^3 is a 5x speedup while keeping errors vs the full exponentiation very low)
There was a problem hiding this comment.
Currently it takes about 12-15 us with the .exp()
It is 5 times faster with Taylor expansion, but that only saves about 10us
However, Taylor expansion might have a higher error in case of a lag/jitter of the imu (so higher dt). I think this should be checked further when testing on the real hardware.
…ses msg imu/data_raw and /orca/pose as the dvl info
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
…or real world with some calib for imu bias
Hi, I did the following modifications:
btw I didn't branch from Talha's because I had already made lots of modifications, it was easier to implement the latest missing fixes from his branch in here, I hope this is okay:)
P.S: