ethz-asl / rovio

Other
1.12k stars 506 forks source link

Hardware specifications for real time odometry #182

Open connorsoohoo opened 6 years ago

connorsoohoo commented 6 years ago

Can someone give what their exact hardware specifications were and the configuration used to analyze camera images in real time?

bloesch commented 6 years ago

hardware specification for the euroc dataset can be found online (https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets). The default rovio settings should run fairly well on this dataset.

ghost commented 6 years ago

Hey @bloesch, I already bought and optor vi_sensor ( it is the github: https://github.com/optor-vis/vi-stereo-v1 ) it has a ros package and I can connect it to your code but the problem is that it drifts I think it is about the frame speed. I am totally new to the hardware. Should I calibrate it with Kalibr or should I use its Ros package. If I should use their ROS package how should I change the speed and what is the number of fps I should put in it. I would appreciate it if you help me with this issue I am really stalked.

ZacharyTaylor commented 6 years ago

There has been a few threads about the optor sensor before, the framerate is unlikely to be the issue. Looking at the driver the sensor appears to have no synchronization between the IMU and cameras. It also does timestamping via arrival times and has a fairly low quality IMU. Because of these issues while you might be able to get the code working with the sensor, you are unlikely to ever get the sort of results shown on the EuRoC dataset.

ghost commented 6 years ago

Thank you, I think I use an imu via arduino , but would you please tell me which number should put as a frame rate in fps for camera and imu? so then I can get just the images from optor since it has global shutter cameras and if I understood well from what you said, it seems the cameras are not the problem.

ZacharyTaylor commented 6 years ago

The camera images shouldn't be an issue, however rovio needs the relative timing between when an IMU reading occurred and an image was taken to be given quite accurately. As the sensor only stamps images on arrival on the pc you will need to factor in the unknown internal imaging processing time and time for the images to be transferred. This can be very difficult to do accurately which is why we generally aim for using sensors that provide hardware timestamping. I have successfully run rovio on cameras with framerates of 12, 20, 30 and 60 fps and IMUs with rates of 100, 200 and 250 Hz. Our current setup has images at 20 fps and IMU at 200 Hz, but it does not matter too much.

mzahana commented 5 years ago

@ZacharyTaylor If possible, could you please share what hardware you use to get good results with ROVIO?

Thanks.

ZacharyTaylor commented 5 years ago

I wrote up some information on our VI sensor setups here https://github.com/ethz-asl/mav_tools_public/wiki/Visual-Inertial-Sensors

We generally use the skybotics VI sensor, but due to not being able to get them anymore are transitioning to a setup triggering a camera from a microcontroller.

I should also note while cheaper imus work, we usually go with the adis 16448 due to it's small bias which helps robustness

mzahana commented 5 years ago

Thanks @zacharytaylor for the info.

It was easier for me to get a pair of uEye 1226LE which is global shutter and also has external trigger pin. It has a ROS driver, but I am not sure how to properly modify it to do the synchronization. Any hints are appreciated.

Thanks again.

mzahana commented 5 years ago

I would also like to mention that I have an arduino and MPU6050 with the intention to build a complete VI rig.

I came across this tutorial which explains how to use arduino to sync MPU6050 with a global shutter camera. However, I don't have the camera mentioned in that tutorial, but I have the uEye 1226LE.