osrf / ovc

the Open Vision Computer
Apache License 2.0
198 stars 42 forks source link

A question about IMU in OVC5 #85

Closed aliamini87 closed 2 years ago

aliamini87 commented 2 years ago

Hi What would be the recommended method to attach an IMU to this board? Before this version, your designs usually includes some IMU integration. But in OVC5 it's unclear. Another question: Is the OVC5 in early stages or near to finish? Thanks.

luca-della-vedova commented 2 years ago

Hello!

OVC5 was more designed for camera usage and indeed lacks the usual "integrated IMU" feature that OVC1-3 had. We have a few I2C connectors that can be used to integrate external peripherals, the embedded linux comes preconfigured with I2C drivers for them. The connectors follow the QWIIC pinout so you can buy any peripherals that follow it and attach it (i.e. this). OVC5 is pretty much completed and was fabricated and tested.

aliamini87 commented 2 years ago

So in OVC5 i2c port is attached to embedded linux part and not directly to the FPGA. So if I need a good synchronization between imu and cameras your recommendation will be OVC3? It was wonderful if OVC5 has some serial interface for some sensors directly to the FPGA.

luca-della-vedova commented 2 years ago

Yea I think for out of the box hardware synchronization I'd recommend OVC3. The extra I2C ports are actually implemented in FPGA and the embedded Linux has drivers to use them but they could theoretically be used straight in FPGA, still with no hardware trigger pin the only synchronization could be a software one. Theoretically it should be quite straightforward to change the layout of OVC5 and just add a cheap IMU the same way OVC3 has one, even reusing the exact same if you want to reuse different parts of the code, I'd say the main deciding factor is whether you want something that just works out of the box in a predefined configuration for stereo global shutter (OVC3) or something fully customizable that is a bit more bulky but can have arbitrary sets of imagers (OVC5).

aliamini87 commented 2 years ago

Thanks a lot for the detailed answer. Actually I prefer the customizability of the OVC5 but synchronization between camera and imu is another key factor for me. In addition, I want to add some third party IMUs to this system and synchronize them with cameras. In this scenario, which platform do you suggest? If OVC5 is your answer, what level of experience is necessary to modify the OVC5 for this purpose? Thanks a lot in advance?

luca-della-vedova commented 2 years ago

If you want OVC5 you can go two ways:

I'd say you would need basic experience in PCB design to design a small module that can be connected to the OVC5 that mounts your IMU (you can take the PI cam v2 schematic as an inspiration) and a bit more advanced experience in Zynq systems and the Xilinx workflow to customize the BSP, adding the needed interface (i.e. SPI / UART for the IMUs that we integrated in OVC3) and writing the driver.

aliamini87 commented 2 years ago

Thanks a lot. I'll try to examine this.