Katonai nagy teljesítményű drónok (pl. ArduPilot, PX4 alapú rendszerek) grafikus vezérléséhez a legprofibb megoldás a DroneKit-Python és a Tkinter widgetek ötvözése. Ezzel a kombinációval a kezelőfelület gombokkal, adatokkal és térképpel egészíthető ki. Az alábbiakban egy részletes kódot és útmutatót találsz a megvalósításhoz.A Grafikus Felület (GUI) és Vezérlés Felépítése egy ilyen rendszer alapját a tkinter (beépített grafikus csomag) és a drónnal kommunikáló dronekit adja. A grafikus felületen elhelyezett widgetekkel (gombok, csúszkák, státuszjelzők) valós időben küldhetők parancsok, például felszállás vagy célkoordináták megadása formájában.
----------------
import tkinter as tk
class DroneController:
def __init__(self, root):
self.root = root
self.root.title("Katonai Drón Irányító Központ")
self.root.geometry("400x500")
self.vehicle_connected = False
self.label_title = tk.Label(root, text="IRÁNYÍTÓ PANEL", font=("Arial", 16, "bold"))
self.label_title.pack(pady=10)
self.btn_takeoff = tk.Button(root, text="FELSZÁLLÁS (Takeoff)", bg="green", fg="white", font=("Arial", 12), command=self.takeoff)
self.btn_takeoff.pack(pady=5, fill=tk.X)
self.btn_rtl = tk.Button(root, text="VISSZATÉRÉS (RTL)", bg="orange", fg="white", font=("Arial", 12), command=self.rtl)
self.btn_rtl.pack(pady=5, fill=tk.X)
self.btn_land = tk.Button(root, text="LANDOLÁS (Land)", bg="red", fg="white", font=("Arial", 12), command=self.land)
self.btn_land.pack(pady=5, fill=tk.X)
self.btn_connect = tk.Button(root, text="Drón Csatlakoztatása", font=("Arial", 12), command=self.connect_drone)
self.btn_connect.pack(pady=20, fill=tk.X)
self.status = tk.Label(root, text="Állapot: Nincs csatlakozás", font=("Arial", 11))
self.status.pack(pady=10)
def connect_drone(self):
self.vehicle_connected = True
self.status.config(text="Állapot: Drón csatlakoztatva (szimulált)")
print("Kapcsolódás a drónhoz...")
def takeoff(self):
if not self.vehicle_connected:
self.status.config(text="Állapot: Előbb csatlakoztasd a drónt")
print("Nincs csatlakoztatott drón.")
return
self.status.config(text="Állapot: Felszállás parancs kiadva")
print("Parancs kiadva: Felszállás 10 méterre.")
def rtl(self):
if not self.vehicle_connected:
self.status.config(text="Állapot: Előbb csatlakoztasd a drónt")
print("Nincs csatlakoztatott drón.")
return
self.status.config(text="Állapot: RTL parancs kiadva")
print("Parancs kiadva: Visszatérés a kiindulópontra.")
def land(self):
if not self.vehicle_connected:
self.status.config(text="Állapot: Előbb csatlakoztasd a drónt")
print("Nincs csatlakoztatott drón.")
return
self.status.config(text="Állapot: Landolás parancs kiadva")
print("Parancs kiadva: Landolás megkezdve.")
if __name__ == "__main__":
root = tk.Tk()
app = DroneController(root)
root.mainloop()
--------------

Nincsenek megjegyzések:
Megjegyzés küldése