ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    Two-camera VIO non-functional in voxl-open-vins-server 0.6.0 (SDK 1.6.3)

    GPS-denied Navigation (VIO)
    2
    5
    28
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      cbay
      last edited by

      System Info
      Hardware: VOXL2 Mini (M0104)
      SDK: 1.6.3
      voxl-open-vins-server: 0.6.0
      libmodal-flow: 1.0.3
      libmodal-cv: 0.6.0
      Cameras: 4x AR0144 (ON Semi) via M0188 expansion board

      Background
      Building a custom GPS-denied navigation system targeting 4 AR0144 IR cameras in VIO. All 4 cameras are individually confirmed working as cam0 with good feature counts (80–160 features each, clean init). Single-camera VIO works but two-camera VIO is non-functional.

      Issue 1: cam1 always returns 0 features (internal tracker)
      With two cameras in vio_cams.conf, cam1 returns 0 features and NaN disparity every frame regardless of which physical camera occupies the slot. Bug follows the VIO slot, not the hardware. Confirmed not a pipe, cal file, GPU/CPU, or config issue.
      Enabling en_ext_feature_tracker: true causes cam1 to detect features (58–75), confirming the internal tracker's cam1 slot is broken.

      Issue 2: Camera fusion timeouts — two cameras never synchronized
      With two cameras enabled, VIO never fuses both streams. The ready mask never reaches 0x3:
      Camera fusion timeout (ready mask: 0x1, expected: 0x3)
      Camera fusion timeout (ready mask: 0x2, expected: 0x3)
      Camera fusion timeout (ready mask: 0x0, expected: 0x3)
      This occurs with both internal and external tracker. Increasing fusion_rate_dt_ms to 40ms did not help.

      Questions
      Is there a known fix or newer package available? apt list --upgradable shows nothing.
      Is there a separate package feed for SDK 1.6.3 we should be pulling from?
      Is fusion_rate_dt_ms the right parameter to fix the synchronization issue, and if so what value is recommended for two unsynchronized AR0144 cameras?
      Our goal is 4-camera simultaneous VIO — is this supported on SDK 1.6.3?

      Alex KushleyevA 1 Reply Last reply Reply Quote 0
      • Alex KushleyevA
        Alex Kushleyev ModalAI Team @cbay
        last edited by

        @cbay , based on discussion from the other thread (https://forum.modalai.com/topic/5130/running-4-ar0144s-on-m0188), you are running two AR0144 cameras that are synchronized and two unsynchronized.

        Can you please clarify which cameras you are using when testing the two-camera open vins setup? If you only have the 4 AR0144 plugged in, then ID0 and ID3 will be synchronized (camera slots 0 and 6) and the other two cameras (cam id 1, 2 - slots 2,3).

        Alex

        C 1 Reply Last reply Reply Quote 0
        • C
          cbay @Alex Kushleyev
          last edited by

          @Alex-Kushleyev said in Two-camera VIO non-functional in voxl-open-vins-server 0.6.0 (SDK 1.6.3):

          Can you please clarify which cameras you are using when testing the two-camera open vins setup? If you only have the 4 AR0144 plugged in, then ID0 and ID3 will be synchronized (camera slots 0 and 6) and the other two cameras (cam id 1, 2 - slots 2,3).

          I think there may be some confusion, I am running the 4 camera's on J0, J1, J2, and J3 not J6. I have none of the camera;s setup with fsin drivers, just the standard ones. I am happy to swap these to fsin but that was where my problems were for getting frames.

          If it is necessary to fsin for OpenVins please let me know, and then we can go through the process of syncing all of them.

          Alex KushleyevA 1 Reply Last reply Reply Quote 0
          • Alex KushleyevA
            Alex Kushleyev ModalAI Team @cbay
            last edited by Alex Kushleyev

            @cbay , thanks for clarifying

            On M0188, J1 and J3 do not have the sync signal connected. We will release a diagram shortly showing where to install 0-ohm resistors on M0188 to connect the sync signal to the corresponding camera ports.

            And you will need fsin drivers for J0, J1, J2, J3 (will share them shortly as well)

            By default, the AR0144 tracking cameras are connected to J0 and J6 (camera slots 0, 6), which are actually connected to a single CSI interface and are used in a combo mode (two 1-lane (mipi lane) cameras merged into a single 4-lane mipi interface).

            Note that when the fsin or combo (combo mode drivers also use input trigger) are used, but there is no actual sync / trigger signal getting to the camera, then there will be no frames produced. This is specific to the AR0144 camera, as other cameras may operate differently and use the sync signal to align the readout trigger (so in absence of trigger signal, those cameras would simply be not sync'ed, but AR0144 just does not send any frames)

            Alex

            Alex KushleyevA 1 Reply Last reply Reply Quote 0
            • Alex KushleyevA
              Alex Kushleyev ModalAI Team @Alex Kushleyev
              last edited by

              I have uploaded the latest ar0144 drivers with fsin versions for all camera slots here : https://storage.googleapis.com/modalai_public/temp/ar0144/ar0144_drivers_20260402.zip

              There are two additional files (inside the zip), which you should copy to /usr/lib/camera to make sure you have the latest updates:

              • com.qti.sensor.ar0144.so -- contains functions for exposure / gain control (we recently made some improvements to make gain control smoother)
              • com.qti.tuned.default.bin -- fixed gain scaling so that min gain (1.0x analog gain) is equal to 100 in the HAL3 gain units, not 54 (and the max gain will be 29.6 = 29600 for AR0144) -- you can also double check this using voxl-camera-server -l and update the min/max gain settings in your voxl-camera-server.conf to make sure you are using the full range.

              My colleague will follow up with a diagram for locations of the DNI resistors that need to be installed to enable sync signal for camera slots 1 and 3 (0402 0-ohm resistor)

              Alex

              1 Reply Last reply Reply Quote 0
              • First post
                Last post
              Powered by NodeBB | Contributors