Simplified perturbations models are a set of five mathematical models (SGP, SGP4, SDP4, SGP8 and SDP8) used to calculate orbital state vectors of satellites and space debris relative to the Earth-centered inertial coordinate system. This set of models is often referred to collectively as SGP4 due to the frequency of use of that model particularly with two-line element sets produced by NORAD and NASA. These models predict the effect of perturbations caused by the Earth’s shape, drag, radiation, and gravitation effects from other bodies such as the sun and moon. Simplified General Perturbations (SGP) models apply to near earth objects with an orbital period of less than 225 minutes. Simplified Deep Space Perturbations (SDP) models apply to objects with an orbital period greater than 225 minutes, which corresponds to an altitude of 5,877.5 km, assuming a circular orbit.The SGP4 model was developed by Ken Cranford in 1970. This model was obtained by simplification of the more extensive analytical theory of Lane and Cranford which uses the solution of Brouwer for its gravitational model and a power density function for its atmospheric model.References:Hoots, Felix R., and Ronald L. Roehrich. 1980. Models for Propagation of NORAD Element Sets. Spacetrack Report #3. U.S. Air Force: Aerospace Defense Command.Vallado D. A; Fundamentals of Astrodynamics and Applications; McGraw-Hill, New York; 4th edition (2013).https://celestrak.org/SpaceData/EOP-All.txt https://celestrak.org/software/vallado/matlab.zip
SGP is the first orbit propagator. It has been developed by Hilton and Kuhlman in 1966 thanks to one of Kozai's research work made in 1959. It is made for satellites orbiting near the Earth which includes satellites with an orbital period lower than 225 minutes. This model assumes that the eccentricity is low and that the perigee's altitude is constant.SGP4 has been developed by Ken Cranford in 1970. It is an improvement of the previous propagator in order to track the growing number of satellites in orbit at this time. It is also used for near Earth satellites.SDP4, developed by Hujsak in 1979, is the SGP4 propagator adapted for deep space objects. This includes satellites with an orbital period greater than 225 minutes. For period above this value, the satellite's orbit is disturbed by the moon and the sun, but also, by some resonance effects for orbital periods of 12 and 24 hours.SGP8, also used for near Earth satellites, is almost like the SGP4 propagator but the calculation methods are different. However it follows the same models for the atmospheric and gravitational effects.SDP8 is the SGP8 propagator adapted to deep-space effects. Moreover, SGP8 and SDP8 are better to manage the orbital decay.References:Hoots, Felix R., and Ronald L. Roehrich. 1980. Models for Propagation of NORAD Element Sets. Spacetrack Report #3. U.S. Air Force: Aerospace Defense Command.Vallado D. A; Fundamentals of Astrodynamics and Applications; McGraw-Hill, New York; 4th edition (2013).http://celestrak.com/SpaceData/
A modified version of the SGP4 code used for standard satellite orbit computation using two-line elements (TLE). The modified code outputs satellite positions and velocity in ECF coordinates and universal time from EPOCH. Utilities are provided to calculate point-to-point angle, range rates, TCS positions, constant altitude intercepts and velocities. Outputs are collected in a structure and retained in a *.mat file for subsequent display and Beacon satellite data analysis applications. Documentation and examples are provided. Code uses GPS_CoordinateXform and IGRF utilities available from MATLAB Central.
References:Hoots, Felix R., and Ronald L. Roehrich. 1980. Models for Propagation of NORAD Element Sets. Spacetrack Report #3. U.S. Air Force: Aerospace Defense Command.Vallado D. A; Fundamentals of Astrodynamics and Applications; McGraw-Hill, New York; 4th edition (2013).https://celestrak.org/SpaceData/EOP-All.txt https://celestrak.org/software/vallado/matlab.zip
Support for the SGP30 eCO2 and TVOC sensorCreate an arduino object with I2C. serialDevices = serialportlist; a = arduino(serialDevices(end),'Nano3','Libraries',{'I2C'});Connecting to the SGP30sgp30obj = sgp30(a);Read the sensor valuesSGPeCO2Data = sgp30.readEquivalentCarbondioxide;SGPTVOCData = sgp30.readTotalVolatileOrganicCompounds
Two Line Elements(TLE) gives you the list of orbital elements of satellites for a given point in time called epoch. As a example TLE epoch time is like 17139.35505097, first two digits for the year 17 mean 2017 139 mean the day of the year .35505097 is the fractional day from midnight
---------------------Geostationary Satellites Tracking--------------------Geostationary Satellites Tracking is a Matlab based application to predict the orbit and track the geostationary satellites in real time. This application predicts the orbital position of geostationary satellites from Public Two-Line Element Orbital Information (TLE). The TLE are created by United States Air Force / Department of Defense (DoD), that tracks all detectable objects in Earth orbit, creating a corresponding TLE for each object, and makes available the TLEs for non-classified objects on the internet.The satellites orbit are predicted/propagated using Simplified perturbations models codes (SGP4) from “Revisiting Spacetrack Report #3” and The results of the orbit prediction are displayed in different types of 2D and 3D plots. The TLE data are updated constantly from http://celestrak.com.Application/Project Screenshot: https://huangproject.wordpress.com/ Author: (Tony) Chao Huang-----the SGP4 propagator used in this project is from celestrack.com (Excellent Website):by: Dr. T.S. Kelsohttp://celestrak.com/publications/AIAA/2006-6753/http://celestrak.com/publications/AIAA/2006-6753/faq.asp-----------Revisiting Spacetrack Report #3-------------"Revisiting Spacetrack Report #3," presented at the AIAA/AAS Astrodynamics Specialist Conference, Keystone, CO, 2006 August 21–24.AIAA 2006-6753Authors:Vallado, David A., Paul Crawford, Richard Hujsak, and T.S. Kelso Matlab SGP4 - and coordinate transformation code:http://celestrak.com/publications/AIAA/2006-6753/AIAA-2006-6753.ziphttp://www.celestrak.com/software/vallado/matlab.zipauthor : david vallado 719-573-2600 27 may 2002 Jeff Beck -----The daylight terminator plot (plotdaynightterminator.m) used is this project is from:Mattia Rossi http://caia.swin.edu.au/sting/tools/----------All these codes are inside “Private Folder”-----------------3d earth plot is from:http://www.mathworks.com/matlabcentral/fileexchange/13823-3d-earth-example ///////////////////Version 1.11 - 04/2016 3D Inertial View ///////////////////////3D Satellite-Earth Center Lines display (V1.11)3D Inertial View has been implemented (V1.1) ///////////////////Version 1 - 01/2016 Only 2D View Tab///////////////////////( The others Tabs and Functions will be implement in the future version)Development Date: From December - 2015 to January - 2016this version has been submit to Matlab course final project (BeiHang University)Version of Matlab: Matlab 2012b (Also tested in Matlab 2012a) Maybe some GUI function will not work in other version of Matlab -----Description of Version 1 (Geostationary Satellites Tracking) -------All the GUI object has “Normalized” Units (better display for any screen resolution)Customized GUI: Menu Satellite List Menu Configuration Menu Real Time Clock (using Timer)predicted Actual satellite position (blink red circle)Automatic Update TLE file from Celestrack.com (Matlab parallel task)Extract Satellite List form www.celestrack.com (Geostationary Satellites TLE file)Log Record and DisplayDisplay Last attempt to get TLE file (UTC Time)Display remaining time to get New TLE file [min]Load and Save Selected Satellite ListLoad and Save ConfigurationZoom, Rotate and Pan tools Plot Functions Multi-Satellites Simultaneous plot Latitude vs Longitude plot (with satellite real time position plot) Longitude Evolution plot (Longitude vs Time) (with satellite real time position plot) Eccentricity Vector Polar Plot 2D World Map Plot: Satellite Name Indicator Longitude vs Latitude day light terminator World Map Image View/Hide Map Image View/Hide Coast Line View/Hide Day Night Terminator View/Hide Equal Scale Plot ”Refresh Sat List” Button: Shows all the satellites from TLE file”Search” Button: Search the satellite from the TLE list”Insert” Button: insert satellite to Selected Satellite List”Delete” Button: delete satellite from Selected Satellite List”Save List” Button: Save selected satellites List”Load List” Button: Load selected satellites List”Plot” Button: Propagate the selected satellites (SGP4) according to configured option and plot it on the screen.”Insert All” Button: Insert all the satellites from the satellite list ”Delete All” Button: Delete all the satellites from the selected satellites list
MATLAB script that can be used to calculate an approximate Two Line Element (TLE) set from a user-provided osculating state vector or classical orbital elements. It is valid for spacecraft that can be modeled using the NORAD SGP4 algorithm. Includes PDF users guide.
CubeSat Thermal Power ToolboxThis MATLAB App is intended to provide a quick and easy way to perform preliminary thermal and power analysis for CubeSat missions. This is particularly usefull during the first phases of the project life-cycle.https://www.youtube.com/watch?v=L0wHe530bRc&t=195sInstalationTo install, simply run the 'CubeSat Thermal Power Toolbox.mlappinstall' file. After instalation, the app will be available on the Apps tab inside MATLAB.How to use itStep 1) Generate the OrbitPropagate the orbit and enter the central body thermal parameters for Solar FLux, Albedo and IR.The tool currently provides options for Earth or Moon orbits.Earth orbitsPropagator options: two-body-keplerian and SGP4.Moon orbitsPropagator options: Kepler and Numerical (high precision).The Numerical propagator uses the spherical harmonics (LP-100K) as gravity model.Moon IR modelFor the Moon IR model, the user can select the "Gradient" option. In this case, the surface temperature, see Figure below, is modeled by the analytical expression provided in the Human Landing System Lunar Thermal Analysis Guidebook, Section 4.3, Pag 17. The IR flux is later computed by integrating the Moon's sphere discretized with 1 degree step. Step 2) Model your CubeSatCubeSat size options: 1U, 3U, 6U, 8U, 12UFor each face, select the cover material. Each built-in material offers different thermal-optical properties. The user can also enter a custom material with different values for absorptivity, emissivity and specific heat. If face is body-fixed solar panel, the user must enter the cell efficiency and packing factor.DeployableThe user can also define the deployable solar panels, either Fixed or Sun-Tracking. The deployable panels are only used to computed the generated power and they are not considered in the thermal analysis.Lumped Parameter ModelThe current version runs the thermal analysis of the CubeSat with a 7-Nodes Lumped Parameter Model using Simscape. The schematic is presented in the Figure below. The user shall input the best estimate for each thermal resistance linking the internal node (Node 1) to each face node.The thermal mass of each node is specified by the mass distribution and specific heat inputs.This thermal model does NOT considered:Heat transfer between faces;Internal heat transfer by radiation;Heat transfer with external surfaces (deployables)Step 3) Compute PowerThe user enters the internal node dissipation power by either defining it as a constant value or by defining two power dissipation levels depending on whether the satellite is illuminated by the Sun or in an eclipse.The tool offers total power generation and battery charge depletion throughout the orbit.When the satellite is charging the battery, the satellite faces with body-fixed solar panels have their absoportion coefficients reduced to account for the power conversion.Step 4) Run Thermal AnalysisThe tool offers the total accumulated radiation input coming from the Sun, central body IR, and Albedo reflection.Finally, the internal node temperature and the faces nodes temperatures are plotted.
SO4GP stands for: "Some Optimizations for Gradual Patterns". SO4GP applies optimizations such as swarm intelligence, HDF5 chunks, cluster analysis and many others in order to improve the efficiency of extracting gradual patterns. It provides Python algorithm implementations for these optimization techniques. The algorithm implementations include:(Classical) GRAANK algorithm for extracting GPsAnt Colony Optimization algorithm for extracting GPsGenetic Algorithm for extracting GPsParticle Swarm Optimization algorithm for extracting GPsRandom Search algorithm for extracting GPsLocal Search algorithm for extracting GPsClustering-based algorithm for extracting GPsA GP (Gradual Pattern) is a set of gradual items (GI) and its quality is measured by its computed support value. For example given a data set with 3 columns (age, salary, cars) and 10 objects. A GP may take the form: {age+, salary-} with a support of 0.8. This implies that 8 out of 10 objects have the values of column age 'increasing' and column 'salary' decreasing.Install RequirementsBefore running so4gp, make sure you install the following Python Packages:pip3 install numpy>=1.23.2 pandas>=1.4.4 python-dateutil>=2.8.2 ypstruct>=0.0.2 scikit-learn>=1.1.2UsageIn order to run each algorithm for the purpose of extracting GPs, follow the instructions that follow.First and foremost, import the so4gp python package via:import so4gp as sgp1. GRAdual rANKing Algorithm for GPs (GRAANK)This is the classical approach (initially proposed by Anne Laurent) for mining gradual patterns. All the remaining algorithms are variants of this algorithm.mine_obj = sgp.GRAANK(data_source=f_path, min_sup=0.5, eq=False)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5eq - [optional] encode equal values as gradual default = False2. Ant Colony Optimization for GPs (ACO-GRAANK)In this approach, it is assumed that every column can be converted into gradual item (GI). If the GI is valid (i.e. its computed support is greater than the minimum support threshold) then it is either increasing or decreasing (+ or -), otherwise it is irrelevant (x). Therefore, a pheromone matrix is built using the number of columns and the possible variations (increasing, decreasing, irrelevant) or (+, -, x). The algorithm starts by randomly generating GP candidates using the pheromone matrix, each candidate is validated by confirming that its computed support is greater or equal to the minimum support threshold. The valid GPs are used to update the pheromone levels and better candidates are generated.mine_obj = sgp.AntGRAANK(data_src)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5max_iteration - [optional] maximum number of iterations default = 1evaporation_factor - [optional] evaporation factor default = 0.53. Genetic Algorithm for GPs (GA-GRAANK)In this approach, it is assumed that every GP candidate may be represented as a binary gene (or individual) that has a unique position and cost. The cost is derived from the computed support of that candidate, the higher the support value the lower the cost. The aim of the algorithm is search through a population of individuals (or candidates) and find those with the lowest cost as efficiently as possible.mine_obj = sgp.GeneticGRAANK(data_src)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5max_iteration - [optional] maximum number of algorithm iterations default = 1n_pop - [optional] initial population default = 5pc - [optional] offspring population multiple default = 0.5gamma - [optional] crossover rate default = 1mu - [optional] mutation rate default = 0.9sigma - [optional] mutation rate default = 0.94. Particle Swarm Optimization for GPs (PSO-GRAANK)In this approach, it is assumed that every GP candidate may be represented as a particle that has a unique position and fitness. The fitness is derived from the computed support of that candidate, the higher the support value the higher the fitness. The aim of the algorithm is search through a population of particles (or candidates) and find those with the highest fitness as efficiently as possible.mine_obj = sgp.ParticleGRAANK(data_src)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5max_iteration - [optional] maximum number of algorithm iterations default = 1n_particles - [optional] initial particle population default = 5velocity - [optional] particle velocity default = 0.9coeff_p - [optional] personal coefficient rate default = 0.01coeff_g - [optional] global coefficient default = 0.95. Local Search for GPs (LS-GRAANK)In this approach, it is assumed that every GP candidate may be represented as a position that has a cost value associated with it. The cost is derived from the computed support of that candidate, the higher the support value the lower the cost. The aim of the algorithm is search through group of positions and find those with the lowest cost as efficiently as possible.mine_obj = sgp.HillClimbingGRAANK(data_src, min_sup)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5max_iteration - [optional] maximum number of algorithm iterations default = 1step_size - [optional] step size default = 0.56. Random Search for GPs (RS-GRAANK)In this approach, it is assumed that every GP candidate may be represented as a position that has a cost value associated with it. The cost is derived from the computed support of that candidate, the higher the support value the lower the cost. The aim of the algorithm is search through group of positions and find those with the lowest cost as efficiently as possible.import so4gp as sgpmine_obj = sgp.RandomGRAANK(data_src, min_sup)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5max_iteration - [optional] maximum number of algorithm iterations default = 17. Clustering algorithm for GPs (Clu-BFS)We borrow the net-win concept used in the work 'Clustering Using Pairwise Comparisons' proposed by R. Srikant to the problem of extracting gradual patterns (GPs). In order to mine for GPs, each feature yields 2 gradual items which we use to construct a bitmap matrix comparing each row to each other (i.e., (r1,r2), (r1,r3), (r1,r4), (r2,r3), (r2,r4), (r3,r4)).In this approach, we convert the bitmap matrices into 'net-win vectors'. Finally, we apply spectral clustering to determine which gradual items belong to the same group based on the similarity of net-win vectors. Gradual items in the same cluster should have almost similar score vector.import so4gp as sgpmine_obj = sgp.ClusterGP(data_source=data_src, min_sup=0.5, e_prob=0.1)gp_json = mine_obj.discover()print(gp_json)where you specify the parameters as follows:data_src - [required] data source {either a file in csv format or a Pandas DataFrame}min_sup - [optional] minimum support default = 0.5e_probability - [optional] erasure probability default = 0.5max_iteration - [optional] maximum iterations for estimating score vectors default = 10Sample OutputThe default output is the format of JSON:{"Algorithm": "RS-GRAANK","Best Patterns": [ [["Age+", "Salary+"], 0.6], [["Expenses-", "Age+", "Salary+"], 0.6]],"Iterations": 20}ReferencesOwuor, D., Runkler T., Laurent A., Menya E., Orero J (2021), Ant Colony Optimization for Mining Gradual Patterns. International Journal of Machine Learning and Cybernetics. https://doi.org/10.1007/s13042-021-01390-wDickson Owuor, Anne Laurent, and Joseph Orero (2019). Mining Fuzzy-temporal Gradual Patterns. In the proceedings of the 2019 IEEE International Conference on Fuzzy Systems (FuzzIEEE). IEEE. https://doi.org/10.1109/FUZZ-IEEE.2019.8858883.Laurent A., Lesot MJ., Rifqi M. (2009) GRAANK: Exploiting Rank Correlations for Extracting Gradual Itemsets. In: Andreasen T., Yager R.R., Bulskov H., Christiansen H., Larsen H.L. (eds) Flexible Query Answering Systems. FQAS 2009. Lecture Notes in Computer Science, vol 5822. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04957-6_33
S^2 Particle TrackingThe functions contained in this package perform particle tracking and ray-triangle intersection querieson triangular surface meshes of a unit sphere (S^2), and can be readily incorporated into applicationsthat need to perform fast, simultaneously tracking of thousands of particles. Some examples ofapplications where I have used these functions are:Reparameterization of closed genus 0 surface meshes for nonrigid surface registrationInterpolation of S^2 vector and scalar fieldsNumerical integrationDescription of Main FunctionsThe two main functions:a. `SphericalTriangleIntersection_UsignStereoProj`b. `SphericalTriangleIntersection`are built around Möller & Trumbore ray-triangle intersection algorithm [1], with additionalmodifications which produce substantial speed-up when thousands or even millions of repeatedqueries are performed relative to a fixed spherical mesh. Significant effort went into optimizingperformance by:removing computational overhead by precomputing "static" variables that would otherwise have to berecomputed during every call to the main functions, andusing space partitioning methods to reduce the number of ray-triangle intersection testsI experimented with two different approaches for partitioning the sphere using (a) overlapping charts and (b)spherical grids, each corresponding to a different function (see above). The first of these usesnearest-neighbor search and exploits the built-in pointLocation function to assign particles/raysto mesh triangles stereographically mapped onto a plane (see SphericalTriangleIntersection_UsignStereoProj.m),while the second attempts to improve performance by reducing the number of ray-triangle intersectiontests using binning (see SphericalTriangleIntersection.m). Both functions employ auto-generated datastructures which they re-use during recurrent positional queries.Benchmark tests (see s2_ray_triangle_intersection_benchmark_test.m) revealed thatSphericalTriangleIntersection_UsignStereoProj.m is the fastest (up to 60 times) of the two functionsand that the gap in performance increases with increasing number of simultaneous positional queries andcomplexity of the mesh. Here are the performance curves of the two functions (based on i7-4940MX CPU, 32 GB RAM, R2020a Matlab):DependenciesThe main functions require S2 Sampling Toolbox to work. Before using them make sure to download theS2 Sampling Toolbox and add it to your Matlab path.ExampleGiven a triangular surface mesh representation of a unit sphere and a set of points on a unit sphere (or equivalently, a set ofrays emanating from the origin), the functions (a) and (b) return list of triangles containing the queried pointsalong with the corresponding planar and spherical barycentric coordinates [2]. This information, for example, can be used toevaluate piecewise linear functions defined at the mesh vertices. The function s2_particle_tracking_demoillustrates the use of (a) and (b) for integrating trajectories of particles immersed in randomly generated velocity fields.References[1] Möller, T., Trumbore, B. (1997) 'Fast, minimum storage ray-triangle intersection', Journal of Graphics Tools, Vol. 2, pp. 21-28.[2] Langer, T., Belyaev, A., Seidel, H-P. (2006) 'Spherical barycentric coordinates', In Proceedings of the 4th Eurographics Symposium on Geometry Processing (SGP 2006), pp.81–88.LicenseMIT © 2021 Anton Semechko (a.semechko@gmail.com)