Skip to content
vinay0000 edited this page Jun 21, 2022 · 12 revisions

Welcome to the OrbitPy wiki!

To get started with OrbitPy please read the README.MD file in the main repository. OrbitPy consists of several python modules which in turn utilize python-bounded C++ classes (using pybind11) to achieve most of its functionality. The C++ classes are available within the propcov library which sits in the ./propcov/ folder. Briefly the relationship diagram is as follows:

------------TBD-----------

Documentation is available in the following places:

  • README.MD in main repository. See this file for installation instructions.
  • README.MD in the ./propcov/ folder.
  • The sphinx based HTML documentation built from the main repository. This contains the documentation of the python part and user-interface to the OrbitPy package. See the README.MD file for instructions.
  • The Word document documenting the propcov C++ Classes (./propcov/docs/propcov-cpp.docx).

Developer Rules

When resolving issues, making revisions or adding new features, make updates in new dedicated branches and not in the Master branch. After completion of the update, create a pull-request to the Master branch. Ensure the items in the below checklist are carried out before creating the pull-request.

Checklist before creating pull-request to the Master branch

Code style

  • Do not repeat coding of functions or defining data-structures. Make use of existing utility functions in:
    • orbitpy.util (python) module
    • instrupy.util (python) module
    • gmatutil C++ classes in the folder ./propcov/extern/gmatutil/
  • Use DOXYGEN style inline-commenting for C++ (propcov library), and sphinx style inline-commenting for python.

Testing

  • Add tests which validate revisions. Add both unit-tests and tests at a module level. For the propcov C++ library, add GTests in the ./propcov/tests/tests-cpp/ folder, and for OrbitPy add tests in the ./tests/ folder.
  • Make and run all the Gtests of the propcov library. Ensure they pass.
  • Run all the python tests of the OrbitPy package. Ensure they pass.

Documentation

  • If relevant, update the Word documentation about propcov in the folder ./propcov/docs/propcov-cpp.docx. While it may not be possible to compare changes of the Word document in GitHub, see here on how to compare two Word documents.
  • If relevant, update the sphinx based documentation by updating or modification of the rst files.
  • For branches which introduces a substantial new feature or modification, create a new Wiki page explaining the same (i.e. the deviation from the Master branch).

List of Wiki pages

Main tasks

These are a list of tasks (issues, new features, etc.) which are of focus in the development.

Critical issues

  • Grid C++ class: Longitude values should be in the range -pi to pi and cannot be in the range 0 to 2pi. Change this behavior. https://github.com/EarthObservationSimulator/orbitpy/issues/1
  • Make use of gmatutil data-structures instead of Angle Pair, etc, and also make use of the gmatutil functions in the DSPIPCustomSensor class and its dependencies.
  • Pointing options, grid points: Change from pre-assumed index referencing to user-supplied Identifier referencing.

OrbitPy Tasks

  • Incorporate artificial image synthesis involving the propcov classes DiscretizedSensor, Projector and the orbitpy SensorPixelProjection module. Add python-tests.
  • Search for ‘Vinay’ and ‘TODO’ over all the files. Resolve any associated issues.

Propcov-cpp Tasks

  • Explore the orbit interpolation functions.
  • Make a C++ SystemTestDriver
  • Add unconventional sensor FOV geometry shapes GTests for GMATCustomSensor and DSPIPCustomSensor class.
  • Rename TATCException to PropcovCppException
  • Add GTests for Spacecraft, CoverageChecker, NadirPointingAttitude and other classes. (There are in total 26 propcov-cpp active classes, of which currently there are GTests for 15 of these classes. Some tests in the tests/tests-cpp/old/ folder can be rewritten into the GTest format.)
  • Consider avoiding virtual functions since it has runtime costs associated with it??