Comments (15)
You probably need to adjust the imu detection threshold init_imu_thresh
.
I would set this to a large value, then record a bag of you picking it up, and then run the system.
From there you should be able to determine a good threshold (based on the printout) that determines when the system should initialize after being picked up.
from open_vins.
the imu detection threshold init_imu_thresh looks to determine when to start ,and I just ran a test setting to 5 which i will have to move a little harder. But this does not solve the issue.
are the parameters of up_msckf_sigma_px
and up_slam_sigma_px
in terms of pixels? I used fraction assuming that it was normalized,but it did not help. When I use integers like 12, I can see some MSCKF features being updated.
I would expect to see the print message "MSCKF update (0 feats) and SLAM update (0 feats )" higher than zero.
any other ideas? how about the tracker/extractor properties? fast_threshold
or the min_px_dist
from open_vins.
from open_vins.
I re-calibrated the cameras, because I used the incorrect distortion model. Now, I used the model "pinhole-radtan".
Though, it is doing better after using the correct calibration and playing with the sigma parameters and chi2_multiplier.
starts ..
I am wondering if to continue to mess with the parameter , the IMU noise on green are the calculated one. What do you think?
thank you for your help.
from open_vins.
I increased the IMU parameters by x80 from the calculated I got from Kalibr_alla. Also, I've set the sigma_px parameters back to one. This helped alot.
from open_vins.
The imu noise in that image seems to be pretty large. I would try using the eth noise parameters which we have found normally works good on most sensors. The pixel error normally shouldn't go over one if you have good calibration (i.e. 1 pixel reprojection error on the raw image). You can always test and try to use the values that the system calibrates to if you have poor initial.
Also not sure how "fisheye" the ZEDs images are, but if it has some pretty bad distortion I would recommend using equidistant / fisheye. I assume you are following this calibration guide?
edit: The commented noises look on a good order based on my experience. Your random walks shouldn't normally be large at all. If you want to inflate something inflate the noise density terms. The gyroscope random walk seems high in both the commended and very very high in what you are using.
from open_vins.
I tested and the fisheye option did not help much. I looked at the documentation and the ZED stereo cameras does not use a fisheye len.
I did noticed that the initial calibration i used was incorrect. It is working much better now.
I inflated the noise density terms only and keep the random walk values small as used for calibration. Also added some more features for tacking and increased the knn ratio. how does the grid side as 3 helps would impact ? I am assuming the size of the input image would dictate this value.
At last, I added the FEJ at initialization as well.
as you see in the picture movement side to side, but in reality I was moving the camera up and down. Do you have any idea of why would the estimation be coming out on a different axis?
from open_vins.
If you are able to upload a bag, launch file, and your kalibr calibration result.txt I can take a look at it. From what you posted, your transformation between imu and camera might be wrong.
The imu noises still are way too high to be reasonable. Additionally, this might come down to the camera being a rolling shutter and us not supporting that. You can try to move slowly to reduce the rolling shutter effect or increasing the pixel noise.
from open_vins.
thanks, I didn't think to look whether the zed used a rolling shutter, effectively they do.
https://cdn.stereolabs.com/assets/datasheets/zed-mini-camera-datasheet.pdf
I will be moving to using a different stereo camera.
Before moving away from using this stereo camera, I ran a quick experiment.
I changed parameters back to ones I calculated with kalibr: 1) increasing the px noise and move slowly, and 2) changed the imu noise values.
I found an article with the calibration info for the zed camera, my values are similar to the ones here except for the IMU being smaller. The IMU to camera transform's values are some what close to the ones on the article.
https://support.stereolabs.com/hc/en-us/articles/360012749113-How-can-I-use-Kalibr-with-the-ZED-Mini-camera-in-ROS-
as you mentioned, it behaved much stable as long as I increased the px noise to at least 10. I was seeing the behavior of the estimation moving up when moving side to side. The motion forward and back was consistent with a lot of resistant when moving back, I moved really slowed. would this behavior occur from not modeling the rolling shutter?
I am convince that a combination of the rolling shutter behavior and increasing the px noise causes the weird behavior.
from open_vins.
Did you calibrate using Kalibr or tried to get the extrinsics using the ZED driver?
From looking online, the way they handle their coordinate frames in TF might not be standard.
If you have your Kalibr result.txt if you could post that, I would appreciate.
from open_vins.
yes I used Kalibr, I didn't used the extrinsic that the ZED wrapper publishes.
imuCam-calib-ZedM.txt
I thought the same thing whether the TF was different, I looked in the code to see whether the follow a different order of the x, y, and z axis . I assumed that the vector was ordered as x,y,z .
from open_vins.
The transformations you are using are incorrect (if the screenshot is what you are using).
You should use the cam to imu transformations:
T_ic: (cam0 to imu0):
[[-0.01080233 0.00183858 0.99993996 0.01220425]
[-0.99993288 -0.00420947 -0.01079452 0.0146056 ]
[ 0.00418937 -0.99998945 0.00188393 -0.00113692]
[ 0. 0. 0. 1. ]]
T_ic: (cam1 to imu0):
[[-0.01043535 -0.00191061 0.99994372 0.01190459]
[-0.99993668 -0.00419281 -0.01044329 -0.04732387]
[ 0.00421252 -0.99998938 -0.00186674 -0.00098799]
[ 0. 0. 0. 1. ]]
from open_vins.
yea, you are correct. I don't know how did missed to used the incorrect transform. I was grabbing it directly from the terminal. Thanks again for all your help.
I ran the test again with correct transform and lower the pix noise to 5 pix, accounting for the rolling shutter behavior. It still looks very good by simply observing it on RVIZ.
from open_vins.
@NicoNorena Do you mind posting your launch file? I have the same ZED Mini camera and I am trying to run the same tests.
from open_vins.
I cant post the whole launch file but you want use all the data above to set the parameters. the calibration on every camera is different, so you will need to calibrate your zed camera offline. if you read slowly above the use can use the calibration file I attached to set your parameters. Since the Zed uses a rolling shutter you have to increase the pix noise as workout, not the best solution.
from open_vins.
Related Issues (20)
- Why dont inflate the covariance of position when recovering the initialization covariance? HOT 3
- docker build issue HOT 1
- Pose diverging on Raspberry Pi 4 using EUROC dataset HOT 4
- drift with rpi camera v2 and mpu9250 on jetson nano HOT 3
- With a custom dataset, the locations diverge.
- Error while launching command
- how to use my .bag data set for mono camera HOT 1
- VRS file from Meta
- ROS1 Realsense D435i TF drift HOT 1
- ROS2 Initialzation error HOT 2
- No pose output
- Improvement : External tracker concept introduction
- Why treat ANCHORED_INVERSE_DEPTH_SINGLE as ANCHORED_MSCKF_INVERSE_DEPTH when update features?
- Maybe an error in propogate.cpp when construct discrete noise covariance matrix HOT 2
- Question on dynamic initialization jacobian
- EuRoC MAV Dataset Broken rosbag2 Download Links
- The tracking path keeps moving on RViz
- It seems that the code computing chi2 is not correct
- Euroc_mav error after building with ENABLE_ARUCO_TAGS=OFF HOT 1
- failed static init HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from open_vins.