Skip to content

Latest commit

 

History

History
219 lines (160 loc) · 9.84 KB

DM3390.rst

File metadata and controls

219 lines (160 loc) · 9.84 KB

OAK-FFC-6P

Buy it on Luxonis shop

.. thumbnail:: /_static/images/FFC-6P/top.png

Overview

The OAK-FFC-6P baseboard has 6 FFC interfaces which allows for six 2-lane MIPI camera modules. It's a :ref:`RVC3-based <RVC3>` device and uses the :ref:`dm3399`.

To see which cameras are compatible with this OAK FFC baseboard, see the guide here: :ref:`OAK FFC camera modules`. Some of camera modules have a :ref:`M12 mount <M12 mount lenses>`, so you can use different lenses to get custom FoV (with :ref:`wide or narrow FOV M12 lenses <M12 selectable FOV>`).

This board is also compatible with RPi camera interface. For that you will need a FFC from Arducam, which converts 26-pin Luxonis camera pinout to 22 pin RPi camera pinout.

In addition, IMU (over SPI) sensor is also added to this OAK FFC board.

Dimensions and Weight

  • Width: 50mm
  • Height: 33mm, without heatsink: 13mm
  • Length: 70mm
  • Weight: 69g, without heatsink: 33g
.. thumbnail:: /_static/images/FFC-6P/bottom.jpg

General information

  • 6x 2-line MIPI camera interfaces (all of the CCMs supported in DepthAI can run on 2-lane MIPI, most of them also in full resolution)
  • :ref:`dm3399` connected to the baseboard
  • 5V power input via barrel jack
  • USB 3.1 Gen 1 Type-C
  • IMU support (BMI270 by default, footprint for BNO086)
  • uSD card slot
  • Onboard EEPROM
  • Pads for DepthAI SoM 1.8V SPI
  • Pads for DepthAI SoM 1.8V Aux Signals (I2C, UART, GPIO)
  • PSRBS connector (5V, STROBE, RST, BOOT_SEL, FSIN_ALL, FSIN_STEREO)
  • 1025 coin battery holder
  • Design files produced with Altium Designer 22

Getting started

In this tutorial, we will be using OAK-FFC-6P with 2x OAK-FFC-OV9282 camera modules (9.75cm apart) on ports CAM_B and CAM_C. We are using OAK-FFC-Kit to mount the cameras. First we will install the correct depthai library version, then we will calibrate the stereo cameras, and finally we will check the results.

https://user-images.githubusercontent.com/18037362/236559896-06340943-ee68-4add-b760-d47d478e3e87.png

RVC3 library

As RVC3 is still in early access, you will need to install the correct version of depthai library on the host computer. You can do that by checking out on rvc3_develop on the depthai-python repository and running python example/install_requirements.py.

Now, let's check the cameras streams first. As we have OV9282 on ports B and C, we will run the following command:

python cam_test.py -cams left,m right,m

Enabled cameras:
    left : mono
    right : mono
DepthAI version: 2.19.1.0.dev+c5fd7c993a3d446f6b9fdb54653cb49c7523534f
DepthAI path: path/to/depthai.cp39-win_amd64.pyd
    Connected cameras: [{socket: LEFT/CAM_B, sensorName: OV9282, width: -1, height: -1, orientation: AUTO, supportedTypes: [], hasAutofocus: 0, name: CAM-SA}, {socket: RIGHT/CAM_C, sensorName: OV9282, width: -1, height: -1, orientation: AUTO, supportedTypes: [], hasAutofocus: 0, name: CAM-SB}]
    -socket LEFT  : OV9282   -1 x   -1 focus:fixed -
    -socket RIGHT : OV9282   -1 x   -1 focus:fixed -
USB speed: UNKNOWN
IR drivers: []
Cam:      left          right    [host | capture timestamp]
FPS:  24.61| 21.96  24.31| 21.44

And we get the streams from both cameras.

RVC3 SSH into ARM

RVC3 also has quadcore ARM, so it's also possible to SSH into the device and install the same library (so rvc3_develop) there. To SSH into the device, please see gdocs here. Note that because the device doesn't have internet access, you'd need to download and copy the library from the host computer to the device.

Calibration

Now, let's calibrate the cameras. First, we need to be on the rvc3_develop branch on the depthai repository. We need to have all the requirements installed, and also make sure we still have the correct depthai library (as we did in the previous step). Following the Calibration docs here, I ran the calibrate.py file in the depthai repository:

python calibrate.py -s 5 -brd board.json -db -cd 0

And the board.json file is the following:

{
    "board_config":
    {
        "name": "OAK-FFC-6P",
        "revision": "R0M0E0",
        "cameras":{
            "CAM_B": {
                "name": "left",
                "hfov":  77,
                "type": "mono",
                "extrinsics": {
                    "to_cam": "CAM_C",
                    "specTranslation": {
                        "x": -9.75,
                        "y": 0,
                        "z": 0
                    },
                    "rotation":{
                        "r": 0,
                        "p": 0,
                        "y": 0
                    }
                }
            },
            "CAM_C": {
                "name": "right",
                "hfov":  77,
                "type": "mono"
                }
        },
        "stereo_config":{
            "left_cam": "CAM_B",
            "right_cam": "CAM_C"
        }
    }
}

After 39 images at different angles and orientations, I got an average epipolar error of 0.14 pixels. Not great, not terrible, but will do for the tutorial. Now let's try our the stereo depth.

Testing the stereo results

We will be using SDK to test the results. Here's a simple script we can use to test the results:

from depthai_sdk import OakCamera

with OakCamera() as oak:
    camb = oak.create_camera('camb,m', resolution='800p',fps=10)
    camc = oak.create_camera('camc,m', resolution='800p',fps=10)

    stereo = oak.create_stereo(left=camb, right=camc)

    oak.visualize([stereo.out.disparity, camc, stereo.out.rectified_left], fps=True)

    oak.start(blocking=True)

Note that depthai_sdk library should be installed from the rvc3_develop branch on depthai repository. After running the script, we get this result:

https://user-images.githubusercontent.com/18037362/236560333-4ad97783-1d63-41df-a35f-2c4cd02b55a1.png

Not bad, but at the edges you can see some circular/warp artifacts, which is is caused due to a) not great calibration, b) camera distortion model we are using.

Hardware setup

The OAK-FFC-6P accepts 5V (+/-10%) from a 5.5m x 2.5mm barrel jack, and interfaces to a host via USB 3.1 Gen1 Type-C. With cameras and the :ref:`dm3399`, total power consumption usually stays below the 1.5 A specification, Type-C power of 1.5 A or greater is recommended.

Interfacing with the :ref:`dm3399` is also possible with OAK-FFC-6P connector pads QSPI, and AUX. These pads are designed for the Amphenol/FCI 20021121-00010T1LF or equivalent. Please refer to the schematics for pinout information.

The reset button soft resets the Luxonis DepthAI SoM only, SYS-RST button resets the power system of the DepthAI and PWR button is a GPIO button that can be used to turn off/on the SoM. BOOT button is meant to be used only for recovery purposes changing GPIO boot mode to eMMC recovery when the button is held on system power up.

The PG LED indicates 5V power is present and all outputs of the DC-DC converters are inside the specified nominal voltages. The LED1 indicates "BOOT" status of the DepthAI SoM. The LED2 is an "CONNECT" status LED which indicates that the OAK-SoM-Max is connected to the network/device.

FFC cables

For FFC cables we use Molex series 15166. Along with the OAK FFC board, we ship 26 pin count, same-sided, 152mm cables (part number 151660281). If you would like to use shorter/longer FFC cables, you can get them here.

3D Models

  • Board (PCBA) STEP files here

Files