domhel / autonomous-drone

0 stars 0 forks source link

GPS Daten vom Pixhawk bekommen #7

Closed domhel closed 2 years ago

domhel commented 2 years ago
  1. Pi frägt Position an
  2. Pixhawk schickt Position
  3. Pi berechnet direkten Vektor da hin mit Richtung & Geschwindigkeit
  4. Pi schickt Flugbefehle an Pixhawk
et19021 commented 2 years ago

Die Daten können mit MAVSDK ausgelesen werden. Das folgende Skript zeigt verschiedene Informationen an. Es lassen sich sämtliche Daten des Pixhawk auslesen siehe MAVSDK Dokumentation Skript liegt auf dem pi unter

/home/pi/Python/MAVSDK-Python/examples

#!/usr/bin/env python3

import asyncio
from mavsdk import System

async def run():
    # Init the drone
    drone = System()
    await drone.connect(system_address="serial:///dev/serial0:921600")

    # Start the tasks
    asyncio.ensure_future(print_battery(drone))
    asyncio.ensure_future(print_gps_info(drone))
    asyncio.ensure_future(print_in_air(drone))
    asyncio.ensure_future(print_position(drone))
    # asyncio.ensure_future(print_flightmode(drone))

async def print_battery(drone):
    async for battery in drone.telemetry.battery():
        print(f"Battery: {battery.remaining_percent}")

async def print_gps_info(drone):
    async for gps_info in drone.telemetry.gps_info():
        print(f"GPS info: {gps_info}")

async def print_in_air(drone):
    async for in_air in drone.telemetry.in_air():
        print(f"In air: {in_air}")

async def print_position(drone):
    async for position in drone.telemetry.position():
        print(position)
# eigene Funktion
async def print_flightmode(drone):
    async for flight_mode in drone.telemetry.flight_mode():
       print(f"Flight Mode: {flight_mode}")

if __name__ == "__main__":
    # Start the main function
    asyncio.ensure_future(run())

    # Runs the event loop until the program is canceled with e.g. CTRL-C
    asyncio.get_event_loop().run_forever()
et19021 commented 2 years ago

Aktuell geibt es noch das Problem, dass die Funkiton drone.telemetry.position() nichts ausgibt, obwohl 9 GPS Satelitensignale vorhanden sind, und der GPS Status auf FIX_DGPS steht. Auf Dieses Issue hat mir bisher nicht weitergeholfen. Im Prinzip muss es aber funktionieren