feat(marker): sideriver — mål hvor riven lægger skåret, forskyd læssevognen tilsvarende (v1.24.0.0)
Brugerkrav 25/9: alle river-typer skal virke. Nedlægningsområdet (runtime-felt eller riverens XML) måles i traktorens ramme mens riven arbejder; læssevognen på rivens kursus får CP-toolOffsetX = egen - skårets forskydning og får sin værdi tilbage når den slippes.
This commit is contained in:
@@ -11,6 +11,7 @@ ADFieldModel.CP_MAX_WIDTH = 50
|
||||
ADFieldModel.WIDTH_TOLERANCE = 0.05
|
||||
ADFieldModel.RETRY_MS = 300000
|
||||
ADFieldModel.MAX_COLLECTORS = 2
|
||||
ADFieldModel.CP_MAX_TOOL_OFFSET = 10
|
||||
|
||||
ADFieldModel.ROLES = {mowing = "mower", tedding = "tedder", raking = "rake", collecting = "collector"}
|
||||
local KNOWN_STAGES = {idle = true, ready = true, mowing = true, tedding = true, raking = true, collecting = true, done = true}
|
||||
@@ -110,6 +111,7 @@ function ADFieldModel.start(field)
|
||||
copy.mowWidth = nil
|
||||
copy.mowVehicleId = nil
|
||||
copy.rakeVehicleId = nil
|
||||
copy.windrowOffset = nil
|
||||
return copy
|
||||
end
|
||||
|
||||
@@ -169,6 +171,13 @@ function ADFieldModel.with(field, changes)
|
||||
return copy
|
||||
end
|
||||
|
||||
-- Læssevognens Courseplay-forskydning når den kører rivens kursus: pickuppen skal ligge over skåret, der
|
||||
-- ligger windrowOffset m til venstre (positiv) for rivens kursuslinje. Courseplay tillader ±10 m.
|
||||
function ADFieldModel.collectorOffset(ownOffset, windrowOffset)
|
||||
local offset = (ownOffset or 0) - (windrowOffset or 0)
|
||||
return math.max(-ADFieldModel.CP_MAX_TOOL_OFFSET, math.min(ADFieldModel.CP_MAX_TOOL_OFFSET, offset))
|
||||
end
|
||||
|
||||
function ADFieldModel.toRecord(field)
|
||||
return {
|
||||
id = field.id, stage = field.stage, mode = field.plan.mode, product = field.plan.product,
|
||||
@@ -176,6 +185,7 @@ function ADFieldModel.toRecord(field)
|
||||
mowWidth = field.mowWidth or 0,
|
||||
mowVehicle = field.mowVehicleId or "",
|
||||
rakeVehicle = field.rakeVehicleId or "",
|
||||
windrowOffset = field.windrowOffset ~= nil and string.format("%.2f", field.windrowOffset) or "",
|
||||
}
|
||||
end
|
||||
|
||||
@@ -189,5 +199,6 @@ function ADFieldModel.fromRecord(record)
|
||||
field.mowWidth = (record.mowWidth or 0) > 0 and record.mowWidth or nil
|
||||
field.mowVehicleId = record.mowVehicle ~= nil and record.mowVehicle ~= "" and record.mowVehicle or nil
|
||||
field.rakeVehicleId = record.rakeVehicle ~= nil and record.rakeVehicle ~= "" and record.rakeVehicle or nil
|
||||
field.windrowOffset = tonumber(record.windrowOffset)
|
||||
return field
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user