Difference between revisions of "CVEL"

From OrbiterWiki
Jump to navigation Jump to search
Line 157: Line 157:
 
=== Progress ===
 
=== Progress ===
  
[[Image:Progress4.jpg|thumb|right|300px|Progress dances with TMA]]
+
[[Image:Progress4.jpg|thumb|right|Progress dances with TMA]]
  
 
{{Addon|
 
{{Addon|

Revision as of 07:49, 3 April 2019

Building a payload hierarchy with CVEL/GPDS

CVE-lite (abridged Common Vessel Extensions) is a programming library to aid developers of add-on vessels for Orbiter. It extends the native Orbiter VESSEL class with additional functionality for multiple payloads, enhanced mesh handling or scenario-file based multistage support. It evolved from Dave Rowbotham's CVE library, cutting down on some of the internal complexity to allow for easier maintenance, and adding some new functionality.

CVEL implements the Generic Payload Description System (GPDS) to allow the end user to express via simple lines in the scenario file any payload and, if using another CVEL vessel, any additional upper stages. Version-independent inter-vessel communication, as used by the library internally, is also extended to programmers by a companion library, cvelmessage.dll.

History

GPDS was conceived as a way to mount a payload of the end user's choice atop the Ariane 5 as it was developed from a Vinka Multistage vessel to a standalone DLL.

It quickly became clear that combinations of payloads couldn't be specified. That is to say one couldn't mount an upper stage (eg. a Fregat) with a Probe on top of it. The two would necessarily have to jettison as separate vessels. This was not ideal and so an Inter-Vessel Payload Description interface was developed to allow communication between 'active' vessels (ie. to allow the Ariane 5 to tell the Fregat it should have a Probe attached).

The problem with this system (based on Rob Conley's COMMON_VESSEL class) was that, using C++ callbacks, calls between vessels compiled with different libraries would cause a crash. Something needed to be done.

Dave Rowbotham proposed extending the COMMON_VESSEL class to provide even more functionality. This included standardised mesh handling classes and an extensible GPDS handler. So was born COMMON_VESSEL_EX (CVE) which iterated through several beta variations building up an impressive array of supported vessels.

Unfortunately, CVE was also limited to interacting successfully only with other CVE vessels of the same library vintage, and the impressively complex library was slow to debug. CVE-lite was an attempt to distill CVE into a lighter, more easily integratable system. Dropping some of the features of CVE for a closer release date and quicker debugging.

Crucially, CVEL also removed the need for vessels to all be compiled with the same library by introducing the messenger DLL cvelmessage.dll. This enabled CVEL vessels to communicate not only with other CVEL vessels for the purposes of exchanging payload information, but to any other vessel about any information without requiring crash protection. Vessels that didn't support CVELmessage simply never receive the information.

Since the release of CVEL v1.0, there have been a large number of vessels released that support the system including, of course, the original Ariane 5 updated to version 2.

A beta library, including the Orbiter 2005 VESSEL2 class updates was compiled and added to the downloads section of the CVEL website, and is considered by most to be stable for the current implementation of Orbiter.

How to use GPDS2

The PAYLOAD tag

Put simply GPDS allows users of CVE-lite compatible vessels to describe multiple payloads quickly and easily using the PAYLOAD tag in the scenario file.

PAYLOAD payloadname mesh class x y z mass xrot fuellevel

Here, "payloadname" is simply the alphanumeric name you wish the created payload to have.

"Mesh" is the name of the mesh file, including any paths off ~/Mesh that will represent the payload on the stack before it is separated, minus the ".msh"

"Class" is the payload's classname, such as "deltaglider" or "module1".

"x", "y" and "z" represent floating point offsets from the launching vessel's reference point (normally the centre of mass) that the mesh should be drawn. An example would be "0 0 4" for four metres along the centreline of the vessel.

"Mass" is the all-up-mass of the vessel that is to be created, INCLUDING fuel load. If you vary the loaded fuel (see later), you really ought to change this value here to be consistent.

"Xrot" is now sadly abandoned due to a limitation in Orbiter's current API, simply put a zero (0) here.

"Fuellevel" is the level (0->1) of fuel you wish the spawned payload to be equipped with. Not all vessels support the changing of their fuel state at creation, however. Most DLL-based craft won't unless they too are CVE-lite compatible, but most CFG-based vessels will quite happily.

The STAGE tag

STAGEs are broadly similar to PAYLOAD *except* they constitute additional stages to your vessel. That is to say, if you mount a payload above a stage (and before and ENDSTAGE -- see below) it will separate WITH that "stage" vehicle and you may continue to loft the payload(s) before jettionning it later. An example would be the Soyuz launch vessel may configure a Fregat as a STAGE with the MarsExpress as a PAYLOAD above it.

STAGE payloadname mesh class x y z mass xrot fuellevel

(definitions as for PAYLOAD)

The ENDSTAGE tag

Differing to GPDS1 and GPDS2 here, the ENDSTAGE tag allows the user to close-off a substage and continue stacking payloads or more stages onto the launch vessel directly. It takes no parameters.

An example would be an Ariane 5 launching two fregats, both containing MarsExpress orbiters as PAYLOADs.


ENDSTAGE

Examples

Some basic (and not so basic!) examples.


One Module-1 aboard a Proton-K from Baikonur.

Proton1:protonk
  STATUS Landed Earth
  BASE Baikonur:5
  HEADING 90.00
  FUEL 1.000
  CONFIGURATION 0
  PAYLOAD UserModule module1 module1 0 0 30 15000 0 1
END

Here the module1 mesh is loaded on the launcher 30 metres above its centre of mass. It weighs 15000. When it is jettisoned it will be of class "module1", fully fuelled (the 1 on the end) and be called "UserModule"

Two Module-2s

  PAYLOAD UserModule1 module2 module2 0 0 27 8000 0 1
  PAYLOAD UserModule2 module2 module2 0 0 31 8000 0 1

Two Module-2s, each with their own CVE-lite fregat

  STAGE Fregat1 fregat cvelfregat 0 0 27 7000 0 1
    PAYLOAD UserModule1 module2 module2 0 0 31 8000 0 1
  ENDSTAGE
  STAGE Fregat2 fregat cvelfregat 0 0 35 7000 0 1
    PAYLOAD UserModule2 module2 module2 0 0 39 8000 0 1
  ENDSTAGE


MarsExpress probe on a fregat and star48 upper stages

  STAGE Fregat1 fregat cvelfregat 0 0 27 7000 0 1
    STAGE Star1 star48 star48 0 0 30 5000 0 1
      PAYLOAD MarsExpress mars_express_stowed mars_express_deployed 0 0 33 600 0 1
    ENDSTAGE
  ENDSTAGE


CVEL-compatible vessels

Ariane 4

Ariane 44LP blasting off from at Kourou

Project home: Ariane 4 pack at orbithangar.com
Author: David 'dh219' Henderson
Current version: Unknown
Compatibility: Unknown


European Soyuz-class booster. Now retired. See also from Wikipedia.

Recommended add-ons

Kourou Launch Centre

Ariane 5

Ariane 5 blasting off from the pad at Kourou

Project home: Ariane 5 with ATV (CVEL) at orbithangar.com
Author: David 'dh219' Henderson
Current version: Unknown
Compatibility: Unknown


This add-on simulates three modern Ariane 5 variants. The A5 G (Generic), the A5 ECA (enhanced with cryogenic second stage), and the hybrid A5 ATV (model that will be used to launch the European ATV ISS resupply craft). Using Thomas Ruth's beautiful free meshes and the CVE-lite programming library, the Ariane 5 is the flagship of the CCCP team's CVEL vessel fleet.

Background

Ariane 5 is a European heavy-lift launcher that operates out of Kourou in French Guiana. Capable of inserting up to 10 tonnes into a geostationary transfer orbit, or up to 21 tonnes into 51-degree LEO.

At liftoff, two solid rocket boosters (the EAPs) provide 90% of the thrust for 120 seconds before the central cryogenic stage (EPC), driven by a single French Vulcain or Vulcain-2 engine continues the ascent for approximately a further eight minutes.

The core lofts an upper stage fuelled either by a storable hypergolic propellant (the EPS) or another cryogenic fuel (the ESC). restartable a number of times for complicated orbital insertions, including depositing the ATV into low-Earth orbit, multiple payload GTO insertions and interplanetary ejections or an enhanced for increased GTO payloads.

The Simulation

The simulation follows the published Ariane 5 specifications as closely as possible and includes the normal CCCP-fleet features of thrust vectoring, smoke where appropriate and full user-configurable flexibility over payloads thanks to the GPDS system provided by CVEL.

Additional features include automatic engine throttling for max-Q, an optional automatic initial heading alignment program, non-restartable main stage and calculated centre of mass changes, including those produced by payloads.

The ATV

ATV docked to ISS over Europe

As a bonus several other payload packages are included in the main download, these include Orbiterfan's Mars Express, the Russian Fregat restartable upper stage, C3PO's orbital fuel tank, but probably most significantly, C3PO's ATV.

The ATV is Europe's most visible contribution to the ISS. A 20-tonne Automated Transfer Vehicle intended to rendezvous and dock with the ISS to bring supplies, deorbit waste, provide reboost control and extend the living volume of the station by several cubic metres.

Despite following ESA and Arianespace's released information as closely as possible, many users have found it impossible to orbit the fully-loaded ATV with the default Ariane 5 ATV configuration in the pack, reducing the EPS's fuel load to 30% (PRPLEVEL 2:0.3) on launch seems to provide a more optimal setup.

The ATV has a fair amount of dV available to it, but its acceleration is pitiful. Plan ahead!

Recommended add-ons

Kourou Launch Centre

Progress

Progress dances with TMA

Project home: Progress at orbithangar.com
Author: David 'dh219' Henderson
Current version: Unknown
Compatibility: Unknown


With a mesh from Jógvan 'C3PO' Trondesen and Jason 'Agent36' Benson, this realistic Progress cargo ferry is best launched by the Soyuz Launchers and a perfect companion to the Soyuz TMA and ATV.

Proton-K

Proton K lifts off from Baikonur
Proton launch profile

Project home: Proton K at CCCP Fleet
Author: David Henderson, Alex vH, Dennis Krenz
Current version: Unknown
Compatibility: Unknown


The Proton K is the three-stage version of the Proton launch vehicle used for lofting 20-tonne payloads to 51-degree LEO. Salyut, Mir and the ISS service module have all been lofted via Proton K.

CVEL-based GPDS support enables the addition of a fourth stage (such as the included Fregat) for heavy GTO missions or indeed moonshots as a four-stage version was used for the Soviet circumlunar man-capable flights.

Recommended add-ons

Saturn V

Project home: Saturn V variants at CCCP Fleet
Author: Dave Rowbotham
Current version: Unknown
Compatibility: Unknown


Using Thomas Ruth's excellent free Saturn V meshes, this CVE-lite compatible series of Saturn V variants allows the user to explore some of the suggested options for the Saturn fleet before it was abandoned for the Shuttle.

Unfortunately, there was no Lunar Module available in this package, but with payloads fully configurable with GPDS, users were able to launch whatever they like behind the CSM.

Soyuz TMA

Soyuz TMA docks to a DG4

Project home: Soyuz TMA at orbithangar.com
Author: David 'dh219' Henderson
Current version: Unknown
Compatibility: Unknown


Using meshes from Jason 'Agent36' Benson and Jógvan 'C3PO' Trondesen, the Soyuz TMA has a realistic configuration, a particle-stream RCS system, animated panels and antennae and a ballistic reentry autopilot.

Launch on the Soyuz Launchers and perfect for use with the Progress and ATV.

See also

CVEL programming tutorial

GPDS

Links

The CCCP Fleet

The official CVEL homepage

CCCP-Team CVE-Lite vessels

CVE Search at Orbithangar

Precis

This article has a precis and appears in the Random addon or Random article section on the Main Page. The precis can be found at CVEL/precis and is displayed below.

Building a payload hierarchy with CVEL/GPDS

CVE-lite (abridged Common Vessel Extensions) is a programming library to aid developers of add-on vessels for Orbiter 2003-2006. It extends the native Orbiter VESSEL class with additional functionality for multiple payloads, enhanced mesh handling or scenario-file based multistage support. It implements the Generic Payload Description System (GPDS) scenario syntax to allow the end user to express via simple lines in the scenario file any payload and, if using another CVEL vessel, any additional upper stages. (More...)