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:
-
What exact estimator or failsafe condition causes PX4 to exit OFFBOARD when GPS is unavailable?
-
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?
-
-
Which PX4 parameters or estimator settings (EKF2 / EKF3) need to be configured for GPS-denied OFFBOARD flight?
-
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.