Open DIY Projects Stuhlkreis STorM32 Featuers GPS Tracking, Alles rund um die APP

Ansicht von 15 Beiträgen – 1 bis 15 (von insgesamt 27)
  • Autor
    Beiträge
  • #838
    digaus
    Moderator

    Hier wird immer der aktuelle Stand der App für das GPS Tracking zu finden sein und ihr könnte natürlich auf Fehler hinweisen oder Wünsche äußern.

    Grundsätzlich besteht die App momentan aus vier Tabs.
    Neben den Tabs gibt es einen Button mit welchem ihr euch jederzeit mit dem Copter verbinden könnt.

    Der erste Tab
    dient zur manuellen Steuerung des Gimbals. Dieser beinhaltet einen Onscreen Joystick, ein Button zum Erstellen eines Panoramas und ein Button zum Umschalten vom Pan und Hold Modus der Yaw Achse.

    ———————————————————————————————————————————————————-

    Der zweite Tab
    ist für das GPS Tracking zuständig. Hier kann man über ein etwas längeres Drücken einen Punkt auf der Karte festlegen auf welchen das Gimbal fokussieren soll. Zudem kann die Höhe in der linken oberen Ecke manuell festgelegt werden.
    Durch das Drücken das Buttons „Start“ wird das GPS Tracking gestartet.
    Soll das GPS des Handys als Zielobjekt festgelegt werden, so muss die Checkbox des Start Buttons angewählt werden.
    Über den Slider kann zudem ein Offset für die Yaw Achse festgelegt werden, falls das Gimbal nicht korrekt ausgerichtet wurde.

    ———————————————————————————————————————————————————-

    Der dritte Tab
    ermöglicht das Senden oder Empfangen von GPS Koordinaten über das mobile Internet. Da die Kommunikation über das Internet recht komplex ist und einen Server voraussetzt, habe ich auf die Bibliothek von „Pubnub“ zurückgegriffen. Diese stellt eine Messenger Funktion zur Verfügung, welche ich verwende. Die kostenlose Version dieses Services ist jedoch eingeschränkt. So können pro Monat maximal 1Mio Nachrichten verschickt werden und es können sich nur 20 unterschiedliche IP Adressen innerhalb von 24 Stunden verbinden. Deshalb müsst ihr euch unter http://www.pubnub.com/ euren eigenen Account anlegen. Unter den Settings der App könnt ihr dann euren Publish Key und euren Subscribe Key eingeben. Die Geräte die dieselben Keys verwenden können dann ihre GPS Daten untereinander „austauschen“. Wenn ihr GPS Daten empfangt und den Haken beim Start Button gesetzt habt, werden diese für das Tracking verwendet.

    ———————————————————————————————————————————————————-

    Der letzte Tab
    ist für die Einstellungen da. Hier könnt ihr unter anderem die Größe des Joysticks festlegen, die Panoramafunktion konfigurieren und die Verbindung zum Copter festlegen.

    ———————————————————————————————————————————————————-

    Einschränkungen:
    Die App setzt mindestens Android 4.0.3 voraus.

    Weitere Schritte:
    Kommunikation über den Pixhawk ohne Raspberry Pi und mit USB Telemetrie Modul.

    Attachments:
    You must be logged in to view attached files.
    #841
    EagleEi
    Administrator

    Hallo Digaus,
    unglaublich wie gut dein GPS-Tracking funktioniert, tolle APP, Respekt!!!
    Klasse dass du dein Projekt auf dieser Seite zur Verfügung stellst!

    Bin gespannt wie sich dies Weiterentwickelt.

    Wie ist der aktuelle Status der Kommunikation zwischen APM und dem SToRM32 Board? … Bis wann kann man auf den Rasparry verzichten?

    #842
    digaus
    Moderator

    Danke, ich finde so eine Funktion hätte es schon viel früher geben sollen. Ist ja im Grunde nichts anderes wie ein Tracker, nur halt auf dem Copter 😉

    Leider wird es eine Kommunikation von APM zu STorM nie! geben. Das liegt daran, dass für die APM keine Updates mehr bereit gestellt werden. Das heißt, wenn man auf den Raspberry Pi verzichten möchte, dann muss man zum Pixhawk wechseln. Die Kommunikation zwischen Pixhawk und STorM ist meines Wissens auch schon in der Alpha vorhanden.
    Das Problem ist, dass ich keinen Pixhawk habe um das zu testen. Außerdem habe ich es noch nicht geschafft mir eine Custom Mavlink Message zu erstellen, welche ich an das STorM schicken kann. Habe dazu eine Anfrage in der 3dr Developer Group gestellt aber bisher noch keine Antwort erhalten.
    Wenn ich so eine Nachricht erstellen kann und wenn ich dann jemanden habe, der das für mich testen könnte, dann sollte es maximal eine Woche dauern, bis ich das in meine App eingebaut habe.

    #846
    EagleEi
    Administrator

    Schade dass der APM keinen Support mehr bekommt, allerdings ist klar, das Ding ist ausgereizt!
    Dann stellt sich die Frage ob alternativ zu dem PIXHAWK der AUAV-X2 auch geeignet wäre?
    von http://arsovtech.com

    Ich sehe schon, noch ein Grund das Ding endlich mal zu testen, oh nein, nicht schon wieder ein weiteres Projekt! 😉

    #855
    sandmen
    Teilnehmer

    @digaus,
    was brauchst du für eine message?
    Entweder ich erstelle dir diese oder erkläre es dir.

    #894
    digaus
    Moderator

    @EagleEi
    ja den AUAV-X2 habe ich acuh im Auge, damit sollte es auf jeden Fall funktionieren.

    @sandmen
    Die Nachrichten die ich benötige sind hier beschrieben: http://www.olliw.eu/storm32bgc-wiki/Serial_Communication
    Und zwar benötige ich hauptsächlich die Nachricht MAVLINK_MSG_ID_COMMAND_LONG, diese besteht aus MAV_CMD_DO_SET_PARAMETER und MAV_CMD_DO_MOUNT_CONTROL

    Aber die Frage ist dann auch, wie ich diese Nachricht mit der 3dr Services Library senden kann.
    Dort gibt es den Typen „MAVLinkMessage“ welcher an „MavlinkMessageWrapper“ übergeben wird, dieser kann dann mit „sendMavlinkMessage()“ versendet werden.

    Hier ist die komplette java Dokumentation der Library: http://android.dronekit.io/javadoc/

    Wäre super, wenn du mir da helfen könntest.

    Edit:
    Ich habe festgestellt, dass die hochgeladene App falsch kompiliert wurde und deshalb nicht installiert werden konnte. Habe die korrekte Version jetzt hochgeladen.

    #903
    sandmen
    Teilnehmer

    @Digaus,
    nur das ich das richtig verstehe, Ziel ist es von der App direkt auf den Gimbal (Storm) zu kommen?
    Oder möchtest Du vom APM auf den Controller kommen ?

    #904
    digaus
    Moderator

    Also im Grunde möchte ich mit dem STorM und dem Pixhawk über einen Telemetrie Link kommunizieren.
    Das heißt das STorM ist wie hier beschrieben mit dem Pixhawk verbunden: http://copter.ardupilot.com/wiki/common-optional-hardware/common-cameras-and-gimbals/common-storm32-gimbal/
    Der Pixhawk wiederum ist über einen Telemetrie Link mit dem Handy verbunden.
    Ich habe jetzt angenommen, dass der Pixhawk die Mavlink Messages an das STorM weiterleitet wenn ich die Message vom Handy an den Pixhawk schicke.

    #914
    sandmen
    Teilnehmer

    Ich denke, so sollte das gehen.
    msg_command_long ist normalerweise ein „common“ message object.
    Diese msg könntest Du vom Android Phone zum Storm senden.

    Wenn Du durch den PixHawk senden möchtest, sollte target_component eigentlich die ID des Storm’s sein, und die target_system vom PixHawk. Aber ob der Pixhawk das so implementiert hat, weiß ich nicht. Rein theoretisch, solltest Du das untere einfach laufen lassen können 🙂

    //MAV_CMD_DO_SET_PARAMETER (#180)
    msg_command_long msg_to_storm = new msg_command_long();
    msg_to_storm.target_system = drone.getSysid();
    msg_to_storm.target_component = drone.getCompid();
    msg_to_storm.command = 180; //--> MAV_CMD_DO_SET_PARAMETER (#180)
    msg_to_storm.param1 = 0.0f; // parameter Index
    msg_to_storm.param2 = 0.0f; // parameter value
    msg_to_storm.param3 = 0.0f;
    msg_to_storm.param4 = 0.0f;
    msg_to_storm.param5 = 0.0f;
    msg_to_storm.param6 = 0.0f;
    msg_to_storm.param7 = 0.0f;
    drone.getMavClient().sendMavPacket(msg.pack());

    //MAV_CMD_DO_MOUNT_CONTROL (#205)
    msg_command_long msg_to_storm = new msg_command_long();
    msg_to_storm.target_system = drone.getSysid();
    msg_to_storm.target_component = drone.getCompid();
    msg_to_storm.command = 205; //--> MAV_CMD_DO_MOUNT_CONTROL (#205)
    msg_to_storm.param1 = 0.0f; // parameter Index
    msg_to_storm.param2 = 0.0f; // parameter value
    msg_to_storm.param3 = 0.0f;
    msg_to_storm.param4 = 0.0f;
    msg_to_storm.param5 = 0.0f;
    msg_to_storm.param6 = 0.0f;
    msg_to_storm.param7 = 0.0f;
    drone.getMavClient().sendMavPacket(msg.pack());

    #917
    digaus
    Moderator

    Hi Sandmen,

    danke, das ist schonmal sehr hilfreich!
    Leider gibt es die Funktion getSysid(), getCompid() und getMavClient() bei mir nicht(siehe Screenshot)
    Für den letzten Befehl zum Senden der Nachricht, habe ich eine entsprechende Funktion gefunden, die genau das machen sollte (siehe dazu auch Screenshot), aber ich weiß nicht wie ich die Sysid und Compid vom Copter bekommen kann…

    Attachments:
    You must be logged in to view attached files.
    #919
    sandmen
    Teilnehmer

    Welche library benutzt Du den? Also den original Source-code, oder eine bereits fertig library?
    Dann könnte ich diese mal ziehen, und in ein „example-mavlink“ Android Project ziehen.
    Bei dir existiert das Object drone nicht ?
    Hat dann avClient getSysId ?
    Ich benutze seit Jahren das repo von Guillaum.
    https://github.com/ghelle/MAVLinkJava

    #920
    digaus
    Moderator

    Meine App basiert auf der 3dr Services library. Darauf ist auch Die Tower App (Droidplanner 3) aufgebaut. Habe mich an dieses Tutorial gehalten: http://android.dronekit.io/first_app.html
    Das Object drone existiert, aber das Objekt hat die Funktionen nicht. Kann ich die IDs nicht manuell festlegen? Die target_component sollte ja eigentlich auch die des STorMs sein.

    #932
    sandmen
    Teilnehmer

    Ich habe mir mal das Beispiel nachgeschaut, da sollte doch das drone-object vorhanden sein.
    In der MainActivity -> this.drone.connect(connectionParams);

    #938
    digaus
    Moderator

    Hi sandmen,

    ja das drone Objekt gibt es, habe ich auch nie bestritten 😉
    Aber das Objekt verfügt nicht über die von dir genannten Funktionen getSysid() und getCompid().
    Habe noch mal ein Screenshot vom drone Objekt mit allen verfügbaren get-Funktionen angehängt.

    Attachments:
    You must be logged in to view attached files.
    #957
    sandmen
    Teilnehmer

    So schmeißt mir das Ding auf jeden Fall mal keine Fehlermeldung.
    Vielleicht probierst Du das mal so aus, target (SysId und Component) wird scheinbar weiter unten
    ermittelt.

            msg_command_long msg_to_storm = new msg_command_long();
            this.controlTower.sendParameter(this.drone, msg_to_storm);
    

    Ich weiß aber auch warum ich diese Lib nicht einsetze 🙂

Ansicht von 15 Beiträgen – 1 bis 15 (von insgesamt 27)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.