Sunday, December 21, 2014

Asteroid Dynamics

Finals are done and I am on winter break, so I finally have time to work on my thesis model.

Before getting into this, here are a few definitions:
    -Solar Radiation Pressure: Momentum transfer from photons which provide a force onto any body.
    -Yarkovsky Effect: This effect takes place due to the radiation pressure that a rotating body emits. Due to it's rotation, the force applied to the body can, over large periods of time, alter the orbital parameters of the asteroid.
    -YORP Effect: Second order Yarkovsky effect where, if the force is off axis, it provides a torque to the body and affects the rotational state of the asteroid.

Over the last few days, I have been putting a YORP model together, which I will then put into a Yarkovsky / bulk model, which I have yet to create (I had to make one first, I decided I would make the YORP). On top of that, I also need to add a Cometary function into the YORP model, which will be done after the bulk model. This model will include off-gassing. The total model will be broken up into bulk and body parameters. The bulk parameters being orbital based (radius and velocity) while the body parameters being rotation based (angle and angular velocity).

The way I currently see it going, the YORP model will be nested inside the Yarkovsky. I hope to find a way to simplify the model in an individual time dependent equation for force and torque (change in body and bulk parameters), but I don't think this will be possible for a more accurate asteroid model (not an ellipsoid). On that note, right now I use an ellipsoid for ease of computation. The lower the number of faces, the quicker it works. Once I have the model validated for the simplified model, I will run it on a more complex shape model.



Above is current output. Going counter-clockwise from the top left, the individual subplots are as follows:

-Picture of the asteroid and the rotation axis (red)
-Average temperature
-Temperature of every face
-Unit quaternion describing the angle
-Angular velocity in x-y-z directions
-Total force on surface (x,y,z)
-Torque on body




Sunday, November 30, 2014

Asteroid Gravity Models

I did this a while back but decided only now to post it. Right now I have 3 gravity models (2 working). The problem with gravity models is that for concave structures, a tetrahedron from a face to the origin may have elements external to the body or overlap other tetrahedra. This "creates" mass/volume outside of the actual object volume which can cause huge errors for simulating an orbiting satellite.

A few ways around this are:
   1). to create two "origins" and set the origin for each face as the one where the inner product (dot product) of the CCW face normal and radius vector are positive (if both are positive take the one with the smaller radius).
   2). Define the mass to exclusively be on the surface.
   3). Do some math and define the gravity as a field affected by the body volume.

Originally, I was only using a point mass tetrahedra model. This model took the faces, connected them to the origin (creating a tetrahedron), found the volume, and put a point mass at the center of the tetrahedron proportional to the volume and density. This model does not work for very irregularly shaped objects, however it works best for the majority of asteroids.

The other working model is a shell model. It takes all of the mass at the surface of the asteroid where each unit of surface area contains the same amount of mass. While this model is better for more irregularly shaped objects, by putting all the mass at the surface it creates a gravity singularity at the surface and can mess up data if trying to analyze an orbit close to the asteroid. This model is best for analyzing the gravity field for very irregularly shaped asteroids at a reasonable distance from the surface.

The following plots are for validating these two models. I will discuss the differences in the plots and what denotes a good "fit" at the end.

It should be noted that the scale at the bottom is the number of points in the analysis direction and does not correlate to the size of the objects.


Eros
    

        
Left: Point Gravity Tetrahedra Model
Right: Surface Area Model


Churyumov-Gerasimenko (67P)

Left: Point Gravity Tetrahedra Model
Right: Surface Area Model


What to take from this:

Point Mass Tetrahedra
  • Underestimates radius since it takes the center of the tetrahedra.
    • This conserves mass while avoiding the gravity singularity at the surface
  • For very irregularly shaped objects (67P), the volume is disconfigured and does not give accurate information about the shape/gravity of the object.
Surface Area
  • Preserves shape of irregularly shaped objects (67P)
Conclusions
  • The Point Mass Tetrahedra model should be used for regular shaped objects.
  • The Surface Area model should be used for irregularly shaped objects. But may create large errors is simulating a close approach.
  • Another model needs to be created to better represent this.
    • A mixture of the two may work. I am also looking into Spherical Harmonics as well as a triangulation method I read about a while ago. But for now these will do.

Wednesday, November 26, 2014

Not SpaceSim

I will discuss 2 different programs in this post: a 2D finite element analysis program and a Robot arm. In my next post I will discuss my progress for my thesis.

I will not go too in-depth, so if there are any questions feel free to comment. 



Here is a quick picture of Dawn. I found the .stl file online and wrote a quick parser to make my program able to plot it.




2D FEA:

Without getting to deep into it, I made an FEA program for my Intro to Finite Element's class (my partner is doing the 3D analysis in Abaqus). The object being analyzed is the Philae Lander's leg. We are doing static analyses for the stress, strain, internal forces, and deformation for a resting Philae as well as when it was compacted before the first bounce. Assuming no energy dissipation (pretty bad assumption since there was lots of kinetic dissipation), the maximum internal energy is proportional to the square of the velocity after the bounce, which is estimated to be around 38 cm/s.

Here is what it looks like:
2D FEA Program

Robotics:

While we have not yet completed the project, my main contribution so far has been this robot which is able to get out of a randomly generated enclosure. It does this by always turning right, after the first left. It saves where it has been as an artificial "memory" (very basic AI), and if it "sees" the same spot over and over it randomizes it's movements until a new wall has been found.

I created the simulated robot since we were having trouble interfacting with the real robot (PhantomOmni).

Oh yeah, on that note I figured out how to take complex videos on matlab, the buffer needs to be set as "zbuffer" otherwise it does not do something that it has to do.

Anyways, here is a video. For best results try to play both videos at the same time:

Robot Arm


Robot Artificial Memory








Wednesday, October 15, 2014

Thesis

I'm back with a quick update!

I have been sidetracked from the GUI for the time being with my thesis project, which will eventually turn into the Asteroid/Comet Toolbox along with the other asteroid functions I have made.

As of now, nothing has been coded yet. However, the method is set and the math is almost all mathed out.
Comet 67P Churyumov-Gerasimenko

There will be functions for:

  • A new gravity model 
    • The point mass model does not work for convex structures such as 67P seen above)
  • Radiation pressure and emissivity
  • Model of comet off-gassing
    • Composition matrix
      • Volatilizes sublimate and have set constants/parameters
  • Change in orbital elements and rotation due to SRP and off-gassing
    • In attempt to analyze the yarkovsky effect
  • Trajectory of off-gassed elements
    • If they will impact an orbiting object
    • Ability to predict a tail
      • Would need to include ionization model
Lucky for me, ESA currently has the Rosetta spacecraft in orbit about the comet 67P Churyumov-Gerasimenko (seen above) and the oort-cloud comet, Sliding Spring, is making a close approach to Mars in the upcoming week. I plan on using data from these missions to validate my model.

Friday, August 1, 2014

Rockets

I decided to finish the rocket editing before going on to create the tool boxes. It is similar to the previous post on rockets (found here).

I have created a video (a friend pointed me in the right direction for free video capture software) to show how the rockets are created and edited. 


How it works: 
     The user names the rocket and indicates the number of stages and parallel thrusters (0 assumes no parallel stage). Then, a preset rocket program is used to give an editable initial rocket. All physical characteristics are able to be edited, including but not limited to: masses, dimensions, specific impulse, and mass flow rate. 

By clicking update, the structure containing the object is updated and then plotted again with any changes. The masses and total deltaV are also refreshed. 

Next on my list of things to tackle is the impulsive trajectory solver.

Tuesday, July 29, 2014

And the world keeps spinning

So I was trying to make a stand alone movie capture and snapshot program before I posted this. I was successful in making the snapshot, however the movie poses problems when two while loops had to run simultaneously and MatLab is single thread (I do not have the parallel toolbox). It has a fix but it would take time that I am not willing to currently put into it. Maybe one day once the tools are done or I get a strike of inspiration I will do it. Regardless, here is a quick snapshot-ed image of the Earth. If you want you are able to change the rectangle of screen capture.

Round

The reason I wanted the movie capture program was to make it so I would not have to capture the following section on my phone (I don't know of any good free screen recording software). But anyway, here it goes.

As you can see from the new play, pause, rewind buttons in the above image, it has the the ability to (of course) play, pause, and rewind any plot pictured in the axis with a time step set by the user. The planets spin with their actual angular velocity and are also able to be viewed with satellites orbiting about them as well as orbiting the sun.

Earth spinning with multiple satellites orbiting. There is a 10 minute (600 second) time step between steps.


Mercury, Venus, Earth, Mars, and the asteroid Itokowa orbiting the sun with a ~2.8 day step.


Unfortunately, the buttons work in a while loop so I cannot make a video of them without including the capture code in the same loop.


Time to start working on the tools. I think I may have to write them as "plugins" to avoid the need to edit the structure of some of the other functions.

Tuesday, July 22, 2014

SpaceSim (GUI) 1.0

So here is the framework of the GUI. If there is any feedback, I would love to hear it. Remember, I am an engineer, not a computer scientist. For now, I have not compiled it to an .exe file and MatLab must be installed to use it.

So starting from the get-go: the main file is run from anywhere, it get's its current location and makes that, and all internal folders, part of the path. From there, the GUI is opened and populated. I will explain what each part of the figure does, then show examples of the capabilities.

Initial start-up figure of SpaceSim.

Starting from the top: 
File menu: Allows the user to save, load, or exit the GUI. The save option saves the current structure of objects, as well as any populated tools, which can then be loaded for future use/analysis. 
Edit Menu: Right now this is only a placeholder, I do not have any editable program properties yet (except for the objects, but I will get to that).
Add Object: Menu to add an object to the object list. The current addable objects are planet, rocket, asteroid, and satellite. I will speak about each of these objects in further detail in a later section.
Tools: While I have not implemented any of these into the GUI (YET!), they will consist of (but are not limited to):  an orbit simulator / impulsive and finite transfer optimizer for multiple or single central bodies (including asteroids), design and launch of a rocket, a Walker Constellation tool along with analysis abilities such as access times with constraints, and a mission design tool which splices together the other tools to create a rocket to launch a satellite to a defined orbit where further analysis can be done.
Help: A user manual which I am writing as I go along.

Toolbar Menu: I have included the generic MatLab figure toolbar since it contains all the functions I need. Until a time when I can create my own toolbar or map zooming/rotating to keys I will leave it as this, since I have more important things to do.

Time: The time is taken at the start of opening the program. This time can be edited, as long as it stays in a form which MatLab can read. To view the bodies at a different time, the plots must be updated manually.

View Dropdown Menu: Lists all the current bodies as well as an option for "Orbit", which allows the user to choose from the Earth and Sun (will eventually be every planetary body object) and takes every object whose "parent" is one of those two and allows the user to check boxes and view their orbits about the main body. 

Current bodies moving about the central body, the Sun. 

A picture of the orbits of these planets at the date indicated on the top right assuming the initial orbits are from January 1, 2000 and extrapolated to their current position via. Kepler's equations (which is when the planet data is from, but this will change in the future). The planets are currently not listed, but there will be text right next to the dot saying which planet it is. Planet Awesome = Yellow, Earth = Green, Jupiter = Blue.

Axes: Displays whatever is prompted to by the view dropdown menu. These are 3D and can be controlled via the figure toolbar.

Object List: A list of objects which the user has input. All of these objects are able to be edited and deleted at will. Currently all input angles are in radians because I am lazy. It isn't that hard to convert from degrees. Deal with it.

Current object capabilities. The editor has the same options as the create panel.

     Planets: To create a planet objects, there are two options. The first is to choose a defined planet from a list which contains all 9 (including Pluto) planets, the Sun, and Earth's Moon. All of these have images included which can looked at by changing the "View" dropdown menu to be the name of that object. The object will appear in the list as soon as it is added to the object structure. Alternatively, one can create their own planet and define all of the variables themselves, including the name, parent body, orbital elements, and any other parameter. Also (this is my favorite part), the user is able to add a .jpg image to be mapped over the planet to visualize it.  

Left: Add planet pop up.
Right: as well as the custom planet options. There will be more options in the future such as atmospheric density.

Left: Jupiter, as viewed from the program.
Right: Planet Awesome, including a picture mapped over it for the user's pleasure (, a picture which my friend wouldn't allow on facebook so I decided to defy him elsewhere).

     Asteroids: Same thing as planets only there is no creating an asteroid, since it must contain defined point and connectivity list. The parameters are able to be edited though. There are currently 4 asteroids which are programmed in, however I have a database of a fuckton (including their connectivity lists and all parameters) of asteroids which I have not converted to be able to be read by the program. Here is the image of Itokowa which I included in the last post. Right now the only thing the asteroids can do is be pretty. However (and once again as showed in the last post), I need to put the code to orbit asteroids into the GUI.

Itokowa.

     Satellites: The editable parameters of a satellite are similar to that of the previous two. The SA stands for solar array and the rest is self explanatory. Satellites are also able to be viewed, however there is only one model (rectangular everything).

Satellite edit options


Possible Satellite Configurations.

Rockets: Read this post for a full rundown of the rocket capabilities. While I have updated the code (uses inertia matrices and thrust vectoring instead of assuming a constant angular acceleration emulating a thrust vector), and implemented some of it into the GUI, this will give the gist of everything I have done with it and will put in. In short, you can create, view, and launch rockets. So far I have no put the ability to edit in rockets as I have with the other objects since it requires more effort to write the GUI and I would rather work on other parts because I already know it works. Following is a picture of the Falcon 9 Heavy, with projected staging data, as seen in the program.

Falcon 9 Heavy



I think that might be it for now ... I am pretty sure I missed something but I can always cover it some other time.