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

ModalAI Forum

  1. ModalAI Support Forum
  2. Ask your questions right here!
  3. QVIO Output Interpretation

QVIO Output Interpretation

Scheduled Pinned Locked Moved Ask your questions right here!
5 Posts 2 Posters 1.1k 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.
  • Steve TurnerS Offline
    Steve TurnerS Offline
    Steve Turner
    wrote on last edited by
    #1

    QVIO Orientation

    We've recently upgraded to the most recent QVIO server (8.2) and it seems like QVIO is blowing up more frequently. We do have custom extrinsic configuration given the location of tracking/IMU in our platform, but have not changed that.

    Is this the correct interpretation of QVIO outputs before rotation into PX4?

    d6123ad9-745c-440b-a7f4-678be0bf1099-image.png

    9e301018-bcfc-4303-8ac8-34de3d555309-image.png

    1 Reply Last reply
    0
    • Steve TurnerS Offline
      Steve TurnerS Offline
      Steve Turner
      wrote on last edited by
      #2

      Followup to this one.

      First -- kudos on the video posted to:

      Second, we have one platform we can't seem to get stable under VIO.

      Link Preview Image
      Flight Review

      favicon

      (review.px4.io)

      Seems like we have good features in QVIO:
      00528.png

      It looks like we have significant yaw authority and rate issues which cause it to become unstable. But we don't have this issue on our smaller platforms.

      I can also upload voxl-logger output if that helps.

      1 Reply Last reply
      0
      • Steve TurnerS Offline
        Steve TurnerS Offline
        Steve Turner
        wrote on last edited by Steve Turner
        #3

        We've defaulted back to the "standard" translation measurements in extrinsics file to see if that was the source of issues for us. Rotation as follows...

        VOXL is rolled 180 degrees to be "upside down" in our frame.
        Tracking to IMU relation is then rolled 180 "back", pitched 45, and "yawed" 90 to get the camera aligned as: 54330e8c-f9d8-416f-b41f-fa2a5501cff2-image.png just as the m500 or other non-seeker ModalAI platforms.

        voxl:~$ voxl-inspect-extrinsics
        #0:
            parent:                imu1
            child:                 imu0
            T_child_wrt_parent:   -0.048   0.037   0.002
            RPY_parent_to_child:   0.0     0.0     0.0
            R_child_to_parent:     1.000  -0.000   0.000
                                   0.000   1.000  -0.000
                                   0.000   0.000   1.000
        #1:
            parent:                imu0
            child:                 tracking
            T_child_wrt_parent:    0.060  -0.014   0.011
            RPY_parent_to_child: 180.0    45.0    90.0
            R_child_to_parent:     0.000  -0.707   0.707
                                  -1.000  -0.000  -0.000
                                   0.000  -0.707  -0.707
        #2:
            parent:                imu1
            child:                 tracking
            T_child_wrt_parent:    0.012   0.015   0.013
            RPY_parent_to_child: 180.0    45.0    90.0
            R_child_to_parent:     0.000  -0.707   0.707
                                  -1.000  -0.000  -0.000
                                   0.000  -0.707  -0.707
        #3:
            parent:                body
            child:                 imu0
            T_child_wrt_parent:    0.000   0.014  -0.008
            RPY_parent_to_child: 180.0     0.0     0.0
            R_child_to_parent:     1.000  -0.000   0.000
                                   0.000  -1.000  -0.000
                                   0.000   0.000  -1.000
        #4:
            parent:                body
            child:                 imu1
            T_child_wrt_parent:    0.049  -0.015  -0.011
            RPY_parent_to_child: 180.0     0.0     0.0
            R_child_to_parent:     1.000  -0.000   0.000
                                   0.000  -1.000  -0.000
                                   0.000   0.000  -1.000
        #5:
            parent:                body
            child:                 stereo_l
            T_child_wrt_parent:    0.065  -0.040   0.000
            RPY_parent_to_child:   0.0    90.0    90.0
            R_child_to_parent:     0.000  -0.000   1.000
                                   1.000   0.000  -0.000
                                  -0.000   1.000   0.000
        #6:
            parent:                body
            child:                 tof
            T_child_wrt_parent:    0.065  -0.013   0.010
            RPY_parent_to_child:   0.0    90.0    90.0
            R_child_to_parent:     0.000  -0.000   1.000
                                   1.000   0.000  -0.000
                                  -0.000   1.000   0.000
        #7:
            parent:                body
            child:                 ground
            T_child_wrt_parent:    0.000   0.000   0.029
            RPY_parent_to_child:   0.0     0.0     0.0
            R_child_to_parent:     1.000  -0.000   0.000
                                   0.000   1.000  -0.000
                                   0.000   0.000   1.000
        

        Here's a log file from an attempt at offboard figure 8. https://review.px4.io/plot_app?log=101ea9c4-9b0c-40a3-9859-a92019adf168

        Accumulated a lot of errors and eventually had to take control. Good features available in the environment.

        1 Reply Last reply
        0
        • Steve TurnerS Offline
          Steve TurnerS Offline
          Steve Turner
          wrote on last edited by Steve Turner
          #4

          In case anyone else comes on this thread --

          https://gitlab.com/voxl-public/voxl-sdk/core-libs/libmodal-pipe/-/blob/master/library/include/modal_pipe_interfaces.h#L848 defines the VIO messages within MPA.

          float T_imu_wrt_vio[3]; contains the translation in x, y, z and is what is printed in the overlay within VOXL Portal.

          • Positive X = Forward
          • Positive Y = Left
          • Positive Z = Increase in Altitude

          If you then look in the Odometry messages used by PX4 or run voxl-inspect-pose these coordinates will be in FRD/NED frame of reference which is:
          Positive X = Forward
          Positive Y = Right
          Positive Z = Decrease Altitude
          (I think I've got this right -- hopefully someone from Modal can confirm)

          https://gitlab.com/voxl-public/voxl-sdk/services/voxl-vision-px4/-/blob/master/src/vio_manager.c#L350-393 walks through the publication of the odometry MAVLINK message to PX4 and rotation into appropriate frame for processing.

          ========
          TLDR; Most of my issues for this platform were solved by disabling the QVIO server, keeping voxl-vision-px4 running, and dialing in PID for PX4 without any external inputs from vision or GPS. Once tuned, you can focus on calibrating cameras and etc/modalai/extrinsics.conf to ensure consistency in VIO inputs.

          Shoutout to @wilkinsaf for tips and tricks on tuning.

          wilkinsafW 1 Reply Last reply
          2
          • Steve TurnerS Steve Turner

            In case anyone else comes on this thread --

            https://gitlab.com/voxl-public/voxl-sdk/core-libs/libmodal-pipe/-/blob/master/library/include/modal_pipe_interfaces.h#L848 defines the VIO messages within MPA.

            float T_imu_wrt_vio[3]; contains the translation in x, y, z and is what is printed in the overlay within VOXL Portal.

            • Positive X = Forward
            • Positive Y = Left
            • Positive Z = Increase in Altitude

            If you then look in the Odometry messages used by PX4 or run voxl-inspect-pose these coordinates will be in FRD/NED frame of reference which is:
            Positive X = Forward
            Positive Y = Right
            Positive Z = Decrease Altitude
            (I think I've got this right -- hopefully someone from Modal can confirm)

            https://gitlab.com/voxl-public/voxl-sdk/services/voxl-vision-px4/-/blob/master/src/vio_manager.c#L350-393 walks through the publication of the odometry MAVLINK message to PX4 and rotation into appropriate frame for processing.

            ========
            TLDR; Most of my issues for this platform were solved by disabling the QVIO server, keeping voxl-vision-px4 running, and dialing in PID for PX4 without any external inputs from vision or GPS. Once tuned, you can focus on calibrating cameras and etc/modalai/extrinsics.conf to ensure consistency in VIO inputs.

            Shoutout to @wilkinsaf for tips and tricks on tuning.

            wilkinsafW Offline
            wilkinsafW Offline
            wilkinsaf
            ModalAI Team
            wrote on last edited by
            #5

            @Steve-Turner Glad to hear you were able to make substantial progress!

            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

            • Don't have an account? Register

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