Deze handleiding beschrijft hoe u mijn Planetary Autopilot Manager programmeerbaar blokscript instelt en gebruikt.
Basisconfiguratie / Vereisten voor verzending
Vereisten voor verzending:
- Een afstandsbedieningsblok in de gewenste voorwaartse richting
- Minstens 1 boegschroef in de voorwaartse, achterwaartse en opwaartse richting ten opzichte van het afstandsbedieningsblok
- Minimaal 1 gyroscoop (kan op elke manier worden geplaatst)
- Minimaal 1 camera aan de voorkant van het schip en de bovenkant naar boven gericht, ten opzichte van het afstandsbedieningsblok. [Meerdere camera's ondersteund, raad aan om ze dicht bij elkaar te plaatsen]
- Minstens 1 camera op de bodem van het schip en de bovenkant naar voren gericht, ten opzichte van het afstandsbedieningsblok [Meerdere camera's ondersteund, aanbevolen om ze dicht bij elkaar te plaatsen]
Noem de volgende blokken:
- Geef het afstandsbedieningsblok een naam die overeenkomt met de variabele 'nameOfRemoteControl', wat standaard 'Remote Control' is.
- Plaats alle voorwaartse camera's in een groep en zorg dat de groepsnaam overeenkomt met de variabele 'nameOfHorizontalCameraGroup', die standaard "PA Forward Cams" is.
- Plaats alle neerwaartse camera's in een groep en zorg ervoor dat de groepsnaam overeenkomt met de variabele 'nameOfVerticalCameraGroup', die standaard "PA Down Cams" is.
Deze variabelen kunnen desgewenst in code worden gewijzigd om aan uw voorkeuren te voldoen.
Gebruik
Zodra de installatie is voltooid en u zonder fouten kunt compileren, volgen hier de opdrachten die u kunt uitvoeren.
Alle commando's hebben het volgende formaat:
GOTO
- Beschrijving – Vertelt de stuurautomaat om naar de opgegeven locatie te gaan
- Commando – GOTO
- Parameter #1 – De waypoint-info van de doelbestemming
- Voorbeeld – “GOTO,GPS:KiwiNinja99 #1:55985.37:16475.92:17445.72:”
- Opmerking – Bij het kopiëren van waypoint-info uit het GPS-menu, verwijder de kleurinfo aan het einde “#FFFFFFFF”, zie voorbeeld voor werkinvoer.
STOP
- Beschrijving – stopt en reset de stuurautomaat
- Commando – STOP
TARGET_ELEVATIE
- Beschrijving – stelt de doelhoogte in die tijdens de vlucht moet worden gehandhaafd.
- Commando – TARGET_ELEVATION
- Parameter #1 – De te handhaven hoogte, in meters (m).
- Voorbeeld – “TARGET_ELEVATION,1000”
- Opmerking – Hoogtemeting wordt bepaald door de opdracht ELEVATION_TYPE.
- Opmerking - Hoger is doorgaans veiliger en heeft minder kans op crashen
ELEVATION_TYPE
- Beschrijving – Bepaalt hoe de huidige hoogte wordt gemeten (vanaf het zeeniveau van de planeet of het oppervlak van de planeet)
- Commando - ELEVATION_TYPE
- Parameter #1 – “SEALEVEL” of “OPPERVLAKTE”
- Voorbeeld – “ELEVATION_TYPE,SEALEVEL”
MAXIMALE SNELHEID
- Beschrijving – Stelt de maximale snelheid in voor de stuurautomaat
- Commando - MAX_SPEED
- Parameter #1 – de maximale snelheid die moet worden ingesteld
- Voorbeeld – “MAX_SPEED,75”
- Opmerking – Langzamer is doorgaans veiliger, maar is getest als redelijk veilig bij 100 m/s als de hoogte voldoende is (500 m+)
Configuratie en tips
Sommige variabelen binnen de klasse PlanetaryAutopilotManager kunnen worden gewijzigd. Sommige kunnen worden gekoppeld aan hun eigen getter/setter-functies, bij andere is het waarschijnlijk logisch om ze een keer te wijzigen en klaar te zijn. Ik zal hier de voor- en nadelen van het waardenbereik voor elke variabele bespreken die ik tijdens het testen heb ontdekt.
Ik raad ten zeerste aan om je schepen te testen met de verschillende configuratie-opties in een creatieve wereld voordat je ze in een overlevingswereld gebruikt.
maximale snelheid
- Hoge snelheden zijn gevaarlijker omdat de stuurautomaat in de loop van de tijd minder scans kan uitvoeren, wat betekent dat de kans groter is dat hij een naderend obstakel mist. Als je echter aandringt op snelheid, raad ik aan om meerdere camera's in elke cameragroep te plaatsen (vooruit en omlaag) om te compenseren.
- Aanbevolen bereik: voor slechts 1 camera in elke groep, 50-75 m/s. Voeg meer camera's toe voor meer snelheid.
doelElevation
- Aanbevolen bereik (300m-1000m)
- Hogere waarden betekenen dat uw schip minder snel een berg of ander obstakel tegenkomt, wat minder kans op een crash betekent.
doelElevationTolerance
- Aanbevolen bereik (10m-50m)
- Hoe ver u een verticale verplaatsing van de targetElevation accepteert, zodat er geen correctie plaatsvindt. Als je hier een aanzienlijke waarde voor hebt, betekent dit dat je schip niet zo vaak probeert zichzelf te corrigeren, en gewoon meevaart en onderweg stroom bespaart (vooral als hoogtetype is ingesteld op Oppervlakte).
scanningDistanceForwardModifier
- De variabele wijzigt het bereik dat de voorwaartse camera's zullen scannen om obstakels te zoeken, en zal omhoog beginnen te vliegen (maar nog steeds vooruit gaan) om ze te vermijden.
- Hogere waarden betekenen langere heads-up-tijden, maar zullen minder vaak scannen. En vice versa voor lagere waarden.
- Moet hoger zijn dan cruisenDistanceModifier
- Aanbevolen bereik (1.5f-2.5f)
scanningDistanceDownwardModifier
- De variabele wijzigt het bereik dat de neerwaartse camera's zullen scannen om obstakels te zoeken, en zal omhoog beginnen te vliegen (maar nog steeds vooruit gaan) om ze te vermijden.
- Hogere waarden betekenen langere heads-up-tijden, maar zullen minder vaak scannen. En vice versa voor lagere waarden.
- Moet hoger zijn dan cruisenDistanceModifier
- Aanbevolen bereik (1.5f-2.5f)
cruisenDistanceModifier
- Deze variabele wijzigt het bereik waarop het schip volledig horizontaal tot stilstand zal komen en omhoog zal vliegen als een gedetecteerd obstakel te dichtbij is.
- Hogere waarden betekenen meer veiligheid, maar te hoog ziet er misschien een beetje gek uit.
- Moet minimaal 0.3f minder zijn dan scanningDistanceForwardModifier en moet groter zijn dan 1.1f
- Aanbevolen bereik (1.2f-1.5f)
naamOfRemoteControl
naamVanHorizontaleCameraGroup
naamOfVerticalCameraGroup
- Dit zijn de namen van de afstandsbedienings- en cameragroepen waar het programma naar zoekt, verander deze gerust als je de standaardnamen niet leuk vindt.
hoogtetype
- Deze variabele bepaalt of de huidige hoogte wordt gemeten vanaf het zeeniveau van de planeet of vanaf het oppervlak.
- Dit kan worden gewijzigd via de functie "SetElevationType" of door het handmatig in te stellen zoals de andere variabelen hier.
- Zeeniveau kan een soepelere, minder hobbelige vlucht bieden (wat energie bespaart), maar u zult een goede prijs moeten vinden die voor u werkt
- Surface is waarschijnlijk beter om meteen mee te werken als je te lui bent om een goede prijs voor zeeniveau te vinden.
Aantal camera's
- Het aantal camera's in uw voorwaartse en neerwaartse cameragroepen verhoogt het aantal scans en dus de veiligheid van uw schip.
- De raycast van de camera die wordt gebruikt om te scannen, is echter behoorlijk computerintensief, en als je op een multiplayer-server werkt, mag je serverbeheerder je misschien niet zo leuk vinden. Als dit een probleem is, raad ik aan om zo min mogelijk camera's te gebruiken (sommige van mijn kleinere schepen werken prima met slechts 1 camera in elke cameragroep)
Scriptinterface
Dit programma was oorspronkelijk ontworpen om hand in hand te gaan met een ander script dat ik had gepland, maar ik besloot dat het het beste zou zijn om dit eerst te maken om een solide basis te hebben om vanuit te werken. Daarom zal het misschien goed werken voor sommigen van de creatievere groep van jullie.
Het standaardprogramma (meestal in de hoofdlus) zou als een goed voorbeeld moeten dienen om u te laten zien hoe u succesvol met het programma kunt communiceren.
Om succesvol te kunnen werken, vereist het programma:
- Een 'MijnIni ini = nieuwe MijnIni();' gedeclareerd als een veld
- De PlanetaryAutopilotManager.Init(GridTerminalSystem, dit, refini) in de programmaconstructor “Program() { }”.
- De PlanetaryAutopilotManager.Save(ref ini) in de opslagfunctie van het programma "public void Save() { }"
- De PlanetaryAutopilotManager.Update(this, updateSource) in de hoofdfunctie van het programma "public void Main(string argument, UpdateType updateSource)"
Zolang aan deze vereisten wordt voldaan, zou het programma moeten werken. Vanaf hier kunt u ermee communiceren door deze functies aan te roepen:
*opmerking* Anywhere-parameters met de naam "MyGridProgram gp" betekenen dat u het programma zelf gewoon kunt invoeren door "this" te gebruiken.
PlanetaryAutopilotManager.SetDestination(Vector3D-coördinaten, MyGridProgram gp)
- Stelt de doelbestemming in en begint naar de bestemming te reizen.
PlanetaryAutopilotManager.Stop (MyGridProgram gp)
- Stopt het schip, herstelt alle stuwraketten en gyroscopen naar handmatige bediening.
PlanetaryAutopilotManager.SetTargetElevation(zwevend doelElevation)
- Stelt de doelhoogte in die het schip tijdens zijn vlucht zal proberen te evenaren.
PlanetaryAutopilotManager.SetElevationType(MyPlanetElevation elevatieType)
- Stelt in hoe de huidige hoogte wordt gemeten
- MyPlanetElevation.Sealevel – metingen vanaf het zeeniveau van de planeet
- MyPlanetElevation.Surface – metingen vanaf het oppervlak direct onder het schip
PlanetaryAutopilotManager.SetMaxSpeed (float maxSpeed)
- Stelt de maximale snelheid in die het schip zal reizen
- Niet hoger instellen dan de server toestaat
Hoe te controleren of het schip zijn vlucht heeft voltooid?
Er zijn twee manieren waarop u dit kunt doen
- Controleer of de variabele PlanetaryAutopilotManager.destinationIsSet False is [if (!PlanetaryAutopilotManager.destinationIsSet)].
- Abonneer u op de gebeurtenis PlanetaryAutopilotManager.FlightCompleted (zie de functie OnFlightCompletion() als voorbeeld)
Dat is alles wat we hiervoor vandaag delen Space Engineers gids. Deze handleiding is oorspronkelijk gemaakt en geschreven door KiwiNinja99. Als we deze handleiding niet kunnen bijwerken, kunt u de laatste update vinden door deze te volgen link.