Skip to main content
. 2024 Feb 7;10:e1759. doi: 10.7717/peerj-cs.1759
a= Earth’s equatorial radius (≈ 6,378,137m)
e= Earth’s eccentricity (approx. 0.08181919084)
h= altitude above the ellipsoid
3. ECEF_Coordinates ← ConvertGPStoECEF(DroneGP 4. // Calculate relative position vector between drone & base station
a. ΔX = X drone - X base
b. ΔY = Y drone - Y base
c. ΔZ = Z drone - Z base
5. RelativePosition ← CalculateRelativePosition(ECEF_Coordinates, BaseStationCoordinates)
6. // Convert relative position vector to local ENU coordinates
1. R=sinsinlongitudecoscoslongitude0
sinsinlatitudecoscoslogitudesinsinlatitudesinsinlongitudecoscoslatitude
coscoslatitudecoscoslongitudecoscoslatitudesinsinlongitudesinsinlatitude
7. E,N,UT=RΔX,ΔY,ΔZT
8. ENU_Coordinates ← ConvertECEFtoENU(RelativePosition, BaseStationCoordinates)
9. // Calculate pan and tilt ang
a. PanAngle ← CalculatePanAngle(ENU_Coordinates)
b. pan = atan2(EN)
c. TiltAngle ← CalculateTiltAngle(ENU_Coordinates)
d. tilt=atan2U,sqrtE2+N2
10. // Apply the IMU orientation data
AdjustedAngles ← ApplyIMUOrientation(PanAngle, TiltAngle, DroneIMUData)
11. // Control the pan–tilt mechanism
MovePanTiltController(AdjustedAngles)
12. return AdjustedAngles