Debris maneuvering, where to start?

Hello,

My task is to create a simulation of an orbital facility finding its orbital coordinate through a ‘debris belt’ around the Earth.

My input is the belt inner and outer radius and objects distribution, allocated with a certain category (by size) and probability function.

The final aim is existing ML algorithm optimization for real rockets doing the job: orbital vehicles, delivering surveillance satellites.

Example third-stage engine onboard a vehicle is capable of delivering satellites to destination orbits. The vehicle is able to perform a number of maneuvers in space, passing the space junk and satellites that are already in their orbits (https://www.skyrora.com/).

Whether it is a tutorial or experienced advice from where to start would be appreciated.

Thank you.

I just have to ask: is this problem something prompted by recent, satellite-destructive activities in our local orbit?

This is the task for bringing new satellites for the Earth monitoring and removing debris at the same time (the next step in the simulation but parallel in real for future).
Not any relation for the destruction done.
It is not triggered suddenly, it is a part of the process.

Thank you for asking.

Cool.

I’m probably not the guy you need, but thanks for the reply. I’d need to know more details, but that kind of math isn’t my forte. IF you need to make it look purty, I might be able to help, but otherwise, best of luck.

Just to ask, b/c I’m curious and in case it helps w/details. ‘object distribution’ as in a probabilistic-distribution or actual-actual positions of shtuff?

1 Like

Thanks!
Math is math (it will need translation to here), I want to make it spectacular and continue on it.
The question is how precise it is necessary to be to stay feasible.
I will check those and share results at a certain stage.

So, b/c season 6 comes out and I’m rewatching The Expanse…

Are you experienced with Unreal Engine at all? Do you need direction on what kinds of functions, methods, etc you might want to use? Do you need assistance with the math itself?

The latter, I’ve used the editor quite a bit so I have experience there, otherwise w/regards to orbital math and the like, not my thing, sorry.

If you need any spitballing about how to go about the unreal-isms, let me know.

I am a beginner in Unreal Engine, and I need a right direction .
Math I am doing in mathworks, and I think I will work out how to implement it here.
I need correct visualization.
Thanks.

OK.

I’m a Blueprints (BPs) type of person. I can do C, C++, etc; I just don’t like to. The visual nature of BPs appeals to me.

That being said, I imagine that you:

  • have a list of objects by size and other characteristics
    – those characteristics also include the xyz vector in space and the vector of motion?

Unreal is primarily a visualization-engine, not really for ‘hard computing’ so I am going to take the track of assuming this is all for a game/visualization, etc. Where the math has to work, but it’s under the umbrella that this (strongly) needs to be shown to someone(s). Not that it cannot do a lot of stuff in a performant way, but it was strictly just orbital mechanics, I’d think there is likely a better app/environment for that.

Regardless, to that end you are likely going to want to make an object that has some data stuff (enumerations, maths, structures around it’s position, etc) that could be coupled with a mesh to be popped into the visual. Same for your spaceship, etc.

The concept you want here is objectification, that all the orbital-bits are essentially the same when described mathematically, they all have mass, position, vector of motion, etc. Make ONE object that can roughly describe that orbital-bit and then populate them based on their positions, animation along vector of motion. Within that, your special object, your spacecraft, would be a child of the orbital-bit; have all the same parts but something extra (the controls for finding a path, etc).

Functionally, for the visual, since you don’t want to make it crawl, you want to leverage something called an instanced static mesh. You can pick a mesh and instead of making a bunch of copies, you can send that 1 mesh and a list of transforms (it’s a triplet of the scaling, position, and rotation of the object, 3 3-vectors). This is the performant way of doing it vs sending X-meshes you send 1 mesh and a list of x-transforms.

ref: UE4 Optimization: Instancing - YouTube

Math-wise, insofar as how you calculate safe-distance, how long to burn, etc, you can always do it the way you really need to. If, for example, you really have a need to iterate through ALL orbital bits as compared to the spacecraft, then you will just have to do that. Can be done in BPs or C++ if you want. Functionally within Unreal, like all dev-environments, there’s more than one way to skin any particular cat. From a simple iterate-the-array/list to a more gamified, run a sphere-trace for objects within a certain distance and use logic based on that. Something in between, I really don’t know what you might need here in particular, but I can say there’s going to be a path you can build.

There’s a lot more to this, but that might be a start?

Lastly, mechanically, inside Unreal, the video above is as good a place to start as any to get a sense of what the environment is about. Right-click is your friend. Right-click inside the content-browser to make new stuff; things like structures & enumerations are listed under the Blueprint flyout. Inside a blueprint, as you can see in the vid, it gives you all the context stuff you need; I learned as I went this way as UE4 is a pretty dev-friendly thing. Control-z/x/c all work in most places and you can even copy/paste functions from one BP to another (click to select, control-x/c, and control-v in the target BP); very objectified. I can’t tell you how many times I went “I wonder if does that…oop, there is, yup, thanks again Epic…”. :smiley:

If you are getting involved with the C-side of things, you are on your own there, I’d suggest the official docs to get set up, etc.

Just to ask, do you have any coding experience in general and are just new to Unreal, or new-new to programming in general?

1 Like

I am new to Unreal. Coding is pretty much done to be ready for a good visualization (I’ve done it with Python and Matlab). For visualization in goes not bright and not so saturated, more like for an article screenshots.

You described the situation very correct with Unreal-wise experience and vision and tips, thank yo very much!

Step by step I am going with one object.
Your instruction is clear and sensible.
Totally there are 40 000 objects, but I don’t need them all.
Then I will increase at list by ten and check the performance.

It is really more for visual, but at the same time I wouldn’t like to stop simulation and tell that ‘in real data it is not like that’.

I will check performance against minimum data that I can feed as input.
Thanks a lot.