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

    QVIO unstable flight. Please help!

    GPS-denied Navigation (VIO)
    3
    6
    62
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Daniel RinconD
      Daniel Rincon
      last edited by

      Hello! very good morning! I am trying to develop a safe and efficient solution to control the drone in a simple way, the idea is to manage the drone through actions with the Mavlink server (I already have it, I can take off the drone from QGC) the problem is to get stability, the drone flies most of the time in an unstable way, i have configured the voxl-vision-hub with qvio, and i have also tried with ov, but in none of the two is stable, i take off the drone in position mode and what it does most of the times is not to keep its position, but to start flying uncontrolled, upwards or sideways.

      As you know this is totally inefficient and not applicable to the need I have, since basically the main thing is a safe and stable flight.

      I would like you to help me first to understand the difference between QVIO, VIO and OV (I have not seen anything in the documentation that explains well the difference between these three).

      And secondly to see if you can help me to be able to give the necessary configuration to be able to obtain a safe accuracy.

      I am going to leave you the configurations I have and the tests I have done.

      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
      SKU:          MRB-D0014-4-V1-C27-T7-M22-X0
      ────────────────────────────────────────────────────────────────────────────────
      voxl-suite:   1.4.5
      ────────────────────────────────────────────────────────────────────────────────
      Packages:
      Repo:  http://voxl-packages.modalai.com/ ./dists/qrb5165/sdk-1.4/binary-arm64/
      Last Updated: 2025-07-16 21:35:53
      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.18
      libmodal-exposure                         0.1.4
      libmodal-journal                          0.2.5
      libmodal-json                             0.4.7
      libmodal-pipe                             2.13.1
      libqrb5165-io                             0.5.0
      libvoxl-cci-direct                        0.3.2
      libvoxl-cutils                            0.1.5
      modalai-slpi                              1.1.20
      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.2.1
      voxl-ceres-solver                         2:1.14.0-10
      voxl-configurator                         1.0.1
      voxl-cpu-monitor                          0.6.0
      voxl-docker-support                       1.3.1
      voxl-elrs                                 0.4.7
      voxl-esc                                  1.5.2
      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-7
      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.3
      voxl-mapper                               0.2.4
      voxl-mavcam-manager                       0.5.8
      voxl-mavlink                              0.1.5
      voxl-mavlink-server                       1.4.7
      voxl-mission-manager                      1.0.6
      voxl-modem                                1.1.6
      voxl-mongoose                             7.7.0-2
      voxl-mpa-to-ros                           0.3.9
      voxl-mpa-tools                            1.4.0
      voxl-nlopt                                2.5.0-4
      voxl-open-vins                            0.4.19
      voxl-open-vins-server                     0.3.12
      voxl-opencv                               4.5.5-3
      voxl-osd                                  0.1.7
      voxl-platform-mod                         1.0-r0
      voxl-portal                               0.7.10
      voxl-px4                                  1.14.0-2.0.98
      voxl-px4-imu-server                       0.1.2
      voxl-px4-params                           0.7.3
      voxl-qvio-server                          1.2.0
      voxl-remote-id                            0.0.9
      voxl-reset-slpi                           0.0.1
      voxl-state-estimator                      0.0.5
      voxl-streamer                             0.7.5
      voxl-suite                                1.4.5
      voxl-tag-detector                         0.0.4
      voxl-tflite-server                        0.4.4
      voxl-utils                                1.4.7
      voxl-uvc-server                           0.1.7
      voxl-vision-hub                           1.8.21
      voxl-voxblox                              1.1.5
      voxl-vtx                                  1.3.14
      voxl-wavemux                              0.0.1
      voxl2-io                                  0.0.3
      voxl2-system-image                        1.8.02-r0
      voxl2-wlan                                1.0-r0
      
       Service Name             |  Enabled  |   Running   |  CPU Usage
      ───────────────────────────────────────────────────────────────────
       docker-autorun           | Disabled  | Not Running |  
       modallink-relink         | Disabled  | Not Running |  
       voxl-camera-server       |  Enabled  |   Running   |    67.9%
       voxl-cpu-monitor         |  Enabled  |   Running   |     0.0%
       voxl-dfs-server          | Disabled  | Not Running |  
       voxl-elrs-startup        | Disabled  | Not Running |  
       voxl-feature-tracker     | Disabled  | Not Running |  
       voxl-flow-server         | Disabled  | Not Running |  
       voxl-imu-server          |  Enabled  |   Running   |     1.8%
       voxl-io-server           | Disabled  | Not Running |  
       voxl-lepton-server       | Disabled  | Not Running |  
       voxl-lepton-tracker      | Disabled  | Not Running |  
       voxl-logger              | Disabled  | Not Running |  
       voxl-mapper              |  Enabled  |   Running   |    53.6%
       voxl-mavcam-manager      |  Enabled  |   Running   |     0.0%
       voxl-mavlink-server      |  Enabled  |   Running   |     5.4%
       voxl-mission-manager     |  Enabled  | Not Running |  
       voxl-modem               | Disabled  | Not Running |  
       voxl-open-vins-server    |  Enabled  |   Running   |    98.2%
       voxl-osd                 | Disabled  | Not Running |  
       voxl-portal              | Disabled  | Not Running |  
       voxl-px4-imu-server      |  Enabled  |   Running   |     1.8%
       voxl-px4                 |  Enabled  |   Running   |    28.6%
       voxl-qvio-server         |  Enabled  |   Running   |    37.5%
       voxl-rangefinder-server  |  Enabled  |   Running   |     1.8%
       voxl-remote-id           | Disabled  | Not Running |  
       voxl-seek-server         | 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       |  Enabled  |   Running   |     0.0%
       voxl-time-sync           | Disabled  | Not Running |  
       voxl-uvc-server          | Disabled  | Not Running |  
       voxl-vision-hub          |  Enabled  |   Running   |     8.9%
       voxl-vrx                 | Disabled  | Not Running |  
       voxl-vtx                 | Disabled  | Not Running |  
       voxl-wait-for-fs         |  Enabled  |  Completed  |  
      
      {
      	"config_file_version":	1,
      	"en_localhost_mavlink_udp":	true,
      	"localhost_udp_port_number":	14551,
      	"en_vio":	true,
      	"vio_pipe":	"qvio",
      	"secondary_vio_pipe":	"ov",
      	"vfc_vio_pipe":	"ov",
      	"en_reset_vio_if_initialized_inverted":	true,
      	"vio_warmup_s":	3,
      	"send_odom_while_failed":	true,
      	"horizon_cal_tolerance":	0.5,
      	"en_hitl":	false,
      	"offboard_mode":	"trajectory",
      	"follow_tag_id":	0,
      	"figure_eight_move_home":	true,
      	"robot_radius":	0.300000011920929,
      	"collision_sampling_dt":	0.1,
      	"max_lookahead_distance":	1,
      	"backtrack_seconds":	60,
      	"backtrack_rc_chan":	8,
      	"backtrack_rc_thresh":	1500,
      	"wps_move_home":	true,
      	"wps_stride":	0,
      	"wps_timeout":	0,
      	"wps_damp":	1,
      	"wps_vfc_mission":	true,
      	"wps_vfc_mission_loop":	false,
      	"wps_vfc_mission_to_ramp":	25,
      	"wps_vfc_mission_to_kp":	0.10000000149011612,
      	"wps_vfc_mission_cruise_speed":	1,
      	"en_tag_fixed_frame":	false,
      	"fixed_frame_filter_len":	5,
      	"en_transform_mavlink_pos_setpoints_from_fixed_frame":	false,
      	"vfc_rate":	100,
      	"vfc_rc_chan_min":	980,
      	"vfc_rc_chan_max":	2020,
      	"vfc_thrust_ch":	3,
      	"vfc_roll_ch":	1,
      	"vfc_pitch_ch":	2,
      	"vfc_yaw_ch":	4,
      	"vfc_submode_ch":	6,
      	"vfc_alt_mode_rc_min":	0,
      	"vfc_alt_mode_rc_max":	0,
      	"vfc_flow_mode_rc_min":	0,
      	"vfc_flow_mode_rc_max":	0,
      	"vfc_hybrid_flow_mode_rc_min":	0,
      	"vfc_hybrid_flow_mode_rc_max":	0,
      	"vfc_position_mode_rc_min":	0,
      	"vfc_position_mode_rc_max":	2100,
      	"vfc_traj_mode_rc_min":	0,
      	"vfc_traj_mode_rc_max":	0,
      	"vfc_yaw_deadband":	30,
      	"vfc_vxy_deadband":	50,
      	"vfc_vz_deadband":	150,
      	"vfc_min_thrust":	0,
      	"vfc_max_thrust":	0.800000011920929,
      	"vfc_tilt_max":	0.43599998950958252,
      	"vfc_yaw_rate_max":	3,
      	"vfc_thrust_hover":	0.5,
      	"vfc_vz_max":	1,
      	"vfc_kp_z":	5.2899999618530273,
      	"vfc_kd_z":	5.9800000190734863,
      	"vfc_vxy_max":	3,
      	"vfc_kp_xy":	0.63999998569488525,
      	"vfc_kd_xy":	2.559999942779541,
      	"vfc_kp_z_vio":	5.2899999618530273,
      	"vfc_kd_z_vio":	5.9800000190734863,
      	"vfc_kp_xy_vio":	3.2400000095367432,
      	"vfc_kd_xy_vio":	3.9600000381469727,
      	"vfc_w_filt_xy_vio":	10,
      	"vfc_w_filt_xy_flow":	3,
      	"vfc_vel_ff_factor_vio":	0.899999976158142,
      	"vfc_xy_acc_limit_vio":	2.5,
      	"vfc_max_z_delta":	3,
      	"vfc_att_transition_time":	0.5,
      	"vfc_stick_move_threshold":	30,
      	"vfc_flow_transition_time":	1,
      	"vfc_q_min":	10,
      	"vfc_points_min":	7,
      	"vfc_en_submode_announcement":	1,
      	"vfc_disable_fallback":	false,
      	"vfc_traj_csv":	"/data/voxl-vision-hub/traj.csv",
      	"en_voa":	true,
      	"voa_upper_bound_m":	-0.15000000596046448,
      	"voa_lower_bound_m":	0.15000000596046448,
      	"voa_voa_memory_s":	1,
      	"voa_max_pc_per_fusion":	100,
      	"voa_pie_max_dist_m":	20,
      	"voa_pie_min_dist_m":	0.25,
      	"voa_pie_under_trim_m":	1,
      	"voa_pie_threshold":	3,
      	"voa_send_rate_hz":	20,
      	"voa_pie_slices":	36,
      	"voa_pie_bin_depth_m":	0.15000000596046448,
      	"voa_inputs":	[{
      			"enabled":	true,
      			"type":	"point_cloud",
      			"input_pipe":	"dfs_point_cloud",
      			"frame":	"stereo_l",
      			"max_depth":	8,
      			"min_depth":	0.300000011920929,
      			"cell_size":	0.079999998211860657,
      			"threshold":	4,
      			"x_fov_deg":	68,
      			"y_fov_deg":	56,
      			"conf_cutoff":	0
      		}, {
      			"enabled":	true,
      			"type":	"point_cloud",
      			"input_pipe":	"stereo_front_pc",
      			"frame":	"stereo_front_l",
      			"max_depth":	8,
      			"min_depth":	0.300000011920929,
      			"cell_size":	0.079999998211860657,
      			"threshold":	4,
      			"x_fov_deg":	68,
      			"y_fov_deg":	56,
      			"conf_cutoff":	0
      		}, {
      			"enabled":	true,
      			"type":	"point_cloud",
      			"input_pipe":	"stereo_rear_pc",
      			"frame":	"stereo_rear_l",
      			"max_depth":	8,
      			"min_depth":	0.300000011920929,
      			"cell_size":	0.079999998211860657,
      			"threshold":	4,
      			"x_fov_deg":	68,
      			"y_fov_deg":	56,
      			"conf_cutoff":	0
      		}, {
      			"enabled":	true,
      			"type":	"tof",
      			"input_pipe":	"tof",
      			"frame":	"tof",
      			"max_depth":	6,
      			"min_depth":	0.15000000596046448,
      			"cell_size":	0.079999998211860657,
      			"threshold":	3,
      			"x_fov_deg":	106.5,
      			"y_fov_deg":	85.0999984741211,
      			"conf_cutoff":	125
      		}, {
      			"enabled":	true,
      			"type":	"rangefinder",
      			"input_pipe":	"rangefinders",
      			"frame":	"body",
      			"max_depth":	8,
      			"min_depth":	0.300000011920929,
      			"cell_size":	0.079999998211860657,
      			"threshold":	4,
      			"x_fov_deg":	68,
      			"y_fov_deg":	56,
      			"conf_cutoff":	0
      		}]
      }
      
      {
      	"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,
      	"cam_imu_timeshift_s_uncertainty":	9.99999974737875e-05,
      	"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":	""
      }
      

      finally I share with you the tests I have done:

      1. take off the drone in the place where I connect the battery (failure)
      2. move the drone manually until I saw that the z-axis coincided more or less with the movement it made, position the drone at 0, and take off (here I got more stability)
      3. reset qvio and ov, after powering up the drone, the qvio was accurate but the ov was moving crazily on the plane when static (failure)

      here are some images of the inconsistencies between qvio and ov
      Screenshot from 2025-07-23 10-46-06.png

      Screenshot from 2025-07-23 10-46-43.png

      thank you very much in advance, and sorry if the thread is too big!

      tomT 1 Reply Last reply Reply Quote 0
      • tomT
        tom admin @Daniel Rincon
        last edited by

        @Daniel-Rincon QVIO (voxl-qvio-server) and OVINS (voxl-open-vins-server) are two different VIO algorithms. Currently only one can be used at a time. If you take a look at /etc/modalai/voxl-vision-hub.conf you should be able to specify which to use.

        Daniel RinconD 1 Reply Last reply Reply Quote 0
        • Daniel RinconD
          Daniel Rincon @tom
          last edited by

          @tom Hello Tom! Yes, I understand this, but which one is more accurate? which one should I decide on in an Indoor environment? we have the Starling 2 triple tracking.

          Can you help me by answering the other questions? or is there someone in the ModalAI team who can help me?

          I have left all my settings there, and as you can see QVIO is set as the main VIO.

          tomT 1 Reply Last reply Reply Quote 0
          • tomT
            tom admin @Daniel Rincon
            last edited by

            @Daniel-Rincon Others will likely chime in, but OVINS allows you to run multi-cam VIO which in general will be more accurate than single-cam which is all that QVIO can do

            Daniel RinconD 1 Reply Last reply Reply Quote 0
            • Daniel RinconD
              Daniel Rincon @tom
              last edited by

              @tom Thanks Tom, I will wait to see if someone else joins, as this has blocked our development, thank you very much.

              zauberflote1Z 1 Reply Last reply Reply Quote 0
              • zauberflote1Z
                zauberflote1 ModalAI Team @Daniel Rincon
                last edited by

                @Daniel-Rincon,
                Please consider updating to the latest SDK release, 1.5.0, if you haven't already. This has our latest VIO public development.

                As Tom mentioned, OV in 1.5.0 can use a binocular+ tracking, i.e., number of cams => 2 without stereo matching. This improves VIO robustness significantly compared to the single cam QVIO. Hence, OV should be preferred.

                Additionally, I would recommend redoing a full calibration of all sensors (IMU, PX4, Cams) and checking if the extrinsics file is correct.

                This should improve your flight performance.

                I hope this clarifies some of your questions

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