Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Dev Drones
  3. Starling & Starling 2
  4. qvio_overlay "ERR CAM_MISSING CAM_BAD_RES STALLED" on Starling 2

qvio_overlay "ERR CAM_MISSING CAM_BAD_RES STALLED" on Starling 2

Scheduled Pinned Locked Moved Starling & Starling 2
4 Posts 2 Posters 714 Views
  • 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.
  • N Offline
    N Offline
    nuallaino
    Contributor
    wrote on last edited by nuallaino
    #1

    Hello,
    I recently received a Startling 2 drone and have been trying to get the Mapper functionality to work.

    I tried SDK 1.3.3 and then tried 1.3.4-202409192201.

    TOF seems to be working fine, as is the tracking_front camera however QVIO is not. See the attached screenshot and logs.

    Any advice on how to resolve this would be appreciated.

    Screenshot 2024-09-20 122435.png

    voxl2:/$ voxl-inspect-qvio 
    waiting for server
    
     dt(ms) |    T_imu_wrt_vio (m)   |Roll Pitch Yaw (deg)|features|quality| state| error_codes |
       31.1 |    0.00    0.00    0.00|   0.0   -0.0    0.0|     0  |   -1% | FAIL | CAM_MISSING CAM_BAD_RES STALLED ^C
    received SIGINT Ctrl-C
    
    closing and exiting
    voxl2:/$ voxl-inspect-services
    Scanning services...
    
     Service Name             |  Enabled  |   Running   |  CPU Usage
    -------------------------------------------------------------------
     docker-autorun           | Disabled  | Not Running |  
     modallink-relink         | Disabled  | Not Running |  
     voxl-camera-server       |  Enabled  |   Running   |    93.9%
     voxl-cpu-monitor         |  Enabled  |   Running   |     0.3%
     voxl-dfs-server          | Disabled  | Not Running |  
     voxl-feature-tracker     | Disabled  | Not Running |  
     voxl-flow-server         | Disabled  | Not Running |  
     voxl-imu-server          |  Enabled  |   Running   |     3.6%
     voxl-lepton-server       | Disabled  | Not Running |  
     voxl-lepton-tracker      | Disabled  | Not Running |  
     voxl-logger              | Disabled  | Not Running |  
     voxl-mavcam-manager      |  Enabled  |   Running   |     0.0%
     voxl-mavlink-server      |  Enabled  |   Running   |     3.1%
     voxl-modem               | Disabled  | Not Running |  
     voxl-neopixel-manager    | Disabled  | Not Running |  
     voxl-open-vins-server    | Disabled  | Not Running |  
     voxl-osd                 | Disabled  | Not Running |  
     voxl-portal              |  Enabled  |   Running   |    24.1%
     voxl-px4-imu-server      | Disabled  | Not Running |  
     voxl-px4                 |  Enabled  |   Running   |    21.6%
     voxl-qvio-server         |  Enabled  |   Running   |     5.0%
     voxl-rangefinder-server  |  Enabled  |   Running   |     0.5%
     voxl-remote-id           | Disabled  | Not Running |  
     voxl-softap              | Disabled  | Not Running |  
     voxl-state-estimator     | Disabled  | Not Running |  
     voxl-static-ip           | Disabled  | Not Running |  
     voxl-streamer            |  Enabled  |   Running   |     0.0%
     voxl-tag-detector        | Disabled  | Not Running |  
     voxl-tflite-server       | Disabled  | Not Running |  
     voxl-time-sync           | Disabled  | Not Running |  
     voxl-uvc-server          | Disabled  | Not Running |  
     voxl-vision-hub          |  Enabled  |   Running   |     4.1%
     voxl-vrx                 | Disabled  | Not Running |  
     voxl-vtx                 | Disabled  | Not Running |  
     voxl-wait-for-fs         |  Enabled  |  Completed  |  
    voxl2:/$ cat /etc/modalai/voxl-camera-server.conf 
    /**
     * 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":	30,
    			"en_rotate":	true,
    			"en_preview":	true,
    			"preview_width":	1280,
    			"preview_height":	800,
    			"en_raw_preview":	true,
    			"ae_mode":	"lme_msv",
    			"ae_desired_msv":	60,
    			"exposure_min_us":	20,
    			"exposure_max_us":	33000,
    			"gain_min":	54,
    			"gain_max":	8000,
    			"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
    		}, {
    			"type":	"imx412",
    			"name":	"hires",
    			"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":	"h265",
    			"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,
    			"en_large_video":	true,
    			"large_video_width":	4056,
    			"large_video_height":	3040,
    			"large_venc_mode":	"h265",
    			"large_venc_br_ctrl":	"cqp",
    			"large_venc_Qfixed":	38,
    			"large_venc_Qmin":	15,
    			"large_venc_Qmax":	50,
    			"large_venc_nPframes":	29,
    			"large_venc_mbps":	30,
    			"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"
    		}, {
    			"type":	"pmd-tof-liow2",
    			"name":	"tof",
    			"enabled":	true,
    			"camera_id":	2,
    			"fps":	10,
    			"en_rotate":	true,
    			"ae_mode":	"off",
    			"exposure_max_us":	6000,
    			"standby_enabled":	false,
    			"decimator":	5
    		}, {
    			"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,
    			"ae_mode":	"lme_msv",
    			"ae_desired_msv":	60,
    			"exposure_min_us":	20,
    			"exposure_max_us":	33000,
    			"gain_min":	54,
    			"gain_max":	8000,
    			"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
    		}]
    }
    voxl2:/$ cat /etc/modalai/voxl-qvio-server.conf 
    /**
     * This file contains configuration that's specific to voxl-qvio-server.
     *
     * voxl-qvio-server also uses parameters from the following config files:
     * /etc/modalai/extrinsics.conf
     * /data/modalai/opencv_tracking_intrinsics.yml
     *
     * parameter descriptions:
     *
     * mask_file_path: A file path for qvio mask.
     * 1/4 resolution image (w.r.t. VGA), 160 x 120,
     * PGM format, the part of the camera view for which
     * pixels are set to 255 is blocked from feature
     * detection useful, e.g., to avoid detecting & tracking
     * points on landing gear reaching into camera view.
     *
     * imu_name: VOXL uses imu1 by defualt since it's the most reliable. On
     * VOXL-FLIGHT you can optionally try imu0 which is a newer icm42688
     * voxl-configure-mpa will decide which IMU to use for you.
     *
     * cam_name: camera to use, defaults to tracking0
     *
     * odr_hz: Output data date is independent from the camera frame rate so you can
     * choose the desired output data rate. Note that voxl-imu-server defaults to
     * 500hz imu sampling but new data is received by voxl-qvio-server at 100hz by
     * default so requesting qvio data faster requires updating voxl-imu-server.
     *
     * use_camera_height_bootstrap: When enabled, the feature estimator will assume
     * the system starts up with the camera pointed partially at the ground and use
     * this to make an intial guess of the feature's depth. This should be enabled
     * for drones that have known-height landing gear.
     *
     * camera_height_off_ground_m: camera distance above ground (meters) for the
     * above bootstrap feature.
     *
     * enable_init_while_moving: optionally allow the algorithm to initialize or
     * reinitialize while moving. Use this if you want to be able to reinitialize
     * during flight. Based on camera motion, not IMU motion. Recommended to leave
     * this off unless absolutely desired.
     *
     * cam_imu_timeshift_s: Misalignment between camera and imu timestamp in
     * seconds.
     *
     * cam_imu_timeshift_s_uncertainty: uncertainty in camera imu timestamp
     * misalignment
     *
     * T_cam_wrt_imu_uncertainty[3] & R_cam_to_imu_uncertainty[3]: uncertainty in
     * camera-imu translation
     *
     * accl_fsr_ms2 & gyro_fsr_rad: Full scale range used to detect clipping. By
     * default this is set to a little under the real 16G and 2000DPS FSR so
     * clipping is detected reliably
     *
     * accl_noise_std_dev & gyro_noise_std_dev: standard deviation of accl and gyro
     * noise
     *
     * cam_noise_std_dev: Standard dev of camera noise per pixel.
     *
     * min_std_pixel_noise: Minimum of standard deviation of feature measurement
     * noise in pixels.
     *
     * fail_high_pixel_noise_points: Scales measurement noise and compares against
     * search area (is search area large enough to reliably compute measurement
     * noise covariance matrix).
     *
     * limited_imu_bw_trigger: To prevent tracking failure during/right after (hard)
     * landing: If sum of 3 consecutive accelerometer samples in any dimension
     * divided by 4.3 exceed this threshold, IMU measurement noise is increased (and
     * resets become more likely); if platform vibrates heavily during flight, this
     * may trigger mid- flight; if poseQuality in mvVISLAMPose drops to
     * MV_TRACKING_STATE_LOW_QUALITY during flight, improve mechanical dampening
     * (and/or increase threshold). QC default is 35, we prefer 25.
     *
     * gps_imu_time_alignment_s: Misalignment between GPS and IMU time in seconds
     *
     * T_gps_wrt_imu: location of gps with respect to the IMU in meters
     *
     * enable_mapping: rudimentary lightweight mapping of feature points, leave this
     * on.
     *
     * enable_gps_vel: allow gps velocity to be added to VIO, requires ModalAI
     * custom PX4 firmware to expose this data. This is an Alpha feature, don't
     * enable this unless instructed to.
     *
     *
     *
     * en_auto_reset: on by default. If any one of the following thresholds are met
     * voxl-qvio-server will assume an otherwise undetected fault has occured in
     * the inderlying algorithm and will hard reset the QVIO library.
     *
     * auto_reset_max_velocity: meters per second, if velocity faster than this is
     * detected then an auto-reset is triggered
     *
     * auto_reset_max_v_cov_instant: if the covariance of the velocity estimate ever
     * exceeds this for a since sample then an auto-reset is triggered
     *
     * auto_reset_max_v_cov: if th covariance of the velocity estimate ever exceeds
     * this for more than auto_reset_max_v_cov_timeout_s then an auto-reset is triggered
     *
     * auto_reset_max_v_cov_timeout_s: time period for auto_reset_max_v_cov criteria
     *
     * auto_reset_min_features: if fewer than this number of features are tracked for
     * more than auto_reset_min_feature_timeout_s then an auto-reset is triggered.
     * it is okay for feature tracking to be lost for short periods of time.
     *
     *
     *
     * en_standby_mode: When enabled, qvio will skip camera frames while voxl-cpu-monitor
     *                  reports that the CPU is in standby mode.
     *
     * standby_skip_frames: number of frames to skip before processing one. default is 1,
                            meaning skip every other frame. 30 -> 15hz
     */
    {
    	"imu_name":	"imu_apps",
    	"cam_name":	"tracking_front",
    	"lens_cal_path":	"/data/modalai/opencv_tracking_front_intrinsics.yml",
    	"cam_extrinsics_name":	"tracking_front",
    	"use_second_cam_if_stereo":	false,
    	"odr_hz":	30,
    	"use_camera_height_bootstrap":	true,
    	"camera_height_off_ground_m":	0.085000000894069672,
    	"enable_init_while_moving":	false,
    	"cam_imu_timeshift_s":	-0.0020000000949949026,
    	"cam_imu_timeshift_s_uncertainty":	0.0010000000474974513,
    	"T_cam_wrt_imu_uncertainty":	[0.00050000002374872565, 0.00050000002374872565, 0.00050000002374872565],
    	"R_cam_to_imu_uncertainty":	[0.00499999988824129, 0.00499999988824129, 0.00499999988824129],
    	"accl_fsr_ms2":	156,
    	"gyro_fsr_rad":	34,
    	"accl_noise_std_dev":	0.31600001454353333,
    	"gyro_noise_std_dev":	0.00999999977648258,
    	"cam_noise_std_dev":	100,
    	"min_std_pixel_noise":	0.5,
    	"fail_high_pixel_noise_points":	1.6650999784469604,
    	"limited_imu_bw_trigger":	25,
    	"gps_imu_time_alignment_s":	0,
    	"T_gps_wrt_imu":	[0, 0, 0],
    	"enable_mapping":	true,
    	"enable_gps_vel":	false,
    	"en_auto_reset":	true,
    	"auto_reset_max_velocity":	10,
    	"auto_reset_max_v_cov_instant":	0.10000000149011612,
    	"auto_reset_max_v_cov":	0.00999999977648258,
    	"auto_reset_max_v_cov_timeout_s":	0.5,
    	"auto_reset_min_features":	3,
    	"auto_reset_min_feature_timeout_s":	1,
    	"en_standby_mode":	true,
    	"standby_skip_frames":	1,
    	"mask_file_path":	""
    }
    voxl2:/$ 
    
    ModeratorM 2 Replies Last reply
    0
    • N nuallaino

      Hello,
      I recently received a Startling 2 drone and have been trying to get the Mapper functionality to work.

      I tried SDK 1.3.3 and then tried 1.3.4-202409192201.

      TOF seems to be working fine, as is the tracking_front camera however QVIO is not. See the attached screenshot and logs.

      Any advice on how to resolve this would be appreciated.

      Screenshot 2024-09-20 122435.png

      voxl2:/$ voxl-inspect-qvio 
      waiting for server
      
       dt(ms) |    T_imu_wrt_vio (m)   |Roll Pitch Yaw (deg)|features|quality| state| error_codes |
         31.1 |    0.00    0.00    0.00|   0.0   -0.0    0.0|     0  |   -1% | FAIL | CAM_MISSING CAM_BAD_RES STALLED ^C
      received SIGINT Ctrl-C
      
      closing and exiting
      voxl2:/$ voxl-inspect-services
      Scanning services...
      
       Service Name             |  Enabled  |   Running   |  CPU Usage
      -------------------------------------------------------------------
       docker-autorun           | Disabled  | Not Running |  
       modallink-relink         | Disabled  | Not Running |  
       voxl-camera-server       |  Enabled  |   Running   |    93.9%
       voxl-cpu-monitor         |  Enabled  |   Running   |     0.3%
       voxl-dfs-server          | Disabled  | Not Running |  
       voxl-feature-tracker     | Disabled  | Not Running |  
       voxl-flow-server         | Disabled  | Not Running |  
       voxl-imu-server          |  Enabled  |   Running   |     3.6%
       voxl-lepton-server       | Disabled  | Not Running |  
       voxl-lepton-tracker      | Disabled  | Not Running |  
       voxl-logger              | Disabled  | Not Running |  
       voxl-mavcam-manager      |  Enabled  |   Running   |     0.0%
       voxl-mavlink-server      |  Enabled  |   Running   |     3.1%
       voxl-modem               | Disabled  | Not Running |  
       voxl-neopixel-manager    | Disabled  | Not Running |  
       voxl-open-vins-server    | Disabled  | Not Running |  
       voxl-osd                 | Disabled  | Not Running |  
       voxl-portal              |  Enabled  |   Running   |    24.1%
       voxl-px4-imu-server      | Disabled  | Not Running |  
       voxl-px4                 |  Enabled  |   Running   |    21.6%
       voxl-qvio-server         |  Enabled  |   Running   |     5.0%
       voxl-rangefinder-server  |  Enabled  |   Running   |     0.5%
       voxl-remote-id           | Disabled  | Not Running |  
       voxl-softap              | Disabled  | Not Running |  
       voxl-state-estimator     | Disabled  | Not Running |  
       voxl-static-ip           | Disabled  | Not Running |  
       voxl-streamer            |  Enabled  |   Running   |     0.0%
       voxl-tag-detector        | Disabled  | Not Running |  
       voxl-tflite-server       | Disabled  | Not Running |  
       voxl-time-sync           | Disabled  | Not Running |  
       voxl-uvc-server          | Disabled  | Not Running |  
       voxl-vision-hub          |  Enabled  |   Running   |     4.1%
       voxl-vrx                 | Disabled  | Not Running |  
       voxl-vtx                 | Disabled  | Not Running |  
       voxl-wait-for-fs         |  Enabled  |  Completed  |  
      voxl2:/$ cat /etc/modalai/voxl-camera-server.conf 
      /**
       * 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":	30,
      			"en_rotate":	true,
      			"en_preview":	true,
      			"preview_width":	1280,
      			"preview_height":	800,
      			"en_raw_preview":	true,
      			"ae_mode":	"lme_msv",
      			"ae_desired_msv":	60,
      			"exposure_min_us":	20,
      			"exposure_max_us":	33000,
      			"gain_min":	54,
      			"gain_max":	8000,
      			"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
      		}, {
      			"type":	"imx412",
      			"name":	"hires",
      			"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":	"h265",
      			"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,
      			"en_large_video":	true,
      			"large_video_width":	4056,
      			"large_video_height":	3040,
      			"large_venc_mode":	"h265",
      			"large_venc_br_ctrl":	"cqp",
      			"large_venc_Qfixed":	38,
      			"large_venc_Qmin":	15,
      			"large_venc_Qmax":	50,
      			"large_venc_nPframes":	29,
      			"large_venc_mbps":	30,
      			"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"
      		}, {
      			"type":	"pmd-tof-liow2",
      			"name":	"tof",
      			"enabled":	true,
      			"camera_id":	2,
      			"fps":	10,
      			"en_rotate":	true,
      			"ae_mode":	"off",
      			"exposure_max_us":	6000,
      			"standby_enabled":	false,
      			"decimator":	5
      		}, {
      			"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,
      			"ae_mode":	"lme_msv",
      			"ae_desired_msv":	60,
      			"exposure_min_us":	20,
      			"exposure_max_us":	33000,
      			"gain_min":	54,
      			"gain_max":	8000,
      			"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
      		}]
      }
      voxl2:/$ cat /etc/modalai/voxl-qvio-server.conf 
      /**
       * This file contains configuration that's specific to voxl-qvio-server.
       *
       * voxl-qvio-server also uses parameters from the following config files:
       * /etc/modalai/extrinsics.conf
       * /data/modalai/opencv_tracking_intrinsics.yml
       *
       * parameter descriptions:
       *
       * mask_file_path: A file path for qvio mask.
       * 1/4 resolution image (w.r.t. VGA), 160 x 120,
       * PGM format, the part of the camera view for which
       * pixels are set to 255 is blocked from feature
       * detection useful, e.g., to avoid detecting & tracking
       * points on landing gear reaching into camera view.
       *
       * imu_name: VOXL uses imu1 by defualt since it's the most reliable. On
       * VOXL-FLIGHT you can optionally try imu0 which is a newer icm42688
       * voxl-configure-mpa will decide which IMU to use for you.
       *
       * cam_name: camera to use, defaults to tracking0
       *
       * odr_hz: Output data date is independent from the camera frame rate so you can
       * choose the desired output data rate. Note that voxl-imu-server defaults to
       * 500hz imu sampling but new data is received by voxl-qvio-server at 100hz by
       * default so requesting qvio data faster requires updating voxl-imu-server.
       *
       * use_camera_height_bootstrap: When enabled, the feature estimator will assume
       * the system starts up with the camera pointed partially at the ground and use
       * this to make an intial guess of the feature's depth. This should be enabled
       * for drones that have known-height landing gear.
       *
       * camera_height_off_ground_m: camera distance above ground (meters) for the
       * above bootstrap feature.
       *
       * enable_init_while_moving: optionally allow the algorithm to initialize or
       * reinitialize while moving. Use this if you want to be able to reinitialize
       * during flight. Based on camera motion, not IMU motion. Recommended to leave
       * this off unless absolutely desired.
       *
       * cam_imu_timeshift_s: Misalignment between camera and imu timestamp in
       * seconds.
       *
       * cam_imu_timeshift_s_uncertainty: uncertainty in camera imu timestamp
       * misalignment
       *
       * T_cam_wrt_imu_uncertainty[3] & R_cam_to_imu_uncertainty[3]: uncertainty in
       * camera-imu translation
       *
       * accl_fsr_ms2 & gyro_fsr_rad: Full scale range used to detect clipping. By
       * default this is set to a little under the real 16G and 2000DPS FSR so
       * clipping is detected reliably
       *
       * accl_noise_std_dev & gyro_noise_std_dev: standard deviation of accl and gyro
       * noise
       *
       * cam_noise_std_dev: Standard dev of camera noise per pixel.
       *
       * min_std_pixel_noise: Minimum of standard deviation of feature measurement
       * noise in pixels.
       *
       * fail_high_pixel_noise_points: Scales measurement noise and compares against
       * search area (is search area large enough to reliably compute measurement
       * noise covariance matrix).
       *
       * limited_imu_bw_trigger: To prevent tracking failure during/right after (hard)
       * landing: If sum of 3 consecutive accelerometer samples in any dimension
       * divided by 4.3 exceed this threshold, IMU measurement noise is increased (and
       * resets become more likely); if platform vibrates heavily during flight, this
       * may trigger mid- flight; if poseQuality in mvVISLAMPose drops to
       * MV_TRACKING_STATE_LOW_QUALITY during flight, improve mechanical dampening
       * (and/or increase threshold). QC default is 35, we prefer 25.
       *
       * gps_imu_time_alignment_s: Misalignment between GPS and IMU time in seconds
       *
       * T_gps_wrt_imu: location of gps with respect to the IMU in meters
       *
       * enable_mapping: rudimentary lightweight mapping of feature points, leave this
       * on.
       *
       * enable_gps_vel: allow gps velocity to be added to VIO, requires ModalAI
       * custom PX4 firmware to expose this data. This is an Alpha feature, don't
       * enable this unless instructed to.
       *
       *
       *
       * en_auto_reset: on by default. If any one of the following thresholds are met
       * voxl-qvio-server will assume an otherwise undetected fault has occured in
       * the inderlying algorithm and will hard reset the QVIO library.
       *
       * auto_reset_max_velocity: meters per second, if velocity faster than this is
       * detected then an auto-reset is triggered
       *
       * auto_reset_max_v_cov_instant: if the covariance of the velocity estimate ever
       * exceeds this for a since sample then an auto-reset is triggered
       *
       * auto_reset_max_v_cov: if th covariance of the velocity estimate ever exceeds
       * this for more than auto_reset_max_v_cov_timeout_s then an auto-reset is triggered
       *
       * auto_reset_max_v_cov_timeout_s: time period for auto_reset_max_v_cov criteria
       *
       * auto_reset_min_features: if fewer than this number of features are tracked for
       * more than auto_reset_min_feature_timeout_s then an auto-reset is triggered.
       * it is okay for feature tracking to be lost for short periods of time.
       *
       *
       *
       * en_standby_mode: When enabled, qvio will skip camera frames while voxl-cpu-monitor
       *                  reports that the CPU is in standby mode.
       *
       * standby_skip_frames: number of frames to skip before processing one. default is 1,
                              meaning skip every other frame. 30 -> 15hz
       */
      {
      	"imu_name":	"imu_apps",
      	"cam_name":	"tracking_front",
      	"lens_cal_path":	"/data/modalai/opencv_tracking_front_intrinsics.yml",
      	"cam_extrinsics_name":	"tracking_front",
      	"use_second_cam_if_stereo":	false,
      	"odr_hz":	30,
      	"use_camera_height_bootstrap":	true,
      	"camera_height_off_ground_m":	0.085000000894069672,
      	"enable_init_while_moving":	false,
      	"cam_imu_timeshift_s":	-0.0020000000949949026,
      	"cam_imu_timeshift_s_uncertainty":	0.0010000000474974513,
      	"T_cam_wrt_imu_uncertainty":	[0.00050000002374872565, 0.00050000002374872565, 0.00050000002374872565],
      	"R_cam_to_imu_uncertainty":	[0.00499999988824129, 0.00499999988824129, 0.00499999988824129],
      	"accl_fsr_ms2":	156,
      	"gyro_fsr_rad":	34,
      	"accl_noise_std_dev":	0.31600001454353333,
      	"gyro_noise_std_dev":	0.00999999977648258,
      	"cam_noise_std_dev":	100,
      	"min_std_pixel_noise":	0.5,
      	"fail_high_pixel_noise_points":	1.6650999784469604,
      	"limited_imu_bw_trigger":	25,
      	"gps_imu_time_alignment_s":	0,
      	"T_gps_wrt_imu":	[0, 0, 0],
      	"enable_mapping":	true,
      	"enable_gps_vel":	false,
      	"en_auto_reset":	true,
      	"auto_reset_max_velocity":	10,
      	"auto_reset_max_v_cov_instant":	0.10000000149011612,
      	"auto_reset_max_v_cov":	0.00999999977648258,
      	"auto_reset_max_v_cov_timeout_s":	0.5,
      	"auto_reset_min_features":	3,
      	"auto_reset_min_feature_timeout_s":	1,
      	"en_standby_mode":	true,
      	"standby_skip_frames":	1,
      	"mask_file_path":	""
      }
      voxl2:/$ 
      
      ModeratorM Offline
      ModeratorM Offline
      Moderator
      ModalAI Team
      wrote on last edited by
      #2
      This post is deleted!
      1 Reply Last reply
      0
      • N nuallaino

        Hello,
        I recently received a Startling 2 drone and have been trying to get the Mapper functionality to work.

        I tried SDK 1.3.3 and then tried 1.3.4-202409192201.

        TOF seems to be working fine, as is the tracking_front camera however QVIO is not. See the attached screenshot and logs.

        Any advice on how to resolve this would be appreciated.

        Screenshot 2024-09-20 122435.png

        voxl2:/$ voxl-inspect-qvio 
        waiting for server
        
         dt(ms) |    T_imu_wrt_vio (m)   |Roll Pitch Yaw (deg)|features|quality| state| error_codes |
           31.1 |    0.00    0.00    0.00|   0.0   -0.0    0.0|     0  |   -1% | FAIL | CAM_MISSING CAM_BAD_RES STALLED ^C
        received SIGINT Ctrl-C
        
        closing and exiting
        voxl2:/$ voxl-inspect-services
        Scanning services...
        
         Service Name             |  Enabled  |   Running   |  CPU Usage
        -------------------------------------------------------------------
         docker-autorun           | Disabled  | Not Running |  
         modallink-relink         | Disabled  | Not Running |  
         voxl-camera-server       |  Enabled  |   Running   |    93.9%
         voxl-cpu-monitor         |  Enabled  |   Running   |     0.3%
         voxl-dfs-server          | Disabled  | Not Running |  
         voxl-feature-tracker     | Disabled  | Not Running |  
         voxl-flow-server         | Disabled  | Not Running |  
         voxl-imu-server          |  Enabled  |   Running   |     3.6%
         voxl-lepton-server       | Disabled  | Not Running |  
         voxl-lepton-tracker      | Disabled  | Not Running |  
         voxl-logger              | Disabled  | Not Running |  
         voxl-mavcam-manager      |  Enabled  |   Running   |     0.0%
         voxl-mavlink-server      |  Enabled  |   Running   |     3.1%
         voxl-modem               | Disabled  | Not Running |  
         voxl-neopixel-manager    | Disabled  | Not Running |  
         voxl-open-vins-server    | Disabled  | Not Running |  
         voxl-osd                 | Disabled  | Not Running |  
         voxl-portal              |  Enabled  |   Running   |    24.1%
         voxl-px4-imu-server      | Disabled  | Not Running |  
         voxl-px4                 |  Enabled  |   Running   |    21.6%
         voxl-qvio-server         |  Enabled  |   Running   |     5.0%
         voxl-rangefinder-server  |  Enabled  |   Running   |     0.5%
         voxl-remote-id           | Disabled  | Not Running |  
         voxl-softap              | Disabled  | Not Running |  
         voxl-state-estimator     | Disabled  | Not Running |  
         voxl-static-ip           | Disabled  | Not Running |  
         voxl-streamer            |  Enabled  |   Running   |     0.0%
         voxl-tag-detector        | Disabled  | Not Running |  
         voxl-tflite-server       | Disabled  | Not Running |  
         voxl-time-sync           | Disabled  | Not Running |  
         voxl-uvc-server          | Disabled  | Not Running |  
         voxl-vision-hub          |  Enabled  |   Running   |     4.1%
         voxl-vrx                 | Disabled  | Not Running |  
         voxl-vtx                 | Disabled  | Not Running |  
         voxl-wait-for-fs         |  Enabled  |  Completed  |  
        voxl2:/$ cat /etc/modalai/voxl-camera-server.conf 
        /**
         * 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":	30,
        			"en_rotate":	true,
        			"en_preview":	true,
        			"preview_width":	1280,
        			"preview_height":	800,
        			"en_raw_preview":	true,
        			"ae_mode":	"lme_msv",
        			"ae_desired_msv":	60,
        			"exposure_min_us":	20,
        			"exposure_max_us":	33000,
        			"gain_min":	54,
        			"gain_max":	8000,
        			"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
        		}, {
        			"type":	"imx412",
        			"name":	"hires",
        			"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":	"h265",
        			"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,
        			"en_large_video":	true,
        			"large_video_width":	4056,
        			"large_video_height":	3040,
        			"large_venc_mode":	"h265",
        			"large_venc_br_ctrl":	"cqp",
        			"large_venc_Qfixed":	38,
        			"large_venc_Qmin":	15,
        			"large_venc_Qmax":	50,
        			"large_venc_nPframes":	29,
        			"large_venc_mbps":	30,
        			"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"
        		}, {
        			"type":	"pmd-tof-liow2",
        			"name":	"tof",
        			"enabled":	true,
        			"camera_id":	2,
        			"fps":	10,
        			"en_rotate":	true,
        			"ae_mode":	"off",
        			"exposure_max_us":	6000,
        			"standby_enabled":	false,
        			"decimator":	5
        		}, {
        			"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,
        			"ae_mode":	"lme_msv",
        			"ae_desired_msv":	60,
        			"exposure_min_us":	20,
        			"exposure_max_us":	33000,
        			"gain_min":	54,
        			"gain_max":	8000,
        			"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
        		}]
        }
        voxl2:/$ cat /etc/modalai/voxl-qvio-server.conf 
        /**
         * This file contains configuration that's specific to voxl-qvio-server.
         *
         * voxl-qvio-server also uses parameters from the following config files:
         * /etc/modalai/extrinsics.conf
         * /data/modalai/opencv_tracking_intrinsics.yml
         *
         * parameter descriptions:
         *
         * mask_file_path: A file path for qvio mask.
         * 1/4 resolution image (w.r.t. VGA), 160 x 120,
         * PGM format, the part of the camera view for which
         * pixels are set to 255 is blocked from feature
         * detection useful, e.g., to avoid detecting & tracking
         * points on landing gear reaching into camera view.
         *
         * imu_name: VOXL uses imu1 by defualt since it's the most reliable. On
         * VOXL-FLIGHT you can optionally try imu0 which is a newer icm42688
         * voxl-configure-mpa will decide which IMU to use for you.
         *
         * cam_name: camera to use, defaults to tracking0
         *
         * odr_hz: Output data date is independent from the camera frame rate so you can
         * choose the desired output data rate. Note that voxl-imu-server defaults to
         * 500hz imu sampling but new data is received by voxl-qvio-server at 100hz by
         * default so requesting qvio data faster requires updating voxl-imu-server.
         *
         * use_camera_height_bootstrap: When enabled, the feature estimator will assume
         * the system starts up with the camera pointed partially at the ground and use
         * this to make an intial guess of the feature's depth. This should be enabled
         * for drones that have known-height landing gear.
         *
         * camera_height_off_ground_m: camera distance above ground (meters) for the
         * above bootstrap feature.
         *
         * enable_init_while_moving: optionally allow the algorithm to initialize or
         * reinitialize while moving. Use this if you want to be able to reinitialize
         * during flight. Based on camera motion, not IMU motion. Recommended to leave
         * this off unless absolutely desired.
         *
         * cam_imu_timeshift_s: Misalignment between camera and imu timestamp in
         * seconds.
         *
         * cam_imu_timeshift_s_uncertainty: uncertainty in camera imu timestamp
         * misalignment
         *
         * T_cam_wrt_imu_uncertainty[3] & R_cam_to_imu_uncertainty[3]: uncertainty in
         * camera-imu translation
         *
         * accl_fsr_ms2 & gyro_fsr_rad: Full scale range used to detect clipping. By
         * default this is set to a little under the real 16G and 2000DPS FSR so
         * clipping is detected reliably
         *
         * accl_noise_std_dev & gyro_noise_std_dev: standard deviation of accl and gyro
         * noise
         *
         * cam_noise_std_dev: Standard dev of camera noise per pixel.
         *
         * min_std_pixel_noise: Minimum of standard deviation of feature measurement
         * noise in pixels.
         *
         * fail_high_pixel_noise_points: Scales measurement noise and compares against
         * search area (is search area large enough to reliably compute measurement
         * noise covariance matrix).
         *
         * limited_imu_bw_trigger: To prevent tracking failure during/right after (hard)
         * landing: If sum of 3 consecutive accelerometer samples in any dimension
         * divided by 4.3 exceed this threshold, IMU measurement noise is increased (and
         * resets become more likely); if platform vibrates heavily during flight, this
         * may trigger mid- flight; if poseQuality in mvVISLAMPose drops to
         * MV_TRACKING_STATE_LOW_QUALITY during flight, improve mechanical dampening
         * (and/or increase threshold). QC default is 35, we prefer 25.
         *
         * gps_imu_time_alignment_s: Misalignment between GPS and IMU time in seconds
         *
         * T_gps_wrt_imu: location of gps with respect to the IMU in meters
         *
         * enable_mapping: rudimentary lightweight mapping of feature points, leave this
         * on.
         *
         * enable_gps_vel: allow gps velocity to be added to VIO, requires ModalAI
         * custom PX4 firmware to expose this data. This is an Alpha feature, don't
         * enable this unless instructed to.
         *
         *
         *
         * en_auto_reset: on by default. If any one of the following thresholds are met
         * voxl-qvio-server will assume an otherwise undetected fault has occured in
         * the inderlying algorithm and will hard reset the QVIO library.
         *
         * auto_reset_max_velocity: meters per second, if velocity faster than this is
         * detected then an auto-reset is triggered
         *
         * auto_reset_max_v_cov_instant: if the covariance of the velocity estimate ever
         * exceeds this for a since sample then an auto-reset is triggered
         *
         * auto_reset_max_v_cov: if th covariance of the velocity estimate ever exceeds
         * this for more than auto_reset_max_v_cov_timeout_s then an auto-reset is triggered
         *
         * auto_reset_max_v_cov_timeout_s: time period for auto_reset_max_v_cov criteria
         *
         * auto_reset_min_features: if fewer than this number of features are tracked for
         * more than auto_reset_min_feature_timeout_s then an auto-reset is triggered.
         * it is okay for feature tracking to be lost for short periods of time.
         *
         *
         *
         * en_standby_mode: When enabled, qvio will skip camera frames while voxl-cpu-monitor
         *                  reports that the CPU is in standby mode.
         *
         * standby_skip_frames: number of frames to skip before processing one. default is 1,
                                meaning skip every other frame. 30 -> 15hz
         */
        {
        	"imu_name":	"imu_apps",
        	"cam_name":	"tracking_front",
        	"lens_cal_path":	"/data/modalai/opencv_tracking_front_intrinsics.yml",
        	"cam_extrinsics_name":	"tracking_front",
        	"use_second_cam_if_stereo":	false,
        	"odr_hz":	30,
        	"use_camera_height_bootstrap":	true,
        	"camera_height_off_ground_m":	0.085000000894069672,
        	"enable_init_while_moving":	false,
        	"cam_imu_timeshift_s":	-0.0020000000949949026,
        	"cam_imu_timeshift_s_uncertainty":	0.0010000000474974513,
        	"T_cam_wrt_imu_uncertainty":	[0.00050000002374872565, 0.00050000002374872565, 0.00050000002374872565],
        	"R_cam_to_imu_uncertainty":	[0.00499999988824129, 0.00499999988824129, 0.00499999988824129],
        	"accl_fsr_ms2":	156,
        	"gyro_fsr_rad":	34,
        	"accl_noise_std_dev":	0.31600001454353333,
        	"gyro_noise_std_dev":	0.00999999977648258,
        	"cam_noise_std_dev":	100,
        	"min_std_pixel_noise":	0.5,
        	"fail_high_pixel_noise_points":	1.6650999784469604,
        	"limited_imu_bw_trigger":	25,
        	"gps_imu_time_alignment_s":	0,
        	"T_gps_wrt_imu":	[0, 0, 0],
        	"enable_mapping":	true,
        	"enable_gps_vel":	false,
        	"en_auto_reset":	true,
        	"auto_reset_max_velocity":	10,
        	"auto_reset_max_v_cov_instant":	0.10000000149011612,
        	"auto_reset_max_v_cov":	0.00999999977648258,
        	"auto_reset_max_v_cov_timeout_s":	0.5,
        	"auto_reset_min_features":	3,
        	"auto_reset_min_feature_timeout_s":	1,
        	"en_standby_mode":	true,
        	"standby_skip_frames":	1,
        	"mask_file_path":	""
        }
        voxl2:/$ 
        
        ModeratorM Offline
        ModeratorM Offline
        Moderator
        ModalAI Team
        wrote on last edited by
        #3

        @nuallaino you can see how that error is generated here: https://gitlab.com/voxl-public/voxl-sdk/services/voxl-qvio-server/-/blob/master/server/main.cpp?ref_type=heads#L683

        N 1 Reply Last reply
        0
        • ModeratorM Moderator

          @nuallaino you can see how that error is generated here: https://gitlab.com/voxl-public/voxl-sdk/services/voxl-qvio-server/-/blob/master/server/main.cpp?ref_type=heads#L683

          N Offline
          N Offline
          nuallaino
          Contributor
          wrote on last edited by
          #4

          @Moderator Yes, I did see that. However I expected this to work out of the box. I haven't changed anything.

          1 Reply Last reply
          0

          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

          With your input, this post could be even better 💗

          Register Login
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          ModalAI
          Categories Recent Tags ModalAI.com Docs
          © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
          • Login

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • Users
          • Groups