@Alex-Kushleyev this is exactly what I need. Thanks! I was able to reconfigure voxl-tflite-server to use the new cropped image data.
Posts made by KnightHawk06
-
RE: crop image for voxl-tflite-server
-
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.
-
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!
-
RE: crop image for voxl-tflite-server
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" }
-
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?
-
RE: voxl-logger tflite
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"
-
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,65536xxd -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 ................ -
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
-
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?
-
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
-
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
-
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
-
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
-
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
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"
-
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"
-
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
-
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 Wizardselection: C
Selecting custom camera config
Camera Configuration: custom
/data/modalai/custom_camera_config.txt: line 54: syntax error: unexpected end of filevoxl2:~$ 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
} -
Country of origin for stereo camera
Can you tell me where this camera is made?
-
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?
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 CleanlyI 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 -
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