domhel/autonomous-drone

GPS Daten vom Pixhawk bekommen

Closed this issue · 2 comments

  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

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()

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