Offboard mode exits without GPS – velocity control using vision-only (camera) data on a jetson orin nano

Hello PX4 community,

I am working on flying a quadcopter in OFFBOARD mode using velocity control (vx, vy, vz) generated from a camera-based vision system.

System overview:

  • PX4 multicopter

  • PX4 firmware: v1.15.0

  • Jetson Orin Nano

  • OFFBOARD control via MAVROS

  • Camera tracks an object using OpenCV

  • Vision system computes velocity vectors (x, y, z) relative to the drone’s local position from mavros

  • These velocity setpoints are sent to PX4 via mavros

  • When GPS is available, everything works as expected and the drone follows the target correctly using local position estimates

Problem:
When GPS is not available, PX4 automatically exits OFFBOARD mode, even though:

  • The camera continues to provide valid velocity vectors

  • I am not using global position

  • I only want to fly using vision-based local position / velocity information

From debugging, it seems PX4 performs an internal validity check on position or estimator state, and when GPS is lost, OFFBOARD mode is rejected or dropped.

What I want to achieve:

  • Fly fully vision-based, without GPS

  • Remain in OFFBOARD mode

  • Control the drone only using camera-derived velocity vectors and local position

  • No reliance on global position

Questions:

  1. What exact estimator or failsafe condition causes PX4 to exit OFFBOARD when GPS is unavailable?

  2. Is it possible to keep OFFBOARD active using: (Note: I don’t want to use my camera a external odometry but rather i want to compute the desired velocity vectors towards the goal location and move the drone)

    • Vision-only odometry (e.g., /fmu/in/vehicle_visual_odometry)?

    • External velocity or position estimates?

  3. Which PX4 parameters or estimator settings (EKF2 / EKF3) need to be configured for GPS-denied OFFBOARD flight?

  4. Are there any recommended PX4 workflows for camera-only / GPS-denied OFFBOARD control?

Any guidance, parameter suggestions, or references to similar implementations would be highly appreciated.

Thank you.

That’s interesting, and I agree that offboard should probably keep working as long as a local position is valid. Have you integrated vision input into PX4, so that the local position estimate stays valid?

1 Like

Yes, I have also integrated vision input on /mavros/odometry/out topic and it works then but this is the external nav solution i guess. My case is simple as i am using a tracker to track an object, center it to the camera frame and then follow camera movement using offboard. There is no external nav used for this so in this case offboard exits when no gps is available.