-
Notifications
You must be signed in to change notification settings - Fork 728
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
Which visual inertial sensors are fully supported and work best with ROVIOLI ? #56
Comments
There is an entry for this in the FAQ (https://github.com/ethz-asl/maplab/wiki/FAQ#sensors). However here is my 2 cents on it: How well ROVIO / ROVIOLI works depends a lot on two things the time-stamping accuracy and the IMU quality. Unfortunately the vast majority of commercial sensors cheap out on the IMU causing issues. Because of this my 3 favorite options all involve the adis16445/16448 (a $500 IMU)
Otherwise the intel realsense zr300 can also gives good results, though it is more prone to diverging when experiencing sudden accelerations due to the lower quality IMU. |
@ZacharyTaylor with your permission: Your 2 cents would be a great addition to the FAQ :) @saimanoj18 maybe just a word of caution if you intend to use ROVIO(LI) on cars. We observed that ROVIO(LI) does not perform great on car datasets. The main reason is that the IMU is not excited enough if you have planar motion at nearly constant velocity, so at the very least you will experience issues with scale. The estimator will need another source for scale, e.g. wheel odometry, stereo matching, ... The localization component and the mapping framework in general, however, will work fine and the map structure to support wheel odometry is already there. I'd recommend to either try to integrate wheel odometry into ROVIO(LI) or integrate the maplab localization and map building components on top of an new/existing estimator that supports this already. |
Hi, @mfehr I guess what you said also answered my issue #54, right? I am mounting the zr300 on a wheeled robot, and the estimated moving speed is always faster then it actually is (sudden acceleration like @ZacharyTaylor mentioned also happened sometimes), which seldom occurs while I hand hold the zr300. |
@BryceeeeeChen yes, we think so, you can try to tune the parameters a bit to decrease the chance of it diverging but you'll still end up with scale issues, because the IMU simply doesn't provide enough information. So the fact that your robot is driving smoothly makes it worse :) |
Hi @mfehr, thank you very much. Then could you tell me a bit more about how to integrate wheel odometry into ROVIOLI? And I also need to increase accelerometer covariance parameter more, right? |
maybe my comment about integrating wheel odometry was a bit misleading, this would involve actually adding this feature to rovio, so it will require some effort. If you are interested in pursuing this let us know. |
Yes, I am willing to do it (or make some contribution if I can) since I really need this feature to work on a wheeled robot. So please tell me more about how to start this work. |
We discussed this internally and concluded that in order to extend ROVIO with wheel odometry there are two options, both would require a significant amount of work:
The easier alternative is probably what I suggested earlier to try to find an estimator that can handle odometry and integrate it with the visual localization. |
It is probably dependant on the platform and its application whether processing the (wheel) odometry constraint as an update, combined with IMU propagation, yields good results. But in my opinion it is worth a try before getting into more involved methods. For this you can try hooking up the update routines that you found. But if the IMU propagation leads to bad linearization points for the updates it might be better to propagate using the wheel odometry and processing the IMU as an update as @mfehr suggested. |
@BryceeeeeChen I was wondering if you managed to integrate wheel odometry. I am having the same problem and it would be a great help to have your insight since you have probably tried a thing or two with integrating the odometry into rovio. Thanks :) |
Hi @srabiee, one of my coworkers finished the integration, which works well on our platform. Since the original rovio already has the function to process the velocity update, he told me that you just need to add the wheel data to rovioli's datasource and call the processVelocityUpdate() in rovio-flow.cc. |
I see, thanks @BryceeeeeChen . It helps a lot. |
Hi, @mfehr @schneith although feeding the wheel data to the ROVIOLI solves the scale issue, but I am still wondering why Tango device running its own VIO algorithm did not suffer from the scale issue when we tested it on the same wheeled robot (we used lenovo phab 2 pro and we know it has the same VIO sensor as ZR300). Do you guys know the reason? Thanks. |
@bxc237 we did some tests with earlier versions of Tango and a wheeled robot and the scale issue was there. Was the phone rigidly mounted? |
@dymczykm I am pretty sure that the phone was rigidly mounted. We tested it indoor many times and it worked reliably. |
Wouldn't a stereo-inertial setup also help in resolving these scale related issues? |
What ros topic does rovio-flow used for wheel odometry? This should help figuring how to interface the vehicle can bus. |
I am planning to work on ROVIOLI and our lab does not have any visual inertial sensors. We are trying to build large scale outdoor maps and perform online localization, specifically for self driving car applications.
Could you suggest which VI sensors are fully supported and give good results with ROVIOLI ?
Thank you!
The text was updated successfully, but these errors were encountered: