LAUNCH VEHICLE ANIMATION

1. INTRODUCTION

The Indian Launch Vehicle PSLV (Polar Satellite Launch Vehicle) is used for launching remote Sensing Satellites into polar orbit. This Launch Vehicle makes use of onboard inertial sensors, navigation, and guidance and control systems for traversing the optimum trajectory leading to the desired orbit. Large volume of data relating to onboard sensors, navigation, guidance, control and sequencing are transmitted in S-band in the form of telemetry data. This data is acquired by ground stations situated at different parts of the world which have visibility of the RF data transmitted from the satellite. Different Onboard Computers are provided for Navigation and Guidance. The Navigation Computer is known as NGP and the Guidance Computer is known as GCP. The main telemetry data will contain data generated by NGP and GCP.

During ground testing of the vehicle this telemetry data is available to the checkout systems. The ground systems have to acquire this data in real time and carry out analysis. At present DOS operating system based software is used to acquire this data. This project is for carrying out data acquisition in real time using C++ under Windows NT platform and provides advanced display features like text mode, graph mode and Vehicle movement animation displays.

2. PROBLEM STATEMENT

A satellite is an object which has been placed into orbit by human endeavor. Such objects are sometimes called artificial satellites to distinguish them from natural satellites such as the Moon. Satellites are used for a large number of purposes. Common types include military (spy) and civilian Earth observation satellites, communication satellites, navigation satellites, weather satellites, and research satellites. Space stations and human spacecraft in orbit are also satellites. Satellite orbits vary greatly, depending on the purpose of the satellite, and are classified in a number of ways. Well-known (overlapping) classes include low Earth orbit, polar orbit, and geostationary orbit.

The Polar Satellite Launch Vehicle, commonly known by its abbreviation PSLV, is an expendable launch system developed and operated by the Indian Space Research Organization (ISRO). It was developed to allow India to launch its Indian Remote Sensing (IRS) satellites into sun synchronous orbits, a service that was, until the advent of the PSLV, commercially viable only from Russia. PSLV can also launch small size satellites into geostationary transfer orbit (GTO).

The PSLV has four stages using solid and liquid propulsion systems alternately. The first stage is one of the largest solid-fuel rocket boosters in the world and carries 138 tonnes of Hydroxyl-terminated polybutadiene (HTPB) bound propellant with a diameter of 2.8 m. The motor case is made of maraging steel. The booster develops a maximum thrust of about 4,430 kN. Six strap-on motors, four of which are ignited on the ground, augment the first stage thrust. Each of these solid propellant strap-on motors carries nine tonnes of HTPB propellant and produces 677 kN thrust. Pitch and yaw control of the PSLV during the thrust phase of the solid motor is achieved by injection of an aqueous solution of strontium perchlorate in the nozzle to constitute Secondary Injection Thrust Vector Control System (SITVC). The injection is stored in two cylindrical aluminum tanks strapped to the solid rocket motor and pressurized with nitrogen. There are two additional small liquid engine control power plants in the first stage, the Roll Control Thrusters (RCT), fixed radially opposite one on each side, between the triplet set of strap-on boosters. RCT is used for roll control during the first stage and the SITVC in two strap-on motors is for roll control augmentation.

The second stage employs the Vikas engine and carries 41.5 tonnes (40 tonnes till C-5 mission) of liquid propellant – Unsymmetrical Di-Methyl Hydrazine (UDMH) as fuel and Nitrogen tetroxide (N2O4) as oxidizer. It generates a maximum thrust of 800 kN (724 till C-5 mission). Pitch & yaw control is obtained by hydraulically gimbaled engine (±4°) and two hot gas reaction control for roll.

The third stage uses 7 tonnes of HTPB-based solid propellant and produces a maximum thrust of 324 kN. It has a Kevlar-polyamide fiber case and a submerged nozzle equipped with a flex-bearing-seal gimbaled nozzle (±2°) thrust-vector engine for pitches & yaw control. For roll control it uses the RCS (Reaction Control System) of fourth stage.

The fourth and the terminal stage of PSLV has a twin engine configuration using liquid propellant. With a propellant loading of 2 tonnes (Mono-Methyl Hydrazine as fuel + Mixed Oxides of Nitrogen as oxidiser), each of these engines generates a maximum thrust of 7.4 kN. Engine is gimbaled (±3°) for pitch, yaw & roll control and for control during the coast phase uses on-off RCS. PSLV-C4 used a new lightweight carbon composite payload adapter to enable a greater GTO payload capability.

The Project aims at an animated display of the Launch Vehicle Model during various Simulation Flight Runs. The Vehicle attitudes viz. angular displacements about the pitch, yaw and roll axes as well as Linear Displacements and Vehicle Commands will be used for achieving this. The Data acquired will be processed and transferred to the Document Class. A Timer will periodically update the Display Views. Three Views derived from CView are provided for Display. They are Grid Display, Graph Display and Animation Display. OpenGL API is used for realizing the PSLV Vehicle Model and for providing animations.

3. PRELIMINARY SURVEY

3.1 IDENTIFICATION OF NEED

Requirement Specification provides the developer and the customer with the means of access quality once the software is built. It is a software engineering task that bridges the gap between system level software allocation and software design. A requirement is a feature that must be included in the new system. It enables the System Engineer to specify the software functions and performance, indicates the software interface with other system elements and establish design constraints that the software must meet.

3.2 EXISTING SYSTEM

This system is used to monitor the launch of PSLV and to show the stage separation with the help of an animated model of rocket. It also shows graph and grid display to show the path of the rocket. In the existing system switching between the windows is done using command prompt which is difficult to handle.

The difficulties of the system are:

  • Not much user friendly
  • Difficult to control by giving command
  • Not better animation.

3.3 PROPOSED SYSTEM

In the proposed system the same functions as that of existing system are provided. Also provision for playback are provided using database. For implementing animation, OpenGL is used. The proposed system use Window to implement the above specified application. The use of Window makes the application user friendly and platform independent.

The advantages of proposed system over existing system are:

  • It is much more user friendly
  • It is easy to control using mouse than keyboard
  • It provides better animation using OpenGL
  • Platform independent

3.4 SYSTEM SYUDY

3.4.1. VC++ 6.0

Microsoft Visual C++ (often abbreviated as MSVC) is a commercial integrated development environment (IDE) product engineered by Microsoft for the C, C++, and C++/CLIprogramming languages. It has tools for developing and debugging C++ code, especially code written for the Microsoft WindowsAPI, the DirectXAPI, and the Microsoft .NET Framework. Visual C++ 6.0 (commonly known as VC6), which included MFC 6.0, was released in 1998. The release was somewhat controversial since it did not include an expected update to MFC. Visual C++ 6.0 is still quite popular and often used to maintain legacy projects. There are however issues with this version under Windows XP, especially under the debugging mode (ex: the values of static variables do not display). The debugging issues can be solved with a patch called the "Visual C++ 6.0 Processor Pack".

3.4.2. MICROSOFT FOUNDATION CLASS

The Microsoft Foundation Class Library (also Microsoft Foundation Classes or MFC) is a library that wraps portions of the Windows API in C++classes, including functionality that enables them to use a default application framework. Classes are defined for many of the handle-managed Windows objects and also for predefined windows and common controls.

MFC was introduced in 1992 with Microsoft's C/C++ 7.0compiler for use with 16-bit versions of Windows as an extremely thin object-oriented C++ wrapper for the Windows API. C++ was just beginning to replace C for development of commercial application software as the predominant way to interface to the API.

One interesting quirk of MFC is the use of "Afx" as the prefix for many functions, macros and the standard precompiled header name "stdafx.h". During early development what became MFC was called "Application Framework Extensions" and abbreviated "Afx". The name Microsoft Foundation Classes (MFC) was adopted too late in the release cycle to change these references.

When MFC was introduced, it provided C++ macros for Windows message-handling (via Message Maps), exceptions, run-time type identification (RTTI), serialization and dynamic class instantiation. The macros for message-handling were intended to reduce memory consumption by avoiding gratuitous virtual table use and also provide a more concrete structure for various Visual C++-supplied tools to edit and manipulate code without parsing the full language. The message-handling macros replaced the virtual function mechanism provided by C++.

The macros for serialization, exceptions, and RTTI predated availability of these features in Microsoft C++ by a number of years. 32-bit versions of MFC, for Windows NT 3.1 and later Windows operating systems, used compilers that implemented the language features and updated the macros to simply wrap the language features instead of providing customized implementations, realizing upward compatibility.

Fig 1: MFC Class hierarchy

Fig 2: MFC Class hierarchy

3.4.3 NI MEASUREMENT STUDIO

National Instruments Measurement Studio is an integrated suite of measurement and automation controls, tools, and class libraries for Visual Studio 2008, Visual Studio 2005, Visual Studio .NET 2003, and Visual Studio 6.0. NI Measurement Studio dramatically reduces application development time with ActiveX and .NET controls, object-oriented measurement hardware interfaces, advanced analysis libraries, scientific user interface controls, measurement data networking, wizards, interactive code designers, and highly extensible classes.

Measurement Studio delivers an interactive design approach for developing measurement and automation systems inside Visual C++ (Visual Studio 2005 and Visual Studio .NET 2003). Because the tools for Visual C++ integrate into the environment, we can use them exactly as we would native Microsoft tools. We can use the Measurement Studio AppWizard together with controls and class libraries to easily create our C++ measurement system. The AppWizard creates a project according to our specifications and includes a code template and the measurement tools we need to design our application. These tools include C++ classes for instrument control, data acquisition, data analysis, and live data transfer across the Internet. In addition, custom controls are included for creating our measurement user interface. Data object classes, which seamlessly encapsulate and pass data from acquisition to analysis to presentation, link the measurement classes to the interface controls.

The Measurement Studio Enterprise and Professional editions continue to offer ActiveX controls and class libraries for development in Visual C++ 6.0 and Visual Basic 6.0. With interactive ActiveX properties pages, we can graphically configure our data acquisition and instrument control applications for analog input and output, digital I/O, GPIB, VISA, and much more. Scientific analysis libraries include routines like Fast Fourier transforms, spectral measurements, and array manipulation. Also, the of ActiveX user interface controls included with Measurement Studio are designed specifically to allow we to create virtual instrumentation systems that look and feel like real-world instrumentation.

Measurement Studio for Visual C++ is an integrated suite of classes and controls designed especially for test, measurement, and automation applications. Measurement Studio offers the tools to acquire, analyze, and present real-world data from within the Microsoft Visual Studio 6.0 environment.

Measurement Studio for Visual C++ 6.0 provides:

  • ActiveX controls for data acquisition
  • Instrument control class libraries
  • Analysis libraries designed specifically for engineers and scientists
  • ActiveX user interface controls for presenting data

3.4.4. OpenGL

OpenGL (Open Graphics Library) is a standard specification defining a cross-language, cross-platformAPI for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL was developed by Silicon Graphics Inc. (SGI) in 1992[2] and is widely used in CAD, virtual reality, scientific visualization, information visualization, and flight simulation. It is also used in video games, where it competes with Direct3D on Microsoft Windows platforms. OpenGL is managed by a non-profit technology consortium, the Khronos Group.

OpenGL serves two main purposes:

  • To hide the complexities of interfacing with different 3D accelerators, by presenting the programmer with a single, uniform interface.
  • To hide the differing capabilities of hardware platforms, by requiring that all implementations support the full OpenGL feature set (using software emulation if necessary).

OpenGL's basic operation is to accept primitives such as points, lines and polygons, and convert them into pixels. This is done by a graphics pipeline known as the OpenGL state machine. Most OpenGL commands either issue primitives to the graphics pipeline, or configure how the pipeline processes these primitives. Prior to the introduction of OpenGL 2.0, each stage of the pipeline performed a fixed function and was configurable only within tight limits. OpenGL 2.0 offers several stages that are fully programmable using GLSL.

OpenGL is a low-level, procedural API, requiring the programmer to dictate the exact steps required to render a scene. This contrasts with descriptive (aka scene graph or retained mode) APIs, where a programmer only needs to describe a scene and can let the library manage the details of rendering it. OpenGL's low-level design requires programmers to have a good knowledge of the graphics pipeline, but also gives a certain amount of freedom to implement novel rendering algorithms.

When building animations with elements whose display is not supported in OpenGL, we need to see every detail. That’s what High Quality is for, of course. However, we may not need to see every detail in our scene when moving specific objects. OpenGL is automatically engaged when we interact with those objects, such as when scaling or positioning them, whether using sliders in the Controls window, values set in the Timeline window, or using interactors in the Composite window to move or scale the objects directly.

During these interactions, masks, bump maps, reflection maps, and downstream filters may be turned off to allow OpenGL accelerated previews. The High Quality software renderer takes over when we release the mouse, and all composition elements are visible. There are times when we’ll need to see every detail while moving objects, of course. That’s easy – simply press the Option key on Macintosh or the Alt key on Windows while moving elements, and the display updates with every element displayed at High Quality, in the resolution that we’ve set. We may also choose to reverse this behavior, so that interaction leaves all elements visible by default and only hides them when holding the modifier key, in the Render tab of the Preferences.

3.4.5. UDP networking

The User Datagram Protocol (UDP) is one of the core members of the Internet Protocol Suite, the set of network protocols used for the Internet. With UDP, computer applications can send messages, in this case referred to as datagrams, to other hosts on an Internet Protocol (IP) network without requiring prior communications to set up special transmission channels or data paths. UDP is sometimes called the Universal Datagram Protocol. The protocol was designed by David P. Reed in 1980 and formally defined in RFC 768.

UDP uses a simple transmission model without implicit hand-shaking dialogues for guaranteeing reliability, ordering, or data integrity. Thus, UDP provides an unreliable service and datagrams may arrive out of order, appear duplicated, or go missing without notice. UDP assumes that error checking and correction is either not necessary or performed in the application, avoiding the overhead of such processing at the network interface level. Time-sensitive applications often use UDP because dropping packets is preferable to waiting for delayed packets, which may not be an option in a real-time system. If error correction facilities are needed at the network interface level, an application may use the Transmission Control Protocol (TCP) or Stream Control Transmission Protocol (SCTP) which are designed for this purpose.