MikroKopter - Forum » Software, APPs & Programmierung » Feature request für NC serielle Schnittstelle

Feature request für NC serielle Schnittstelle

Neues Thema Antwort

Seite: 1

Autor Neuer Beitrag
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
Hi,

poste das mal hier, weiß nicht so recht wo's passt (im Betabereich hab ich's schon mal zwecks anderem probiert, ohne Rückmeldung...)

Also bin grad bei meinem Projekt an Grenzen gestoßen, die man eigentlich lösen könnte...
Es geht um die WP Liste und die Befehle 'w' und 's'
Im Prinzip machen beide eigentlich das selbe: einen Punkt in der Liste setzen
Ich hab gesehen, das bei 's' noch die Simulation abgefragt wird aber ansonsten macht der Befehl eigentlich das Gleiche.

Was ich mir jetzt wünschen würde, wäre eine Option, bei welcher man den 'aktiven' Punkt in einer WP Liste setzen kann - also quasi über Wegpunkte vor oder auch zurückspringen indem der Index des gesendeten Punktes als aktueller Index gesetzt wird.
Und in der Wiki ist ja 's' als "neues Ziel" beschrieben, von dem her würde sich das ja anbieten...?


So wie ich's verstanden habe, kann man die NC FW nicht ohne spezielle Software und den zusätzlichen GPS libs kompilieren...? Sonst würd ich halt was eigenes basteln - andererseits denke ich, dass das durchaus eine sinnvolle Option für alle wäre...?

Gruß,

Stephan
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Wenn ein WP mit dem 's' kommando gesendet wird, wird er sofort angeflogen.
Es müsste eigentlich schon das sein, was Du brauchst
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Wenn ein WP mit dem 's' kommando gesendet wird, wird er sofort angeflogen.
Es müsste eigentlich schon das sein, was Du brauchst


Hmm, hatte ich erst auch gehofft ;)
Aber heute getestet und ohne das erhoffte Ergebnis...

Also ich denke mal es liegt an diesen Zeilen hier in uart1.c (ab Zeile 499)

if(CurrentlyFlyingWaypoints)
{
GPS_pWaypoint = PointList_WPBegin();
NewWaypointsReceived = 0; // Only an update
}


... die Bedingung dabei ist ja if(CurrentlyFlyingWaypoints)
heißt das, ich muss denn Wegpunkteflug 'unterbrechen' und kann dann mit der neuen Position fortsetzen?

Gruß,

Stephan
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
O.k., sorry - ich hab in meinem Code vergessen dass 's' zu setzen - war noch das 'w' drin... :oops:

Aber, bleibt noch die Frage, ob man den Wegpunkteflug unterbrechen muss, wie oben erwähnt?

Gruß,

Stephan
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Steph meinte
Aber, bleibt noch die Frage, ob man den Wegpunkteflug unterbrechen muss, wie oben erwähnt?

Nein
Allerdings kann es evtl. sein, dass der WP mit 's' immer der erste sein muss.
Das kann ich gerade nicht so schnell prüfen.
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Nein
Allerdings kann es evtl. sein, dass der WP mit 's' immer der erste sein muss.
Das kann ich gerade nicht so schnell prüfen.


Also das wäre nicht unbedingt zielführend :D
Ich hoffe ich kanns die Tage noch testen - falls dem so ist, könntet Ihr das bitte 'irgendwie' noch in die kommende FW mit integrieren?
Also eine Option während des Wegpunkteflugs einen Index aus der aktiven Liste als aktives Ziel setzen?

Danke und Grüße, Stephan
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
So, habs gerade getestet und es geht leider nicht!
Der Index wird wieder auf 1 zurückgesetzt...

Von dem her erschließt sich mir der Sinn der Option 's' nicht wirklich - weil das kann ich auch mit 'w' erreichen.

Hier nochmal der Code

 case 's':// new target position
pPoint = (Point_t*)SerialMsg.pData;
if(pPoint->Position.Status == NEWDATA)
{
//if(!(FC.StatusFlags & FC_STATUS_FLY)) PointList_Clear(); // flush the list
//pPoint->Index = 1; // must be one after empty list
PointList_SetAt(pPoint);
if(FC.StatusFlags & FC_STATUS_FLY) PointList_WPActive(TRUE);
// GPS_pWaypoint = PointList_WPBegin(); // updates POI index


if(CurrentlyFlyingWaypoints)
{
GPS_pWaypoint = PointList_WPBegin();
NewWaypointsReceived = 0; // Only an update
}
BeepTime = 50;
}


Das Problem ist, dass PointList_WPActive(TRUE); den Index auf 1 setzt durch Aufruf von PointList_WPBegin();
welches hier auch nochmal aufgerufen wird...

Also es wäre ECHT GENIAL wenn das in der nächsten FW entsprechend angepasst wird, so dass man einen beliebigen Punkt aus der Liste als den aktiven WP setzen kann!

Danke und Grüße,

Stephan
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Ich habe es mal so geändert:

in uart1:
'S'

u32 start = 0;
if(pPoint->Index) start = pPoint->Index-1;
if(CurrentlyFlyingWaypoints)
{
GPS_pWaypoint = PointList_WPBegin(start);
NewWaypointsReceived = 0; // Only an update
}


PointList_WPBegin() beginnt nun mit der Suche nach dem ersten Waypoint bei dem entsprechenden Index.

Probiere es mal aus. Ich kann es auf die Schnelle nicht testen.

Liegt im Betabereich
« Bearbeitet von HolgerB am 19.10.2016 20:40. »
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Ich habe es mal so geändert:

in uart1:
'S'

u32 start = 0;
if(pPoint->Index) start = pPoint->Index-1;
if(CurrentlyFlyingWaypoints)
{
GPS_pWaypoint = PointList_WPBegin(start);
NewWaypointsReceived = 0; // Only an update
}


PointList_WPBegin() beginnt dann mit der Suche nach dem ersten Waypoint bei dem entsprechenden Index.

Probiere es mal aus. Ich kann es auf die Schnelle nicht testen.

Liegt im Betabereich


Nice! Danke Dir - ich muss auch mal sehn wann es bei mir klappt...

Grüße, Stephan
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Ich habe es gerade getestet - es funktioniert
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Ich habe es gerade getestet - es funktioniert


:D Danke Dir!

Denke doch, dass das eine ganz sinnvolle Option ist, wenn man nochmal einen Punkt anfliegen möchte oder einen oder mehrere Punkte überspringen möchte.

Grüße,

Stephan
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
Hab's jetzt mit dem Simulator getestet - es funktioniert! :D

Aber: ;) Der Index, welcher dann vom Kopter gesendet wird beginnt immer bei "1" ... die folgenden Punkte werden schon richtig abgeflogen, nur der Indexwert passt nicht mit der Liste zusammen...

Vermutlich muss man noch in der 'waypoints.c' der Funktion PointList_WPBegin
wenn ich's richtig verstanden habe, folgende Zeile entsprechend abändern:

ca. Zeile 270:

if(WPIndex) // found a WP in the list
{
NaviData.WaypointIndex = 1;

in
NaviData.WaypointIndex = WPIndex-1;
oder wahrscheinlich besser
NaviData.WaypointIndex = start;

start ist der übergebene Wert (GPS_pWaypoint = PointList_WPBegin(start); )


Danke und Grüße,

Stephan
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Hmm, so einfach ist das nicht.
Die Liste kann auch mit POIs und Failsafe-Punkten anfangen. Diese müssen auf der Suche nach dem ersten WP übersprungen werden.

Ich habe mal eine Version "H" hoch geladen. Prüfe mal, ob das jetzt geht.
« Bearbeitet von HolgerB am 21.10.2016 18:47. »
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Hmm, so einfach ist das nicht.
Die Liste kann auch mit POIs und Failsafe-Punkten anfangen. Diese müssen auf der Suche nach dem ersten WP übersprungen werden.

Ich habe mal eine Version "H" hoch geladen. Prüfe mal, ob das jetzt geht.


Passt! :D

Danke Dir!

Grüße,

Stephan

PS: Das mit der Simulation war echt ein SEHR hilfreicher Tipp! ;)
Entwickler, Admin
Registriert seit: Feb 2006
Beiträge: 5782
Ort: Ostfriesland
Steph meinte
PS: Das mit der Simulation war echt ein SEHR hilfreicher Tipp! ;)

...genau deshalb habe ich die Simulation im MK integriert.
Ständig bei schlechtem Wetter mit dem Notebook draussen zu sitzen ist auf Dauer nervig :-)
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
HolgerB meinte
Steph meinte
PS: Das mit der Simulation war echt ein SEHR hilfreicher Tipp! ;)

...genau deshalb habe ich die Simulation im MK integriert.
Ständig bei schlechtem Wetter mit dem Notebook draussen zu sitzen ist auf Dauer nervig :-)


:D
Mitglied
Registriert seit: Nov 2012
Beiträge: 225
Ort: Landshut,BY
Jetzt hätt ich diesbezügl. doch noch eine Bitte: und zwar dass der Index auch gesetzt wird wenn man gerade in PH ist.
Ich denk mal, dass das die häufigere Situation sein wird - man unterbricht kurz, wählt einen anderen Punkt und macht weiter...

Gruß,

Stephan

Neues Thema Antwort

Seite: 1

MikroKopter - Forum » Software, APPs & Programmierung » Feature request für NC serielle Schnittstelle