Integrating ZED 2i Stereo Camera with ArduPilot for Non-GPS Drone Navigation

Hello everyone,

Project Goal:
I am working on a fully autonomous indoor drone project where GPS is not available. My goal is to use the ZED 2i stereo camera for vision-based odometry and position estimation, and to integrate this with ArduPilot (Pixhawk 2.4.8) for non-GPS navigation.

Current Hardware/Software Setup:

  • ZED 2i Stereo Camera (downward facing)
  • Jetson Orin Nano 8GB (companion computer)
  • Pixhawk 2.4.8 (flight controller running ArduPilot)
  • ROS 2 Humble running on Jetson
  • MAVROS for communication between ROS and ArduPilot
  • ZED ROS2 Wrapper for camera integration

What I’ve Done So Far:

  • ZED 2i is publishing pose data via /zed2i/zed_node/pose
  • MAVROS is set up and connected (communication between Jetson and Pixhawk is working)
  • Attempting to relay ZED odometry/velocity to /mavros/vision_pose/pose and /mavros/vision_speed/speed_twist

What I Need Help With:

  1. Best Practices:
    How should I correctly fuse the ZED2i VIO data with ArduPilot for reliable position control?
  • Is publishing to /mavros/vision_pose/pose and /mavros/vision_speed/speed_twist sufficient?
  • What parameters must be set in ArduPilot (EKF3, VISO, etc.) for external vision navigation?
  • Should I use only ZED2i, or combine with optical flow and lidar for better accuracy?
  1. Frame Alignment:
    What is the correct coordinate frame and orientation setup for the ZED2i camera with respect to the drone and ArduPilot’s NED convention?
  2. Parameter Tuning:
  • Which specific parameters need to be tuned on both ArduPilot and MAVROS for vision-only navigation?
  • Any recommended values for EKF, vision fusion, and VISO parameters?
  1. Common Issues:
  • How to debug if pose/velocity data is not being accepted/fused by ArduPilot?
  • Any troubleshooting tips for zero velocity readings or unstable position hold?
  1. Reference Resources:
  • Are there any example projects or detailed documentation for using ZED2i as a VIO source with ArduPilot (similar to Intel T265 guides)?

Any help, suggestions, working examples, or relevant documentation links would be greatly appreciated!
Thanks in advance for your support.

Hi @aksahy
I recommend you replicate these questions to the Ardupilot forum to receive specific replies from Ardupilot users and developers.

There are already many threads open on this same topic:

somebody have already asked about it but there was no proper response