courseplay, zwei fragen zu den lua´s

anthu
Posts: 4979
Joined: Thu Nov 06, 2014 8:03 am

courseplay, zwei fragen zu den lua´s

Post by anthu »

Hallo Leute
hätte da mal zwei Fragen zu Einstellungen in den courseplay lua´s.
und zwar, die weiße Farbe des gezeichneten Kurses, wo ist die abgespeichert, möchte die gerne auf ein dezenteres grau ändern.
zweitens die Wegpunktabstände der Feldbearbeitungskurse, die sind ja alle 5m gesetzt, kann ich die in einer lua auf 10bzw 20m setzen?

lg
andreas
anthu
Posts: 4979
Joined: Thu Nov 06, 2014 8:03 am

Re: courseplay, zwei fragen zu den lua´s

Post by anthu »

ok, hab nun mal was selber rausgefunden:
wenn ich in der generateCourse.lua

Code: Select all

local numLanes, pointsPerLane = 0, 0;
	local curLaneDir;
	local pointDistance = 5;
	local pipSafety = 0.1;
	local pathPoints = {};
auf

Code: Select all

	local numLanes, pointsPerLane = 0, 0;
	local curLaneDir;
	local pointDistance = 20;
	local pipSafety = 0.1;
	local pathPoints = {};
ändere, sind die Punktabstände bei der Feldbearbeitung von 5m auf 20m erhöht.
d.h. habe nun nurmehr ein viertel der waipoints, d.h. die courseplay.xml wird kleiner

ein problem noch, wenn ich Vorgewende einstelle mit 1-6 runden vorher, sind die Abstände bei den Vorgewenderunden immer noch auf 5m.
zwar nich so schlimm, aber die möchte ic hauch gerne erhöhen, zumindest auf 10m.
muss aber dann schaun wie sich das dann mit den Ecken in der Bearbeitung ausgeht.
hat dieses hier, in der bas.lua zu tun?

Code: Select all

	--Course generation
	self.cp.startingCorner = 0;
	self.cp.hasStartingCorner = false;
	self.cp.startingDirection = 0;
	self.cp.hasStartingDirection = false;
	self.cp.returnToFirstPoint = false;
	self.cp.hasGeneratedCourse = false;
	self.cp.hasValidCourseGenerationData = false;
	self.cp.ridgeMarkersAutomatic = true;
	self.cp.headland = {
		maxNumLanes = 6;
		numLanes = 0;
		userDirClockwise = true;
		orderBefore = true;

		tg = createTransformGroup('cpPointOrig_' .. tostring(self.rootNode));

		rectWidthRatio = 1.25;
		noGoWidthRatio = 0.975;
		minPointDistance = 0.5;
		maxPointDistance = 7.25;
	};
	link(getRootNode(), self.cp.headland.tg);
	if CpManager.isDeveloper then
		self.cp.headland.maxNumLanes = 50;
	end;
weil headland ja Vorgewende übersetzt heißt und maxNumLanes = 6 ja max 6 Runden sen kann

lg
andreas
anthu
Posts: 4979
Joined: Thu Nov 06, 2014 8:03 am

Re: courseplay, zwei fragen zu den lua´s

Post by anthu »

Möchte jetzt da keinen monolog draus werden kassen. Ev schreibt mir ja wer dazu der sich mit luas auskennt.
Zuerst mal klappts nun ganz gut mit 20m pointdistance.
Einen kleinen Schönheitsfehler hab ich aber mit dem Strohsammeln per Ladewagen festgestellt. Wenn der Ladewagen voll ist fährt der traktor zuf verkaufsstelle lädt ab und kommt wieder zum Feld zurück. Setzt ein Stückchen vorm letzten ende an.
Und zwar 10 punkte vorher. War mit 5m ja nur 50m vom ende, jetzt mit 20m schon 200m also schon teilweise feldlänge.
Wie kann ich diesen 10 punkte abstand auf 2 oder 3 verkürzen?
Lg
Andreas
User avatar
böserlöwe
GIANTS Software | Support Engineer
Posts: 10816
Joined: Thu Oct 01, 2009 10:09 pm
Location: Kreis Schaumburg
Contact:

Re: courseplay, zwei fragen zu den lua´s

Post by böserlöwe »

Ich bin nun nicht gerade der CP insider, aber ich weiß von den Scriptern das sie sich was dabei gedacht hatten als sie die Werte in die Lua geschrieben haben.
Durch die vielen unterschiedlichen Anforderungen sind auch hier nur Mittelwege zwischen den Günstigen Wert für die eine Situation und dem günstigsten Wert für die andere Situation gefunden worden.
Wenn du jetzt anfängst an einer der Stellschrauben zu drehen dauert es nicht lange und du lernst die Wichtigkeit der Abstimmung an einer anderen Stelle des CP von einer ganz anderen Seite kennen. Ich möchte deine Initiative nicht schlecht machen oder an deinen Vorhaben Zweifeln, ich möchte dich nur auf die daraus folgenden Umstände vorbereiten. Die Scripter haben am CP schon seit jahren geschraubt, und hatten am Anfang und Zwischendurch auch schon mal andere Werte in dem System ausprobiert.
Aber wie du schon festgestellt hast, kann man mit einem kleinen Wert der Abstände die genauigkeit erhöhen, mit einem höheren Wert die Anzahl der gespeicherten Punkte reduzieren. Was aber wenig nützt wenn man auf einer Map fährt die viele kleine und scharfe Kurven zu überwinden hat.

Also kurz gesagt: Ich kann die Zurückhaltung der anderen User verstehen, sie möchten dich nicht dazu verleiten etwas zu ändern, wo man hinterher nicht weiß0 ob es nicht auch schlechter werden kann. Wenn du das für dich selbst rausfinden magst und uns hier im Tread darüber berichten magst ist das natürlich gerne Willkommen.
anthu
Posts: 4979
Joined: Thu Nov 06, 2014 8:03 am

Re: courseplay, zwei fragen zu den lua´s

Post by anthu »

oki, danke für deine Ausführungen.
schon klar, das das courseplay team viel mehr erfahrung, bzw ich hab gar keine, hat.
ist a eh nur meine sicht der Dinge.
ich hab mir halt gedacht, wei lic himmer lese das die courseplay.xml klein gehalten werden soll ,nur das nötigste gespeichert,..
da hab ich mir gedacht das es unsinnig ist, auf laaangen Felden alle 5m nen kurspunkt zu haben.
auch die tipps, das man feldbearbeitungskurse nach möglichkeit nicht speichern soll sondern dann generieren wenn man sie braucht hab ich beherzigt.
jedoch brauch ich auf meiner derzeitigen map (btw, Lakeside, grose rechteckige Felder) einige Häckselkurse, muß ich speichern, da ic hdie im editor nachbearbeite.
mein bigX bekommt es einfach nicht hin, (bei 3runden und dann zickzack fahren) die vorgewende bahnversatz innerhalb von 5m zu schaffen.
die ändere ich händisch d.h. die letzten drei punkte vorm bahnversatz, anstatt in 5m Fahrt 10 versatz zu haben jeweils 2,5m bei den drei punkten vorher.
so ein häckselkurs hat dann schonmal 2500-4000 waypoints.
mit 20m abstand hätte derselbe Kurs dann eben nurmehr 750-1000 (ca. ein viertel)
auch habe ich zwei schwadkurse, für grünfutter das als gras ins lager kommt (multimowing mod, getreide eine stufe vor reif gemäht)
bei den kursen wird geschwadet und mit dem gleichen kurs führt der Ladewagen.
die hab ich händisch im editor so geändert das die äußeren punkte 5m übers feld hinausgehen damit der schwader bis zum ende sauber schwadet und der ladewagen das auch alles aufnimmt.
die habe auc hso 1500-2000 waypoints, die ich damit auf 400-500 drücken konnte.
btw, die kursgenerierung bei strassenfahrten, drescherabfahrten, schaufeln,... hat sich durch das ändern von
local pointDistance = 5; auf local pointDistance = 20; in der generateCourse.lua
nicht geändert.
diese werden immer noch mit 10m bzw 5m bei kurven abstand anúfgezeichent und gespeichert.

btw ich habs gefunden.
in der mode6.lua hab ich

Code: Select all

-- save last point
			if (fillLevelPct == 100 or vehicle.cp.isLoaded) and workArea and not courseplay:isBaler(workTool) then
				if vehicle.cp.hasUnloadingRefillingCourse and vehicle.cp.abortWork == nil then
					vehicle.cp.abortWork = vehicle.cp.previousWaypointIndex - 10;

auf

Code: Select all

-- save last point
			if (fillLevelPct == 100 or vehicle.cp.isLoaded) and workArea and not courseplay:isBaler(workTool) then
				if vehicle.cp.hasUnloadingRefillingCourse and vehicle.cp.abortWork == nil then
					vehicle.cp.abortWork = vehicle.cp.previousWaypointIndex - 3;
geändert
nun nimmt der Ladewagenfahrer beim nächste nanfahren nicht mehr soviel "Anlauf"

lg
andreas
AndyK70
Posts: 787
Joined: Thu Jan 01, 2015 12:15 pm

Re: courseplay, zwei fragen zu den lua´s

Post by AndyK70 »

Hi anthu,

genau das Problem mit den sehr geringen Abständen bei generierten Feldkurse hatte ich auch.
Ich hatte auch einen Vorschlag gemacht, aber der wurde abgelehnt.

Wenn du meine Version nutzen möchtest, dann lade dir die courseplay_master.zip von meinem Fork herunter. (Ist auf aktueller Version 4.01.111)
Du musst dann wie in der offiziellen Anleitung bei der Entwicklerversion es entpacken, den Inhalt des entpackten Ordners "courseplay_master" neu packen zum Zip Namens ZZZ_courseplay.zip und in deinen Mod-Ordner kopieren.

Das Problem mit der viel zu frühen Wiederaufnahme der Arbeit beim Sammeln/Düngen/etc. ist auch berücksichtigt.

Es wird aber nur bei generierten Feldkurse (ohne Vorgewende) der größere Abstand genommen und auch nicht direkt an den Wendepunkten.
Wenn man ungerade/unregelmäßige Feldränder hat dann würde es beim Vorgewende zu Problemen kommen und bei den Wenden gäbe es auch Probleme, da das Fahrzeug nicht gleich beim ersten oder zweiten Wegpunkt wieder in der Spur ist. Daher werden vor und nach Wenden 5 Wegpunkte mit normalen Abständen generiert und erst dann der größere Abstand.

Standardmäßig lasse ich 5 Wegpunkte zu einem verschmelzen, also statt 5m sind es 25m zwischen den Wegpunkten.
Wenn du das Ändern möchtest, dann kannst du nach einem Test in der courseplay.xml den Eintrag finden:

Code: Select all

    <courseGeneration maxPointsAtTurn="5" stepForPoints="5" />
Dort bei stepForPoints den Wert eintragen, wie viele Wegpunkte zu einem werden sollen. Ich hab es mal bis zu einem Wert von 10 getestet, aber dann auf der Westbridge Hill Map, wo es ja größere Felder als auf der Bjornholm gibt. Für mich war das schon so ziemlich die Grenze.

Der andere Wert "maxPointsAtTurn" gibt an, wie viele Wegpunkte vor und nach einer Wende mit normalen Abstand generiert werden. Mit 4 geht es normalerweise auch noch. Ein paar Fahrzeuge mit großen Wendekreis wie z.B. den Case IH Zugmaschinen können da aber schon Probleme machen, weil sie bei kleinen Geräten mit kleiner Arbeitsbreite nicht wieder rechtzeitig in der Spur sind.

Ich spiele nur noch damit. :D
Ich habe für WBH so ziemlich alle Straßen, für 80% der Felder Feldbearbeitungskurse in verschiedenen Spurbreiten (dreschen, düngen, säen) und für alle Feldränder Kurse zum Mähen und Grassammeln in meiner Courseplay.xml und sie ist gerade einmal 3,14MB groß:
Image

PS: wenn du vor der Kursgenerierung Debug-Channel 7 (Kurs-Generierung) einschaltest bekommst du im Log angezeigt wie viele Wegpunkte es gewesen wären und wie viele es nun sind.

PPS:
anthu wrote:btw ich habs gefunden.
in der mode6.lua hab ich
Vergiss nicht die mode4.lua, auch beim düngen/säen kann das Gerät leer werden, auftanken fahren und dann die Arbeit wieder aufnehmen. Da passiert dann das Gleiche mit der viel zu frühen Wiederaufnahme der Arbeit. (Hatte ich beim ersten Mal auch übersehen :D)
Tippfehler kann jeder mal machen, aber bestimmte Sachen sollte man kennen.
einziger, nicht einzigster
Standard, nicht Standart
seid und seit
Post Reply