So I am using slam algorithm to localize the drone which is gps denied . The input to the slam algo is imu data and a video . Now after the first run of the slam algorithm it creates the trajectory files .so if my video was 600 seconds long it creates traj file upto 400 sec . And then it looses the traj and hence no xyz position from 400-600 seconds . Is there any way I can use the first 400 seconds and I have imu data ,angular velocity and velocity information as well to get those xyz values from 400 sec to 600 sec ?
The any way would be SLAM itself. The point of SLAM is to reconstruct a trajectory given sensor inputs. That's just semantics though. I'm guessing you want to know how to handle failed sensor cases. If so, you have to detect those cases and reject the results. This can be done with multi-hypothesis SLAM or particle filters, but are significantly more complicated and I'm not aware of tools that do this automatically. You will likely have to manually massage the data until the trajectory reconstruction works better.
If you just want a good result for this run:
- Inspect the video / imu data after 400 seconds.. Is it junk? Trim the video using ffmpeg and try again.
- Is the IMU outputting junk? Run with camera only.
Honestly, without information about how you're doing SLAM, I can't say. I'd recommend plugging the whole thing into maplab and see what you get. For video-only you could try a structure from motion pipeline such as OpenSFM.
Hey Josh thanks for your reply . I am using maplab as a slam algo as it takes imu data as an input
Do you think there is something wrong with the imu data at timestamp 400 and beyond ? Or is it maplab doesn't detect key points on the video properly ?
I am thinking of using extended kalman filter from 400 sec to 600 sec and using the output of maplab at timestamp 399 as an input (basically the xyz and the quaternion) to the extended kalman filter . I am new to this so I don't know if EKF is the ticket ,but it appears to be . Maybe you can suggest otherwise or confirm ?
Also how can we know/verify imu is outputting junk ?