ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. KnightHawk06
    3. Posts
    • Profile
    • Following 0
    • Followers 0
    • Topics 10
    • Posts 28
    • Best 1
    • Controversial 0
    • Groups 0

    Posts made by KnightHawk06

    • RE: crop image for voxl-tflite-server

      @Alex-Kushleyev this is exactly what I need. Thanks! I was able to reconfigure voxl-tflite-server to use the new cropped image data.

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: crop image for voxl-tflite-server

      @Alex-Kushleyev Yeah, I think that would work just fine. The other option I was considering is modifying voxl-mavlink-server so that the user could specify a region of the incoming image to consider before detection. Which path do you recommend? Appreciate your help.

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • Request for access to Qualcomm-specific libgbm package for VOXL 2 cross-compile

      I’m working on a VOXL 2 (QRB5165) vision application that talks to voxl-mavlink-server via libmodal_pipe, but I’m building and unit-testing inside the standard voxl-cross Docker image. During the link stage I hit this unresolved symbol:

      /usr/lib64/libmodal_pipe.so: undefined reference to `gbm_perform`
      

      From what I gather, gbm_perform() is only exported by the proprietary Adreno driver build of libgbm.so that lives in the qrb5165-gpu (or similar) package on the target root-file-system. That package isn’t present in the container, so the linker fails even though Mesa’s stock libgbm is installed.

      Could someone point me to (or grant me) the repo credentials / download location for that GPU package so I can install it in the container and link against the real library instead of a stub?

      Thanks in advance for any guidance!

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: crop image for voxl-tflite-server

      @Alex-Kushleyev

      I'm using 'hires_front_small_color' as the input_pipe for voxl-tflite-server.

      /**
       * voxl-camera-server Configuration File
       *
       * Each camera has configurations for up to 4 HAL3 streams:
       *    - `preview` stream for raw unprocessed images from CV cameras
       *    - `small_video` 720p (ish) h264/h265 compressed for fpv video streaming
       *    - `large_video` 4k (ish) h264/h265 for onboard video recording to disk
       *    - `snapshot` ISP-processed JPG snapshots that get saved to disk
       *
       * on QRB5165 platforms (VOXL2 and VOXL2 mini) you can only have 3 of the 4 enabled
       *
       * This file is generated from default values by voxl-configure-cameras.
       * Do not expect arbitrary resolutions to work, the ISP and video compression
       * pipelines only support very specific resolutions.
       *
       * The default video compression mode is cqp or Constant Quantization Parameter
       *
       *
       *
       */
      {
              "version":      0.1,
              "fsync_en":     true,
              "fsync_gpio":   109,
              "cameras":      [{
                              "type": "ar0144",
                              "name": "tracking_front",
                              "enabled":      true,
                              "camera_id":    0,
                              "fps":  5,
                              "en_rotate":    true,
                              "en_preview":   true,
                              "preview_width":        1280,
                              "preview_height":       800,
                              "en_raw_preview":       true,
                              "en_misp":      true,
                              "misp_width":   1280,
                              "misp_height":  800,
                              "misp_venc_enable":     false,
                              "misp_venc_mode":       "h264",
                              "misp_venc_br_ctrl":    "cqp",
                              "misp_venc_Qfixed":     30,
                              "misp_venc_Qmin":       15,
                              "misp_venc_Qmax":       50,
                              "misp_venc_nPframes":   29,
                              "misp_venc_mbps":       2,
                              "misp_venc_osd":        false,
                              "misp_awb":     "auto",
                              "ae_mode":      "lme_msv",
                              "gain_min":     54,
                              "gain_max":     8000,
                              "ae_desired_msv":       60,
                              "exposure_min_us":      20,
                              "exposure_max_us":      12000,
                              "exposure_soft_min_us": 5000,
                              "ae_filter_alpha":      0.600000023841858,
                              "ae_ignore_fraction":   0.20000000298023224,
                              "ae_slope":     0.05000000074505806,
                              "ae_exposure_period":   1,
                              "ae_gain_period":       1,
                              "misp_gamma":   1
                      }, {
                              "type": "imx412",
                              "name": "hires_front",
                              "enabled":      true,
                              "camera_id":    1,
                              "fps":  30,
                              "en_preview":   false,
                              "preview_width":        640,
                              "preview_height":       480,
                              "en_raw_preview":       false,
                              "en_small_video":       true,
                              "small_video_width":    1024,
                              "small_video_height":   768,
                              "small_venc_mode":      "h264",
                              "small_venc_br_ctrl":   "cqp",
                              "small_venc_Qfixed":    30,
                              "small_venc_Qmin":      15,
                              "small_venc_Qmax":      40,
                              "small_venc_nPframes":  9,
                              "small_venc_mbps":      2,
                              "small_venc_osd":       false,
                              "en_large_video":       false,
                              "large_video_width":    4056,
                              "large_video_height":   3040,
                              "large_venc_mode":      "h264",
                              "large_venc_br_ctrl":   "cqp",
                              "large_venc_Qfixed":    40,
                              "large_venc_Qmin":      15,
                              "large_venc_Qmax":      50,
                              "large_venc_nPframes":  29,
                              "large_venc_mbps":      40,
                              "large_venc_osd":       false,
                              "en_snapshot":  true,
                              "en_snapshot_width":    4056,
                              "en_snapshot_height":   3040,
                              "exif_focal_length":    3.0999999046325684,
                              "exif_focal_length_in_35mm_format":     17,
                              "exif_fnumber": 1.2400000095367432,
                              "ae_mode":      "isp",
                              "gain_min":     54,
                              "gain_max":     8000,
                              "snapshot_jpeg_quality":        75
                      }, {
                              "type": "imx412",
                              "name": "hires_down",
                              "enabled":      false,
                              "camera_id":    2,
                              "fps":  30,
                              "en_preview":   false,
                              "preview_width":        640,
                              "preview_height":       480,
                              "en_raw_preview":       false,
                              "en_small_video":       true,
                              "small_video_width":    1024,
                              "small_video_height":   768,
                              "small_venc_mode":      "h264",
                              "small_venc_br_ctrl":   "cqp",
                              "small_venc_Qfixed":    30,
                              "small_venc_Qmin":      15,
                              "small_venc_Qmax":      40,
                              "small_venc_nPframes":  9,
                              "small_venc_mbps":      2,
                              "small_venc_osd":       false,
                              "en_large_video":       false,
                              "large_video_width":    4056,
                              "large_video_height":   3040,
                              "large_venc_mode":      "h264",
                              "large_venc_br_ctrl":   "cqp",
                              "large_venc_Qfixed":    40,
                              "large_venc_Qmin":      15,
                              "large_venc_Qmax":      50,
                              "large_venc_nPframes":  29,
                              "large_venc_mbps":      40,
                              "large_venc_osd":       false,
                              "en_snapshot":  true,
                              "en_snapshot_width":    4056,
                              "en_snapshot_height":   3040,
                              "exif_focal_length":    3.0999999046325684,
                              "exif_focal_length_in_35mm_format":     17,
                              "exif_fnumber": 1.2400000095367432,
                              "ae_mode":      "isp",
                              "gain_min":     54,
                              "gain_max":     8000,
                              "snapshot_jpeg_quality":        75
                      }, {
                              "type": "ar0144",
                              "name": "tracking_down",
                              "enabled":      true,
                              "camera_id":    3,
                              "fps":  30,
                              "en_rotate":    false,
                              "en_preview":   true,
                              "preview_width":        1280,
                              "preview_height":       800,
                              "en_raw_preview":       true,
                              "en_misp":      true,
                              "misp_width":   1280,
                              "misp_height":  800,
                              "misp_venc_enable":     false,
                              "misp_venc_mode":       "h264",
                              "misp_venc_br_ctrl":    "cqp",
                              "misp_venc_Qfixed":     30,
                              "misp_venc_Qmin":       15,
                              "misp_venc_Qmax":       50,
                              "misp_venc_nPframes":   29,
                              "misp_venc_mbps":       2,
                              "misp_venc_osd":        false,
                              "misp_awb":     "auto",
                              "ae_mode":      "lme_msv",
                              "gain_min":     54,
                              "gain_max":     8000,
                              "ae_desired_msv":       60,
                              "exposure_min_us":      20,
                              "exposure_max_us":      12000,
                              "exposure_soft_min_us": 5000,
                              "ae_filter_alpha":      0.600000023841858,
                              "ae_ignore_fraction":   0.20000000298023224,
                              "ae_slope":     0.05000000074505806,
                              "ae_exposure_period":   1,
                              "ae_gain_period":       1,
                              "misp_gamma":   1
                      }]
      }
      
      /**
       * This file contains configuration that's specific to voxl-tflite-server.
       *
       * skip_n_frames       - how many frames to skip between processed frames. For 30Hz
       *                         input frame rate, we recommend skipping 5 frame resulting
       *                         in 5hz model output. For 30Hz/maximum output, set to 0.
       * model               - which model to use. Currently support mobilenet, fastdepth,
       *                         posenet, deeplab, and yolov5.
       * input_pipe          - which camera to use (tracking, hires, or stereo).
       * delegate            - optional hardware acceleration: gpu, cpu, or nnapi. If
       *                         the selection is invalid for the current model/hardware,
       *                         will silently fall back to base cpu delegate.
       * allow_multiple      - remove process handling and allow multiple instances
       *                         of voxl-tflite-server to run. Enables the ability
       *                         to run multiples models simultaneously.
       * output_pipe_prefix  - if allow_multiple is set, create output pipes using default
       *                         names (tflite, tflite_data) with added prefix.
       *                         ONLY USED IF allow_multiple is set to true.
       */
      {
              "skip_n_frames":        0,
              "model":        "/usr/bin/dnn/yolov5_float16_quant.tflite",
              "input_pipe":   "/run/mpa/hires_front_small_color/",
              "delegate":     "gpu",
              "requires_labels":      true,
              "labels":       "/usr/bin/dnn/yolov5_labels.txt",
              "allow_multiple":       false,
              "output_pipe_prefix":   "mobilenet"
      }
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • crop image for voxl-tflite-server

      I'd like to crop my 1024x768 image so that voxl-tflite-server only sees a square 256x256 at the center, is this possible? Either in voxl-camera-server or voxl-tflite-server?

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: voxl-logger tflite

      @KnightHawk06

      I am able to save off the images that contain the bounding boxes and classification for each frame but not the binary data that has the bounding box coordinates, classification, and confidence for each frame. How are people ingesting this data into their flight software stack?

      voxl-logger --cam tflite --samples 100 --note "tflite_inference_log"
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: voxl-logger tflite

      @KnightHawk06 This data is not making a lot of sense to me, can voxl-logger not be used to capture tflite data?

      @Alex-Kushleyev are you familiar with how to log and parse tflite data on the voxl2?

      head -n 10 data.csv
      

      i,num_bytes
      0,40
      1,65536
      2,65536
      3,65536
      4,65536
      5,65536
      6,65536
      7,65536
      8,65536

      xxd -l 40 data.raw
      

      00000000: 4c58 4f56 4736 35cc bb05 0000 1528 0100 LXOVG65......(..
      00000010: 0004 0003 0000 2400 000c 0000 1428 7f00 ......$......(..
      00000020: 1501 0a00 1e00 0000 ........

      xxd -s 40 -l 64 data.raw
      

      00000028: b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 ................
      00000038: b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 ................
      00000048: b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 ................
      00000058: b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 b4b4 ................

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • voxl-logger tflite

      I'm trying to log the tflite data from the yolov8n model, I'm looking for the detections and confidence vs time. What's the best way to log this data for inspection?

      I am using this command which is creating data.raw and data.csv files but how do I parse the data.raw file?

      voxl-logger --raw tflite --samples 50
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: Training custom yolov8 model

      @KnightHawk06 ok, I think I found my problem, yolov8 doesn't support exporting with nms. Can a yolov5 model be exported and used on the voxl2?

      https://github.com/ultralytics/ultralytics/issues/10303

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • Training custom yolov8 model

      I am following the tutorial below to train a custom yolov8 model with 295 photos of a fuel canister. I'm training the model on a GCP instance with a NVIDIA Tesla P4. Instead of using the full COCO database, I'm only using 0=background and 1=fuel_canister. I am getting flooded with 'should not reach here' error logs when trying to run voxl-tflite-server. I have tried both configs below. Any ideas?

      https://gitlab.com/voxl-public/support/voxl-train-yolov8.git

      voxl2:~$ journalctl -u voxl-tflite-server -n 20 --no-pager
      
      -- Logs begin at Thu 2023-03-02 12:58:02 UTC, end at Tue 2025-05-13 00:18:20 UTC. --
      
      May 13 00:18:15 m0054 bash[10642]: Error in TensorData<float>: should not reach here
      
      May 13 00:18:16 m0054 bash[10642]: Error in TensorData<float>: should not reach here
      
      May 13 00:18:16 m0054 bash[10642]: Error in TensorData<float>: should not reach here
      
      May 13 00:18:16 m0054 bash[10642]: Current pipeline throughput: 4.64115 frames per second
      
      1) docker build -t yolov8-train:latest .
      2) docker run --gpus all -it --shm-size=8g -v "$(pwd)":/app/ yolov8-train:latest /bin/bash
      3) /app python3 train.py
      4) /app yolo task=detect mode=val model=/app/runs/detect/fuel_canister_exp12/weights/best.pt data=/app/dataset.yaml split=test name=fuel_canister_test_eval
      5) /app yolo export model=./runs/detect/fuel_canister_exp12/weights/best.pt format=tflite imgsz=640 nms=False half=True
      
      cat fuel_canister_labels.txt
      0   background
      1   fuel_canister
      
      cat /etc/modalai/voxl-tflite-server
      /**
      * voxl-tflite-server Configuration File
      *
      * skip_n_frames       - how many frames to skip between processed frames. For 30 Hz
      *                         input, skip 5  ^g^r 5 Hz inference. Set 0 for full rate.
      * model               - which model to use. Bundled choices include mobilenet,
      *                         fastdepth, posenet, deeplab, yolov5, yolov8.
      * input_pipe          - which camera pipe to read (tracking, hires, stereo, etc.).
      * delegate            - hardware acceleration: gpu, cpu, or nnapi.  "gpu" is best
      *                         on VOXL 2 for float16 models.
      * allow_multiple      - if true, removes single-instance lock so multiple servers
      *                         can run (one per config file).
      * output_pipe_prefix  - prefix added to the default output pipes when
      *                         allow_multiple is true.
      */
      {
         "skip_n_frames": 0,
         "model": "/etc/modalai/tflite_models/fuel_canister_yolov8_custom.tflite",
         "input_pipe": "/run/mpa/hires_front_small_color",
         "delegate": "cpu",
         "requires_labels": true,
         "labels": "/etc/modalai/tflite_models/fuel_canister_labels.txt",
         "allow_multiple": false,
         "output_pipe_prefix": "fuel_canister",
         "output_meta_type": "YOLO_V8",
         "debug_en": false,
         "confidence_threshold": 0.1
      }
      
      /**
       * voxl-tflite-server Configuration File
       *
       * skip_n_frames       - how many frames to skip between processed frames. For 30 Hz
       *                         input, skip 5 ⇒ 5 Hz inference. Set 0 for full rate.
       * model               - which model to use. Bundled choices include mobilenet,
       *                         fastdepth, posenet, deeplab, yolov5, yolov8.
       * input_pipe          - which camera pipe to read (tracking, hires, stereo, etc.).
       * delegate            - hardware acceleration: gpu, cpu, or nnapi.  "gpu" is best
       *                         on VOXL 2 for float16 models.
       * allow_multiple      - if true, removes single-instance lock so multiple servers
       *                         can run (one per config file).
       * output_pipe_prefix  - prefix added to the default output pipes when
       *                         allow_multiple is true.
       */
      {
          "skip_n_frames": 0,
          "model": "/etc/modalai/tflite_models/fuel_canister_yolov8_custom.tflite",
          "input_pipe": "/run/mpa/hires_front_small_color",
          "delegate": "cpu",
          "requires_labels": true,
          "labels": "/etc/modalai/tflite_models/fuel_canister_labels.txt",
          "allow_multiple": false,
          "output_pipe_prefix": "fuel_canister",
          "confidence_threshold": 0.5
      }
      
      voxl2:~$ voxl-version
      ────────────────────────────────────────────────────────────────────────────────
      system-image: 1.8.02-M0054-14.1a-perf
      kernel: #1 SMP PREEMPT Mon Nov 11 22:47:44 UTC 2024 4.19.125
      ────────────────────────────────────────────────────────────────────────────────
      hw platform: M0054
      mach.var: 1.0.1
      ────────────────────────────────────────────────────────────────────────────────
      voxl-suite: 1.4.3
      ────────────────────────────────────────────────────────────────────────────────
      Packages:
      Repo: http://voxl-packages.modalai.com/ ./dists/qrb5165/sdk-1.4/binary-arm64/
      Last Updated: 2025-04-17 20:21:35
      List:
      kernel-module-voxl-fsync-mod-4.19.125 1.0-r0
      kernel-module-voxl-gpio-mod-4.19.125 1.0-r0
      kernel-module-voxl-platform-mod-4.19.125 1.0-r0
      libfc-sensor 1.0.7
      libmodal-cv 0.5.16
      libmodal-exposure 0.1.3
      libmodal-journal 0.2.3
      libmodal-json 0.4.3
      libmodal-pipe 2.10.6
      libqrb5165-io 0.4.9
      libvoxl-cci-direct 0.2.5
      libvoxl-cutils 0.1.1
      modalai-slpi 1.1.19
      mv-voxl 0.1-r0
      qrb5165-bind 0.1-r0
      qrb5165-dfs-server 0.2.0
      qrb5165-imu-server 1.1.3
      qrb5165-rangefinder-server 0.1.5
      qrb5165-slpi-test-sig 01-r0
      qrb5165-system-tweaks 0.3.5
      qrb5165-tflite 2.8.0-2
      voxl-bind-spektrum 0.1.1
      voxl-camera-calibration 0.5.9
      voxl-camera-server 2.1.2
      voxl-ceres-solver 2:1.14.0-10
      voxl-configurator 1.0.0
      voxl-cpu-monitor 0.5.3
      voxl-cross-template 0.0.1
      voxl-docker-support 1.3.1
      voxl-elrs 0.4.2
      voxl-esc 1.5.1
      voxl-feature-tracker 0.5.2
      voxl-flow-server 0.3.6
      voxl-fsync-mod 1.0-r0
      voxl-gphoto2-server 0.0.10
      voxl-gpio-mod 1.0-r0
      voxl-io-server 0.0.5
      voxl-jpeg-turbo 2.1.3-5
      voxl-lepton-server 1.3.3
      voxl-lepton-tracker 0.0.4
      voxl-libgphoto2 0.0.4
      voxl-libuvc 1.0.7
      voxl-logger 0.5.0
      voxl-mavcam-manager 0.5.8
      voxl-mavlink 0.1.4
      voxl-mavlink-server 1.4.5
      voxl-modem 1.1.5
      voxl-mongoose 7.7.0-1
      voxl-mpa-to-ros 0.3.9
      voxl-mpa-tools 1.3.7
      voxl-open-vins 0.4.17
      voxl-open-vins-server 0.3.0
      voxl-opencv 4.5.5-2
      voxl-osd 0.1.3
      voxl-platform-mod 1.0-r0
      voxl-portal 0.7.9
      voxl-px4 1.14.0-2.0.98
      voxl-px4-imu-server 0.1.2
      voxl-px4-params 0.6.7
      voxl-qvio-server 1.1.1
      voxl-remote-id 0.0.9
      voxl-reset-slpi 0.0.1
      voxl-state-estimator 0.0.4
      voxl-streamer 0.7.5
      voxl-suite 1.4.3
      voxl-tag-detector 0.0.4
      voxl-tflite-server 0.3.9
      voxl-utils 1.4.6
      voxl-uvc-server 0.1.7
      voxl-vision-hub 1.8.20
      voxl-vtx 1.2.2
      voxl2-io 0.0.3
      voxl2-system-image 1.8.02-r0
      voxl2-wlan 1.0-r0
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: Camera config for M00015 stereo camera only

      @tom Is there a configuration for ov7251 stereo and IMX678 (MDK-M0061-2-06)? I don't see any config for the IMX678?

      https://www.modalai.com/products/mdk-m0061-2?variant=44563858850096

      01 - ov7251 tracking ov7251 stereo
      02 - ov7251 tracking
      03 - ov7251 tracking ov7251 stereo imx214 hires
      04 - ov7251 tracking imx214 hires
      05 - pmd-tof ov7251 tracking
      06 - D0005 Starling pmd-tof imx214 hires ov7251 tracking
      08 - imx214
      09 - pmd-tof
      10 - ov7251 stereo
      11 - D0006 Sentinel
      12 - ov9782 stereo
      13 - ov9782 stereo imx214 hires
      14 - ov9782 stereo pmd-tof ov7251 tracking (copy)
      15 - D0008 dual 9782 tracking
      16 - pmd-tof ov7251 dual tracking imx214 hires
      17 - D0010 pmd-tof imx412 hires ov7251 tracking ov9782 stereo
      18 - D0008 triple ov9782
      19 - D0005 without tof imx214 hires ov7251 tracking
      20 - D0011 imx412 hires ar0144 tracking
      21 - old C6
      23 - D0010 without stereo
      24 - pmd-tof LIOW2 (new TOF)
      25 - dual ar0144
      31 - D0013 Prototype M0135 dual ar0144
      32 - D0008 triple ov9782 rotated
       C - use user-defined custom camera config in
           (/data/modalai/custom_camera_config.txt)
       q - Quit The Wizard
      
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • voxl-dfs-server source code

      Is this the repo for the voxl-dfs-server that's running in SDK 1.4 on the QRB5165 voxl2? I want to update it to define a region of interest so that objects in the fov can be filtered out.

      https://gitlab.com/voxl-public/voxl-sdk/services/qrb5165-dfs-server

      posted in VOXL SDK
      KnightHawk06K
      KnightHawk06
    • Processing point cloud data

      I'm trying to log the voxl2 point cloud data so that I can visualize the estimates and understand the format of the output from the stereo camera. I see the output of the voxl-logger command below as data.raw and data.csv. How can I parse data.raw in python?

      voxl-logger --raw stereo_pc --samples 10
      

      3a3e6892-6af9-48b9-95cb-acb0cfb9854e-image.png

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: Tracking camera calibration not progressing

      @Alex-Kushleyev I initially tried using an LCD screen for the checkerboard, but the camera wasn't detecting it. Should I move the camera around when transitioning between boxes on the LCD screen?

      Afterward, I reverted to the physical checkerboard and moved slowly during calibration. Additionally, I switched to the stereo camera configuration (https://docs.modalai.com/voxl2-camera-configs/#c-10-front-stereo-only-ov7251). Calibration completed successfully, and I was able to start the voxl-dfs-server (after renaming the intrinsics/extrinsics files to match the DFS configuration).

      However, I'm still not seeing valid output data in the VOXL Portal. Both the DFS server status and journal logs appear normal. Any idea what might be causing this?

      The orientation was labeled vertical in the extrinsics file, I updated it to horizontal since the cameras are mounted in that direction, I tried both.

      voxl2:~$ voxl-calibrate-camera stereo -s 6x9 -l 0.0254
      Waiting for valid pipe...
      Please open voxl-portal in a web browser to view the camera calibrator overlay stream
      Running Calibration...
      Calibrating Left Camera
      using intrinsics guess for ov7251 stereo cam
      Matrix
      [512.0490656858071, 0, 317.943082105687;
       0, 512.9677676044445, 249.1010817824914;
       0, 0, 1]
      Distortion
      [-0.2223760024137635;
       0.2834698825913266;
       0.006375005556120415;
       0.001380405690556171;
       -0.3234049381178579]
      distortion_model: plumb_bob
      Re-projection error reported by calibrateCamera: 0.618295
      Calibration Succeded!
      Calibrating Right Camera
      using intrinsics guess for ov7251 stereo cam
      Matrix
      [499.9941123870856, 0, 302.2300515222531;
       0, 500.0159138740167, 197.2845691878148;
       0, 0, 1]
      Distortion
      [-0.1920328131645855;
       0.1661211129668493;
       -9.2603546772169e-06;
       -0.0005742159007090549;
       -0.1386842520292771]
      distortion_model: plumb_bob
      Re-projection error reported by calibrateCamera: 0.654897
      Calibration Succeded!
      Calibrating Extrinsics
      7 frames will be processed
      Processing non-fisheye stereo
      R
      [0.9998717783469182, -0.01301971984148091, 0.009322754990917012;
       0.01315096821001574, 0.9998132816974246, -0.01415816995820597;
       -0.009136678855605861, 0.01427895782876463, 0.9998563059074108]
      T
      [-0.09106229154044132;
       0.0003557888497092847;
       -0.01247277836064075]
      Re-projection error reported by stereoCalibrate: 0.921971
      Detected horizontal stereo pair
      Distance between cameras: 0.0911
      Extrinsics Calibration Succeded!
      
      Saved intrinsics to: /data/modalai/opencv_stereo_intrinsics.yml
      Saved extrinsics to: /data/modalai/opencv_stereo_extrinsics.yml
      Exiting Cleanly
      
      

      ce4025ae-5114-4473-ae6a-d9e4862c4b13-image.png

      cat opencv_stereo_front_extrinsics.yml

      %YAML:1.0
      ---
      R: !!opencv-matrix
         rows: 3
         cols: 3
         dt: d
         data: [ 9.9987177834691821e-01, -1.3019719841480912e-02,
             9.3227549909170124e-03, 1.3150968210015740e-02,
             9.9981328169742456e-01, -1.4158169958205966e-02,
             -9.1366788556058610e-03, 1.4278957828764632e-02,
             9.9985630590741081e-01 ]
      T: !!opencv-matrix
         rows: 3
         cols: 1
         dt: d
         data: [ -9.1062291540441320e-02, 3.5578884970928471e-04,
             -1.2472778360640750e-02 ]
      reprojection_error: 9.2197082833254862e-01
      orientation: vertical
      calibration_time: "2025-04-29 21:24:04"
      

      cat opencv_stereo_front_intrinsics.yml

      %YAML:1.0
      ---
      M1: !!opencv-matrix
         rows: 3
         cols: 3
         dt: d
         data: [ 5.1204906568580714e+02, 0., 3.1794308210568698e+02, 0.,
             5.1296776760444448e+02, 2.4910108178249143e+02, 0., 0., 1. ]
      D1: !!opencv-matrix
         rows: 5
         cols: 1
         dt: d
         data: [ -2.2237600241376348e-01, 2.8346988259132661e-01,
             6.3750055561204149e-03, 1.3804056905561710e-03,
             -3.2340493811785792e-01 ]
      reprojection_error1: 6.1829492384868989e-01
      M2: !!opencv-matrix
         rows: 3
         cols: 3
         dt: d
         data: [ 4.9999411238708558e+02, 0., 3.0223005152225312e+02, 0.,
             5.0001591387401669e+02, 1.9728456918781478e+02, 0., 0., 1. ]
      D2: !!opencv-matrix
         rows: 5
         cols: 1
         dt: d
         data: [ -1.9203281316458551e-01, 1.6612111296684931e-01,
             -9.2603546772168998e-06, -5.7421590070905486e-04,
             -1.3868425202927714e-01 ]
      reprojection_error2: 6.5489679777844001e-01
      width: 640
      height: 480
      distortion_model: plumb_bob
      calibration_time: "2025-04-29 21:24:04"
      
      
      posted in VOXL-CAM
      KnightHawk06K
      KnightHawk06
    • RE: Camera config for M00015 stereo camera only

      @KnightHawk06 I had to update the fastboot permissions and reboot the device.

      sudo gedit /etc/udev/rules.d/51-modalai.rules
      
      SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0660", GROUP="plugdev", SYMLINK+="android_fastboot"
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: Camera config for M00015 stereo camera only

      @tom I'm trying to flash the same version of firmware that is on the board now but with the different camera configuration but the install.sh script never progresses? It's been ~ 30 minutes.

      Running in Interactive mode.
      
      Flashing the following System Image:
              Build Name: 1.8.02-M0054-14.1a-perf
              Build Date: 2024-11-11
              Platform: M0054
              System Image Version: 1.8.02
      
      Installing the following version of voxl-suite:
              voxl-suite Version: 1.4.1
      
      
      Would you like to continue with SDK install?
      1) Yes
      2) No
      #? 1
      [INFO] adb installed
      [INFO] fastboot installed
      
      ----  Starting System Image Flash ----
      ----./flash-system-image.sh  ----
      Detected OS: Linux
      Detected: M0054-1 (QRB5165M)
      Detected: Config 1 w/ M0173 Breakout Board (Starling 2 Max, Starling 2, FPV V5)
      
      =======================================================================================================
      In order to support all of VOXL's camera configurations, specific drones require differing kernel images.
      Please select your drone hardware to proceed with flashing the appropriate kernel image.
      =======================================================================================================
      
      PLEASE SELECT WHICH KERNEL TO FLASH
      1. M0054-1 -> QRB5165M, Starling (D0005), Sentinel (D0006), FPV V4 (D0008), D0010, PX4 Dev Kit (D0011)
      2. M0054-1 -> QRB5165M w/ M0173 Camera Breakout Board, Starling 2 Max (D0012), Starling 2 (D0014), FPV V5 (D0008)
      
      Select your choice from the options above
      or press [Enter] to continue with current config: 1
      
      Installer Version: 1.0
      Image Version:     1.8.02
      Board Version:     M0054-1 (var00.0)
      
      Please power off your VOXL, connect via USB,
      then power on VOXL. We will keep searching for
      an ADB or Fastboot device over USB
      [INFO] Found ADB device
      [INFO] Rebooting to fastboot
      .
      [INFO] Found fastboot device
      [WARNING] This system image flash is intended only for the following
                platform: VOXL2 (m0054) 
      
                Make sure that the device that will be flashed is correct.
                Flashing a device with an incorrect system image will lead
                the device to be stuck in fastboot.
      
      Would you like to continue with the VOXL2 (m0054) system image flash?
      1) Yes
      2) No
      #? 1
      
      
      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • Camera config for M00015 stereo camera only

      Hello, how can I configure for just the M00015 stereo camera? I don't see that as an option and I tried creating a custom config but I get an error on that too.

      https://docs.modalai.com/voxl2-camera-configs/#c-10-front-stereo-only-ov7251

      voxl2:~$ voxl-configure-cameras

      Available camera config IDs are as follows:

      26 - M0173 Starling 2 IMX412 + dual AR0144
      27 - M0173 Starling 2 PMD IMX412 triple AR0144
      28 - M0173 Starling 2 Max dual IMX412 + dual AR0144
      29 - M0173 Starling 2 Max PMD + dual IMX412 + dual AR0144
      30 - M0173 Starling 2 Prototype dual PMD + dual IMX412 + dual AR0144
      36 - M0173 Stalker V5+ IMX412 + dual AR0144
      37 - M0173 Stalker V5+ IMX412 + dual AR0144 + Boson
      46 - M0173 Stalker V5+ IMX664 + dual AR0144
      47 - M0173 Stalker V5+ IMX664 + dual AR0144 + Boson
      C - use user-defined custom camera config in
      (/data/modalai/custom_camera_config.txt)
      q - Quit The Wizard

      selection: C
      Selecting custom camera config
      Camera Configuration: custom
      /data/modalai/custom_camera_config.txt: line 54: syntax error: unexpected end of file

      voxl2:~$ voxl-version
      ────────────────────────────────────────────────────────────────────────────────
      system-image: 1.8.02-M0054-14.1a-perf
      kernel: #1 SMP PREEMPT Mon Nov 11 22:47:44 UTC 2024 4.19.125
      ────────────────────────────────────────────────────────────────────────────────
      hw platform: M0054
      mach.var: 1.0.1
      ────────────────────────────────────────────────────────────────────────────────
      voxl-suite: 1.4.3
      ────────────────────────────────────────────────────────────────────────────────
      Packages:
      Repo: http://voxl-packages.modalai.com/ ./dists/qrb5165/sdk-1.4/binary-arm64/
      Last Updated: 2025-04-17 20:21:35
      List:
      kernel-module-voxl-fsync-mod-4.19.125 1.0-r0
      kernel-module-voxl-gpio-mod-4.19.125 1.0-r0
      kernel-module-voxl-platform-mod-4.19.125 1.0-r0
      libfc-sensor 1.0.7
      libmodal-cv 0.5.16
      libmodal-exposure 0.1.3
      libmodal-journal 0.2.3
      libmodal-json 0.4.3
      libmodal-pipe 2.10.6
      libqrb5165-io 0.4.9
      libvoxl-cci-direct 0.2.5
      libvoxl-cutils 0.1.1
      modalai-slpi 1.1.19
      mv-voxl 0.1-r0
      qrb5165-bind 0.1-r0
      qrb5165-dfs-server 0.2.0
      qrb5165-imu-server 1.1.3
      qrb5165-rangefinder-server 0.1.5
      qrb5165-slpi-test-sig 01-r0
      qrb5165-system-tweaks 0.3.5
      qrb5165-tflite 2.8.0-2
      voxl-bind-spektrum 0.1.1
      voxl-camera-calibration 0.5.9
      voxl-camera-server 2.1.2
      voxl-ceres-solver 2:1.14.0-10
      voxl-configurator 1.0.0
      voxl-cpu-monitor 0.5.3
      voxl-cross-template 0.0.1
      voxl-docker-support 1.3.1
      voxl-elrs 0.4.2
      voxl-esc 1.5.1
      voxl-feature-tracker 0.5.2
      voxl-flow-server 0.3.6
      voxl-fsync-mod 1.0-r0
      voxl-gphoto2-server 0.0.10
      voxl-gpio-mod 1.0-r0
      voxl-io-server 0.0.5
      voxl-jpeg-turbo 2.1.3-5
      voxl-lepton-server 1.3.3
      voxl-lepton-tracker 0.0.4
      voxl-libgphoto2 0.0.4
      voxl-libuvc 1.0.7
      voxl-logger 0.5.0
      voxl-mavcam-manager 0.5.8
      voxl-mavlink 0.1.4
      voxl-mavlink-server 1.4.5
      voxl-modem 1.1.5
      voxl-mongoose 7.7.0-1
      voxl-mpa-to-ros 0.3.9
      voxl-mpa-tools 1.3.7
      voxl-open-vins 0.4.17
      voxl-open-vins-server 0.3.0
      voxl-opencv 4.5.5-2
      voxl-osd 0.1.3
      voxl-platform-mod 1.0-r0
      voxl-portal 0.7.9
      voxl-px4 1.14.0-2.0.98
      voxl-px4-imu-server 0.1.2
      voxl-px4-params 0.6.7
      voxl-qvio-server 1.1.1
      voxl-remote-id 0.0.9
      voxl-reset-slpi 0.0.1
      voxl-state-estimator 0.0.4
      voxl-streamer 0.7.5
      voxl-suite 1.4.3
      voxl-tag-detector 0.0.4
      voxl-tflite-server 0.3.9
      voxl-utils 1.4.6
      voxl-uvc-server 0.1.7
      voxl-vision-hub 1.8.20
      voxl-vtx 1.2.2
      voxl2-io 0.0.3
      voxl2-system-image 1.8.02-r0
      voxl2-wlan 1.0-r0

      /data/modalai/custom_camera_config.txt

      {
      "version": 1.0,
      "cameras": [
      {
      "name": "stereo_left",
      "enabled": true,
      "type": "ov7251",
      "camera_id": 1,
      "format": "RAW8",
      "width": 640,
      "height": 480,
      "frame_rate": 30,
      "preview_width": 320,
      "preview_height": 240,
      "preview_frame_rate": 30,
      "preview_format": "RAW8",
      "is_stereo": true,
      "independent_exposure": false,
      "ae_desired_msv": 35,
      "ae_filter_alpha": 0.8,
      "ae_ignore_fraction": 0.2,
      "ae_slope": 0.05,
      "ae_exposure_period": 4,
      "ae_gain_period": 4
      },
      {
      "name": "stereo_right",
      "enabled": true,
      "type": "ov7251",
      "camera_id": 2,
      "format": "RAW8",
      "width": 640,
      "height": 480,
      "frame_rate": 30,
      "preview_width": 320,
      "preview_height": 240,
      "preview_frame_rate": 30,
      "preview_format": "RAW8",
      "is_stereo": true,
      "independent_exposure": false,
      "ae_desired_msv": 35,
      "ae_filter_alpha": 0.8,
      "ae_ignore_fraction": 0.2,
      "ae_slope": 0.05,
      "ae_exposure_period": 4,
      "ae_gain_period": 4
      }
      ],
      "hal3_buffer_manager_size": 16,
      "max_hal3_request_inflight": 8,
      "smarter_buffer_allocation": false,
      "mipi_clock_speed_khz": 384000
      }

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • Country of origin for stereo camera

      Can you tell me where this camera is made?

      https://docs.modalai.com/M0015/

      posted in Ask your questions right here!
      KnightHawk06K
      KnightHawk06
    • RE: Tracking camera calibration not progressing

      @Alex-Kushleyev Thanks, that definitely helped. I was able to get through calibration but I was moving the camera to track the board so I think there was too much motion, I tried again by keeping the camera stationary and moving the board but I was only able to get through 2 of the squares.

      This one looks like it should have advanced?

      camera_calibrator_overlay_1745532760.png

      voxl2:~$ voxl-calibrate-camera tracking_down_misp_grey -f -s 6x9 -l 0.0254
      Waiting for valid pipe...
      Please open voxl-portal in a web browser to view the camera calibrator overlay stream
      Running Calibration...
      Matrix
      [467.7722718958223, 0, 643.0951201881879;
      0, 465.4675015580457, 407.219312862067;
      0, 0, 1]
      Distortion
      [0.06879494760256116;
      -0.06189410980661297;
      0.09295232529748904;
      -0.03719414450439851]
      distortion_model: fisheye
      Re-projection error reported by calibrateCamera: 1.55185
      Calibration Failed
      Max reprojection error: 0.60
      This is most likely due to motion blur, please try again.
      Exiting Cleanly

      I went down to 30,25 % fill and was able to complete the calibration but I'm still getting the motion blur error.

      voxl2:~$ voxl-calibrate-camera tracking_down_misp_grey -f -s 6x9 -l 0.0254
      Waiting for valid pipe...
      Please open voxl-portal in a web browser to view the camera calibrator overlay stream
      Running Calibration...
      Matrix
      [469.8268457990205, 0, 645.2242591682075;
      0, 468.3299010304277, 405.5249057705095;
      0, 0, 1]
      Distortion
      [0.04544429816970399;
      -0.02133881952988525;
      0.08318821819789667;
      -0.04616442017968726]
      distortion_model: fisheye
      Re-projection error reported by calibrateCamera: 1.26416
      Calibration Failed
      Max reprojection error: 0.60
      This is most likely due to motion blur, please try again.
      Exiting Cleanly

      posted in VOXL-CAM
      KnightHawk06K
      KnightHawk06
    • RE: Tracking camera calibration not progressing

      @Alex-Kushleyev Thanks, this is very helpful. I checked out the fisheye-stereo branch and built and deployed it to the voxl2. I tried both 5 and 7 max tiles and also decreased fps to 15. The image is freezing less often during calibration and it is successfully counting the corners but does not progress past 0%. The 2 cameras are 4.5 cm apart, is that ok? Are there any debug logs that I can turn on to inspect why the calibration is not moving forward?

      ~/git/voxl-camera-calibration$ ./deploy_to_voxl.sh
      searching for ADB device
      checking VOXL for dpkg/opkg
      dpkg detected
      voxl-camera-calibration_0.5.9_arm64.deb: 1 file pushed, 0 skipped. 417.9 MB/s (177172 bytes in 0.000s)
      (Reading database ... 105707 files and directories currently installed.)
      Preparing to unpack .../voxl-camera-calibration_0.5.9_arm64.deb ...
      Unpacking voxl-camera-calibration (0.5.9) over (0.5.9) ...
      Setting up voxl-camera-calibration (0.5.9) ...
      Postinst script completed.
      DONE

      camera_calibrator_overlay_1745449555.png

      posted in VOXL-CAM
      KnightHawk06K
      KnightHawk06