|
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.
|
|
|
|
|
| 7.
|
| 8. ENU_Coordinates ← ConvertECEFtoENU(RelativePosition, BaseStationCoordinates) |
| 9. // Calculate pan and tilt ang |
| a. PanAngle ← CalculatePanAngle(ENU_Coordinates) |
| b. pan = atan2(E, N) |
| c. TiltAngle ← CalculateTiltAngle(ENU_Coordinates) |
| d.
|
| 10. // Apply the IMU orientation data |
| AdjustedAngles ← ApplyIMUOrientation(PanAngle, TiltAngle, DroneIMUData) |
| 11. // Control the pan–tilt mechanism |
| MovePanTiltController(AdjustedAngles) |
| 12. return AdjustedAngles |