Skip to content

mj-unseld/pySpace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pySpace

Table of contents

1. What is it about?

This small 2D game emulates the Spaceship behavior in a force free space. The player can control the space ship by applying forces via booster (w/s/a/d). By using the Kalman filter, the spaceship estimates the applied force and therefore the acceleration, current velocity, position in space and the mass of the spaceship. It should predict the trajectory of the spaceship in the space. The player can collect power-ups, which increases the mass as load of the spaceship or the power of the booster. The spaceship can just measure the position directly through the radar connection to the earth. This and the applied booster have some noise.

Green dot: real position, Blue dot: measured position, Red dots: Estimation over time, Yellow dots: 99% bubble, timestep is 1s/10=0.1s

Green dot: real position, Blue dot: measured position, Red dots: Estimation over time, Yellow dots: 99% bubble, timestep is 1s/10=0.1s

2. How to Control

The spaceship is controlled by standard Keys W/S/A/D. Changing parameters can be done on the input/output panel to the right side. Hit "update" to be able to control the spaceship again.

Progress:

Goals for V1:

  • UI
    • Playground
      • Ship
        • Real position
        • Estimation cloud
        • Transmitted position
      • Boosterflame
    • "Cockpit"-Computer view with estimated values such as
      • Input
        • Position (x/y)
        • Velocity
        • Booster force
        • Mass
        • Number of Predictors
        • Update Time
        • Measure Deviance
        • Boosterforce Deviance
      • Output
        • Spaceship parameters

          • Position
          • Velocity
        • Graphplots with real and estimated values for:

          Sidenote: QtQuick do not provide own Plot-integration. Matplotlib just works with QtWidgets and QtCharts have some missing dependencies. Postponed to end.

          • Difference real position (x/y) vs. estimated position (x/y) over time
          • Difference real velocity vs. estimated velocity over time
  • Kernel
    • Spaceship
      • Ship
      • Kalman filter/Boardcomputer
        • Position (x/y)

        • Orientation angle (\theta_{x,y}, \theta_{x,z}, \theta_{y,z})

          Requires expanding Kalman Filter to Unscented Kalman Filter. Postponed to V1.5. Also want to compare with Expanded Kalman Filter and see the influence of linearization.

    • Power Ups
      • Loads
      • Booster

3. Required packages

Besides python 3 is pyQt6 required. Whole UserInterface and Signal/Slot communication uses pyQt6. As IDE is VS Code used. The required settings for VS Code are attached.

4. Documentation

Documentation can be found here.

5. Further ideas

Goals for V2: Offer 3d Space"simulator" as own game type

  • Menu
    • Offer V1
    • Add V2
  • UI
    • Add 3d Game Engine (Panda3d?)
    • Playground
      • Add Planets
      • Astroids
    • Cockpit view with boardcomputer displaying estimated values such as. Requires expansion of State Space Model if Mass/Load and Boosterforce should be approximated.
      • Mass/Load
      • Velocity
      • Booster force
      • Current position (x/y/z)
      • Orientation
    • Moving Graphplot to submenu
  • Kernel
    • Spaceship
      • different ship types
      • Warp engine
    • Galaxies
    • Planets
      • Movement
      • Rotation
      • Gravity

Goals for V3:

Add as further mode "Orrery" where you can watch movement of Plantes just like in a orrery with date

  • AI calculating route and auto pilot
  • add interstellar travelling (with fast forward)

6. License

This project uses the GPLv3 License

About the Author

Michael Johannes Unseld is 25 years old and study Medical Engineering at the Ulm University of Applied Sciences (THU). The focus of his studies is software development for Medical Devices, image acquisition and image analysis. During his internship and bachelor thesis, he has already wrote software for the Institute for Laser Technologies in Medicine and Metrology at the University of Ulm (ILM).

These are some software he has already realized 💻:

  • 📷 Hyperspectral-Camera: Gaining images in realtime, read out their spectral data and compressed it into a three-dimensional data cube for data analysis in MATLAB.

  • 📷 Optical Coherence Tomography: Control interfaces for a laser diode, spectrometer and three dimensional linear stage as probe table united in one Software. Establishing four different image acquisition procedures with their variants and a save system for data analysis afterwards.

Knowledge/Recently used:

  1. C++
  2. Qt
  3. MATLAB
  4. CMake

Basic Knowledge/Got in touch with:

  1. Java
  2. C#
  3. Python
  4. OpenCV

Interests/Want to do:

  • CUDA/GPU-Programming
  • Learning Chess
  • Study Maxwell's Equations (<- Maybe do a numerical solver to it as project)
  • Using Object Identifier/Face Recognition of OpenCV
  • Linux programming
  • Building small robots based on a Raspberry Pi
  • Expanding knowledge in astronomy
void WorkLifeBalance() {
  do {
    doSleep();
    startWork();
    while(work) {
      if(coffee == CoffeeState::empty) {
        getCoffee();
      }
    }
  } while(isAlive == true);
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published