Skip to content

Application of Mitsuba Physics Based Ray Tracer for Estimating Radiation Pressure on Spacecraft Models

Notifications You must be signed in to change notification settings

CharlesPlusC/SRP_tools

Repository files navigation

Spacecraft Radiation Pressure Estimation Tool

Overview

This Python tool estimates solar radiation pressure on 3D mesh objects using the Mitsuba renderer. It's designed for simulating radiation interactions with objects. The intended application of the output of this package is for space flight dynamics. In particular, it can be used to estimate the accelerations due to solar radiation pressure on spacecraft within the orbit determination or propagation process. Depending on the number of surface interaction points, number of reflections, resolution of the sensors, number of emitter directions, the tool will take between a few seconds and a few minutes to run.

Features

Physics-Based Ray Tracing

The tool uses Mitsuba's rendering engine for ray tracing, essential for accurate radiation pressure estimation. The physics-based ray-tracing engine is leveraged through the use of a custom hemispherical sensor plugin.

Mesh Processing and Material Properties

It can process any 3D mesh in .obj format, regardless of complexity or surface properties. Any BSDF available in the Mitsuba renderer can be applied to the mesh.

Radiation Pressure Calculation

Using a simple line-of-sight tests determine incoming vectors and the hemispherical sensor to measures outgoing vectors an estimate of the radiation pressure can be calculated. The number of reflections can be specified as a parameter.

Output

The tool outputs the estimated radiation pressure as a function of the radiation source direction in the form of forces in the spacecraft body frame. The forces are output in a .pkl file that can easily be converted and/or interpolated to any other format ready for use in orbit determination or propagation software (see the example notebook for an example of how to do this).

Getting Started

Instructions for use

  1. Clone the repository
  2. Install the requirements using the megeaconst_env.yml file:
conda env create -f pbrt_srp_env.yml
  1. Activate the environment:
 conda activate pbrt_srp_env
  1. Add the models that you are interested in to the external/models folder. The models should be in .obj format.

  2. Each model can be applied one BSDF, so split the models into files based on the BSDF that you want to apply to them.

  3. Add the models to the models folder, and add the names of the models to the model_names.txt file. The names should be in the same order as the models in the folder.

  4. Specify the path of the objects, and the corresponding BSDFs in the scene_parameters (in main.py) file. The BSDFs should be specified in the same order as the models.

  5. Select the number of emitter directions to sample (this will generate emitter directions in a spiral pattern around the spacecraft).

Known Issues:

  • All BSDFs based on microfacet models (e.g. Beckmann, GGX) have some energy loss- which scales with the roughness parameter. This is on the order of ~10% for roughness values of 0.05, and ~50% for roughness values of 0.5.
  • The estimate of accelerations is biased if the surface interaction points are not evenly distributed acrros the spacecraft. I am working on this...

Validation:

At present the radiation pressure model has only been validated for the GPS block 2F spacecraft bus model. The validation was performed by comparing the accelerations due to solar radiation pressure estimated by the tool to those estimated by the UCL STC high fidelity radiation force models. The accelerations were congruent to within 0.1% for all cases tested. A more in-depth validation is in progress including orbit propagation tests.

UCL vs Mitsuba Model Comparison

About

Application of Mitsuba Physics Based Ray Tracer for Estimating Radiation Pressure on Spacecraft Models

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published