2024. november 6., szerda

Katonai drón repülési vezérlő rendszerét működtető program C++ nyelven.

A következő kód egy egyszerű "drónvezérlőt" modellez C++-ban, amely alapvetően figyelembe veszi a drón dőlésszögét, sebességét és magasságát. Ez nem egy teljes, működő rendszert jelent, hanem egy egyszerűsített szimulációt, amely segít megérteni, hogyan lehet a drón mozgását


#include <iostream>
#include <cmath>

// Az alapvető paraméterek

con
const float MAX_TILT_ANGLE = 30.0f;  // Maximális dőlésszög (fok)

cons

c
const float MAX_VELOCITY = 5.0f;     // Maximális sebesség (m/s)

co
const float MAX_ALTITUDE = 100.0f;   // Maximális magasság (m)

cons
const float GRAVITY = 9.81f;         // Föld gravitációja (m/s^2)

// A drón vezérlési paraméterei

stru

s
struct DroneControl {
    
    flo

    
float roll;     // Dőlésszög (X tengely, fok)
    
 
float pitch;    // Dőlésszög (Y tengely, fok)
    
    
float yaw;      // Forgás (Z tengely, fok)
    
    floa

   
float throttle; // Gáz, magasság szabályozás (0-100%)
    
    
    
  
void reset() {
        roll = 
        ro

       

   
0.0f;
        pitch = 
        p

      

   
0.0f;
        yaw = 0.0f;
        throttle = 
        th

       

    

 
0.0f;
    }
};


    }
}

   
// A drón repülésének szimulálása
class Drone {
private:
    
    
float altitude;  // Aktuális magasság (m)
    
    flo

   
float velocity;  // Sebesség (m/s)
    DroneControl control;  
    DroneControl 

    DroneContr

    DroneCo

    Dron

    
// A drón vezérlője



publ


p
public:
    Drone() {
        altitude = 
        altit

        al

       

    
0.0f;  // Kezdeti magasság 0 m
        velocity = 
       
0.0f;  // Kezdeti sebesség 0 m/s
        control.
        cont

        c

      

   
reset();  // Kezdeti vezérlőállapot
    }

    
    }

   

    }

  
// A drón mozgásának frissítése
    void update() {
        
        

    
// Magasság frissítése a gázszabályozó alapján
        altitude += control.throttle * 
        altitude += control.throttle

        altitude += contro

        altitude += con

        altitude += 

        altitude 

        altit

        a
0.1f;  // Egyszerűsített emelkedés
        
  
if (altitude > MAX_ALTITUDE) altitude = MAX_ALTITUDE;  // Maximális magasság korlátozása

        

        


     


  
// Sebesség frissítése a dőlésszög (roll, pitch) alapján
        
        flo
float tilt_factor = (fabs(control.roll) + fabs(control.pitch)) / 2.0f;
        velocity = std::
        velocity = std::min

        velocity = std:

        velocity = 

        veloci

        vel

       

   
min(tilt_factor, MAX_VELOCITY);  // Maximális sebesség korlátozása

        

      


   
// A repülés stabilitásának fenntartása
        
        

    
if (fabs(control.roll) > MAX_TILT_ANGLE) control.roll = (control.roll > 0 ? MAX_TILT_ANGLE : -MAX_TILT_ANGLE);
        
        

   
if (fabs(control.pitch) > MAX_TILT_ANGLE) control.pitch = (control.pitch > 0 ? MAX_TILT_ANGLE : -MAX_TILT_ANGLE);

        

     


 
// A drón alapvető kiírása
        std::cout << 
        std::cout 

        std:
"Altitude: " << altitude << " m, Velocity: " << velocity << " m/s\n";
        std::cout << 
        std::cout << 

      

   
"Roll: " << control.roll << "°, Pitch: " << control.pitch << "°, Yaw: " << control.yaw << "°\n";
    }

    
    }

  

    
// A vezérlő értékek beállítása
    
    v

  
void setControl(float roll, float pitch, float yaw, float throttle) {
        control.roll = roll;
        control.pitch = pitch;
        control.yaw = yaw;
        control.throttle = throttle;
    }
};


        control.roll = roll;
        control.pitch = pitch;
        control.yaw = yaw;
        control.throttle = throttle;
  

        control.roll = roll;
        control.pitch = pitch;
        control.yaw = yaw;
        control.throttle = thr

        control.roll = roll;
        control.pitch = pitch;
        control.yaw = yaw;
        contr

        control.roll = roll;
        control.pitch = pitch;
        control.yaw = yaw;
     

        control.roll = roll;
        control.pitch = pitch;
        control.yaw = y

        control.roll = roll;
        control.pitch = pitch;
        contr

        control.roll = roll;
        control.pitch

        control.roll = roll;
        contr

        control.roll = roll;
    

        control.roll = 

        con

   
int main() {
    Drone drone;

    
    Drone dro

    Dron

  
// A felhasználó beviteli lehetősége
    
    
float roll, pitch, yaw, throttle;
    
    whil

  
while (true) {
        std::cout << 
        std::cout <<

        std::

      
"Enter roll, pitch, yaw (degrees) and throttle (0-100): ";
        std::cin >> roll >> pitch >> yaw >> throttle;

        
        std::cin >> roll >> pitch >> yaw >> throttle;

    

        std::cin >> roll >> pitch >> yaw >> throttle

        std::cin >> roll >> pitch >> yaw >> th

        std::cin >> roll >> pitch >> yaw

        std::cin >> roll 

        std::ci

        std:

        s

      

  
// A drón vezérlésének beállítása
        drone.
        drone.setContr

        drone

       
setControl(roll, pitch, yaw, throttle);

        

  
// A drón állapotának frissítése
        drone.
  
update();

        

       
// Kilépés a programból (opcionális)
        
        ch

       

   
char quit;
        std::cout << 
        std::cout 

        std::
"Continue? (y/n): ";
        std::cin >> quit;
        
        std::cin >> qui

        std::cin >> 

        std::cin

       

    
if (quit == 'n' || quit == 'N') break;
    }

    
    }

   

    }
return 0;
}
A
Drone osztály :Droneosztál
Frissítési metódus : Aupdate()metó
Kontroll beállítás : A
Egyszerűsített szimuláció : A
Példa
A program futtatásakor a következő kér

yaml

Kód másolása
Enter roll, pitch, yaw (degrees) and
Altitude:
 throttle (0-100): 10 5 0 50
Altitude: 5 m, Velocity: 5 m/s
Roll: 10°, Pitch: 5°, Yaw: 0°
Continue? (y/n): y

Persze kell még hozzá a PID (Proporcionális-Integráló-Differenciáló) vezérlő algoritmusok
GPS és IMU szenzorok integrálása, Valós idejű adatfeldolgozás, Hálózati kommunikáció földi irányító állomásokkal.

Nincsenek megjegyzések:

Megjegyzés küldése