Ex-Alta 1 vs Ex-Alta 2
Software

Despite the software design of Ex-Alta 1 being well made in terms of raw functionality, it contains some drawbacks that reduce the software’s readability, maintainability and reusability. To make a higher quality open-source software available to other CubeSat teams, some significant changes have been made to Ex-Alta 2 to ensure that the software is useful and reusable for future missions and that the code is easy to maintain, and understand. 

One major change that has been made is to use Python as the ground station scripting language instead of Forth. The Forth language is less popular and is unfamiliar to a lot of people compared to Python. Moreover, the legacy Forth command response highly relies on manual control of the operators. It takes days for the operators to use Forth to control the satellite. Therefore, Python, as a more well-known programming language, was introduced as the scripting language to build ground station architecture. Compared with Forth, Python is way easier to be written, read, maintain and understand, which makes the satellite itself much easier to automate. By using Python to write the command, the operators at the ground station can get asynchronous responses. This improvement highly enhanced the efficiency of the ground station operation team because the members do not need to wake up at midnight to operate the satellite.

The new communication system

The new scripting language also brings another convenience, the new communication system. For Ex-Alta 1, the members needed to install and configure the operation platform themselves. The members have to learn the Forth keywords, which reduces the efficiency and productivity of maintaining the satellite. The Ex-Alta 2, however, has a more user-friendly interface for the operators to communicate with the satellite: a website using Python as the backend language has been created. The new interface is hassle-free and requires no additional programming language to use.

The Software layout of Ex-Alta 2

The software layout of Ex-Alta 2 achieved the principles of Object-oriented design. Each module in charge of each functionality separately. There are also several remarkable improvements in the network layer. The service-oriented architecture was introduced to this layer. Each system is assigned with 64 services without data handling, which decreases the workload of the development team. The black-box form new architecture makes each service and sub-service more independent of each other as they make sure the business actions will not interfere with each other. The new design methods also reduce the redundancy of the implementation, for example, the service of the Electronic power system (EPS) is not necessary to be implemented because EPS has its SOA using CSP and CSP can update and request EPS system data from the ground itself. 

This new layout also contains the improvement of the testing methods. When developing Ex-Alta 1, the testing methods were simply added to the accomplished codes. For normal operations, the testing results were printed directly to GomShell. The shortcoming during the normal operations was that the OBC cannot be interacted with. Another testing methodology of Ex-Alta 1 was to run all the tests or a specific subset that needed to be tested. The main drawback of this methodology was that it was too time-consuming because this testing methodology needed to reset the device every time it was executed.

For Ex-Alta 2, the optimized testing scheme provides every team with a more friendly procedure. If the users need to test the Subsystem Equipment Handlers (EH) layer or the other layers (Subsystem Hardware Abstraction Layer (Layer 2), Telecommand/Telemetry Handling, and OSL Network layers (Layer 3) and On-board Services layer (Layer 4)), they can do it separately by utilizing CMock and Ceedling frameworks for EH layer and manual regression of the ground station command-line interface and UART/Serial interface for Layer 2, 3 and 4. Unlike the time-consuming testing methodologies in Ex-Alta 1, this scheme can test the functions separately and hence, save time for the members who perform the testing.

Other differences between Ex-Alta 1 and Ex-Alta 2 include the changes of the file system, compression library, repository. Ex-Alta 2 introduces a more redundant file system to ensure the reliability of the system and adds a compression algorithm to reduce the loss of the images. Comparing with Ex-Alta 1, Ex-Alta 2 has one more repository to separate the production part and the development part, which makes the development tracks more clear and improves the productivity and efficiency of the development process.

By Robert Taylor and Shelly Xue

This page was last updated April 2021