Skip to content
Snippets Groups Projects
Commit a02deed4 authored by Luc Maisonobe's avatar Luc Maisonobe
Browse files

Updated after Orekit 8.0 and Hipparchus 1.0 releases.

parent f2e60eb9
No related branches found
No related tags found
No related merge requests found
Showing
with 68 additions and 67 deletions
...@@ -25,13 +25,7 @@ Building with Eclipse: ...@@ -25,13 +25,7 @@ Building with Eclipse:
the source tab of the Configure Build Path dialog the source tab of the Configure Build Path dialog
- set the external libraries to JRE system library (provided by Eclipse), - set the external libraries to JRE system library (provided by Eclipse),
Junit 4.x (provided by Eclipse) orekit (available at Orekit website Junit 4.x (provided by Eclipse) orekit (available at Orekit website
https://www.orekit.org/) and Apache Commons Math (available at https://www.orekit.org/) and Hipparchus (available at
Apache Software Foundation commons-math Hipparchus project downloads page https://www.hipparchus.org/downloads.html)
http://commons.apache.org/proper/commons-math/download_math.cgi
in the libraries tab of the Configure Build Path dialog in the libraries tab of the Configure Build Path dialog
- if you want to also build the optional geotiff module, you should
add rugged/geotiff/src/main/java, rugged/geotiff/src/main/resources,
rugged/geotiff/src/test/java, rugged/geotiff/src/test/resources in
the source tab of the Configure Build Path dialog and add the
Apache Commons Imaging library to the external libraries
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
<rugged.maven-surefire-report-plugin.version>2.18.1</rugged.maven-surefire-report-plugin.version> <rugged.maven-surefire-report-plugin.version>2.18.1</rugged.maven-surefire-report-plugin.version>
<rugged.jgit.buildnumber.version>1.2.8</rugged.jgit.buildnumber.version> <rugged.jgit.buildnumber.version>1.2.8</rugged.jgit.buildnumber.version>
<rugged.plantuml.version>7999</rugged.plantuml.version> <rugged.plantuml.version>7999</rugged.plantuml.version>
<rugged.orekit.version>8.0-SNAPSHOT</rugged.orekit.version> <rugged.orekit.version>8.0</rugged.orekit.version>
<rugged.hipparchus.version>1.0-SNAPSHOT</rugged.hipparchus.version> <rugged.hipparchus.version>1.0</rugged.hipparchus.version>
<rugged.compiler.source>1.8</rugged.compiler.source> <rugged.compiler.source>1.8</rugged.compiler.source>
<rugged.compiler.target>1.8</rugged.compiler.target> <rugged.compiler.target>1.8</rugged.compiler.target>
<rugged.maven-resources-plugin.version>2.7</rugged.maven-resources-plugin.version> <rugged.maven-resources-plugin.version>2.7</rugged.maven-resources-plugin.version>
...@@ -143,20 +143,26 @@ ...@@ -143,20 +143,26 @@
<type>jar</type> <type>jar</type>
<optional>false</optional> <optional>false</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hipparchus</groupId> <groupId>org.hipparchus</groupId>
<artifactId>hipparchus-core</artifactId> <artifactId>hipparchus-core</artifactId>
<version>${rugged.hipparchus.version}</version> <version>${rugged.hipparchus.version}</version>
<type>jar</type> <type>jar</type>
<optional>false</optional> <optional>false</optional>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hipparchus</groupId> <groupId>org.hipparchus</groupId>
<artifactId>hipparchus-geometry</artifactId> <artifactId>hipparchus-geometry</artifactId>
<version>${rugged.hipparchus.version}</version> <version>${rugged.hipparchus.version}</version>
<type>jar</type> <type>jar</type>
<optional>false</optional> <optional>false</optional>
</dependency>
<dependency>
<groupId>org.hipparchus</groupId>
<artifactId>hipparchus-stat</artifactId>
<version>${rugged.hipparchus.version}</version>
<type>jar</type>
<optional>false</optional>
</dependency> </dependency>
<dependency> <dependency>
...@@ -428,8 +434,8 @@ ...@@ -428,8 +434,8 @@
<configuration> <configuration>
<overview>${basedir}/core/src/main/java/org/orekit/rugged/overview.html</overview> <overview>${basedir}/core/src/main/java/org/orekit/rugged/overview.html</overview>
<links> <links>
<link>http://docs.oracle.com/javase/6/docs/api/</link> <link>http://docs.oracle.com/javase/8/docs/api/</link>
<link>http://commons.apache.org/math/javadocs/api-${rugged.apache-commons-math.version}</link> <link>https://hipparchus.org/site-hipparchus-${rugged.hipparchus.version}/apidocs/</link>
<link>https://www.orekit.org/site-orekit-${rugged.orekit.version}/apidocs/</link> <link>https://www.orekit.org/site-orekit-${rugged.orekit.version}/apidocs/</link>
</links> </links>
<charset>${project.reporting.outputEncoding}</charset> <charset>${project.reporting.outputEncoding}</charset>
......
...@@ -30,7 +30,6 @@ import java.util.List; ...@@ -30,7 +30,6 @@ import java.util.List;
import org.orekit.bodies.OneAxisEllipsoid; import org.orekit.bodies.OneAxisEllipsoid;
import org.orekit.errors.OrekitException; import org.orekit.errors.OrekitException;
import org.orekit.errors.PropagationException;
import org.orekit.frames.Frame; import org.orekit.frames.Frame;
import org.orekit.frames.FramesFactory; import org.orekit.frames.FramesFactory;
import org.orekit.propagation.Propagator; import org.orekit.propagation.Propagator;
...@@ -747,16 +746,12 @@ public class RuggedBuilder { ...@@ -747,16 +746,12 @@ public class RuggedBuilder {
/** {@inheritDoc} */ /** {@inheritDoc} */
@Override @Override
public void handleStep(final SpacecraftState currentState, final boolean isLast) public void handleStep(final SpacecraftState currentState, final boolean isLast)
throws PropagationException { throws OrekitException {
try { final AbsoluteDate date = currentState.getDate();
final AbsoluteDate date = currentState.getDate(); final PVCoordinates pv = currentState.getPVCoordinates(inertialFrame);
final PVCoordinates pv = currentState.getPVCoordinates(inertialFrame); final Rotation q = currentState.getAttitude().getRotation();
final Rotation q = currentState.getAttitude().getRotation(); positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO));
positionsVelocities.add(new TimeStampedPVCoordinates(date, pv.getPosition(), pv.getVelocity(), Vector3D.ZERO)); quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO));
quaternions.add(new TimeStampedAngularCoordinates(date, q, Vector3D.ZERO, Vector3D.ZERO));
} catch (OrekitException oe) {
throw new PropagationException(oe);
}
} }
}); });
...@@ -769,7 +764,7 @@ public class RuggedBuilder { ...@@ -769,7 +764,7 @@ public class RuggedBuilder {
pvFilter, quaternions, interpolationNumber, pvFilter, quaternions, interpolationNumber,
aFilter); aFilter);
} catch (PropagationException pe) { } catch (OrekitException pe) {
throw new RuggedException(pe, pe.getSpecifier(), pe.getParts()); throw new RuggedException(pe, pe.getSpecifier(), pe.getParts());
} }
} }
......
...@@ -19,8 +19,8 @@ package org.orekit.rugged.errors; ...@@ -19,8 +19,8 @@ package org.orekit.rugged.errors;
/** This class allows to wrap {@link RuggedException} instances in {@code RuntimeException}. /** This class allows to wrap {@link RuggedException} instances in {@code RuntimeException}.
* <p>Wrapping {@link RuggedException} instances is useful when a low level method throws * <p>Wrapping {@link RuggedException} instances is useful when a low level method throws
* one such exception and this method must be called from another one which does not allow * one such exception and this method must be called from another one which does not allow
* this exception. Typical examples are propagation methods that are used inside Apache * this exception. Typical examples are propagation methods that are used inside Hipparchus
* Commons optimizers, integrators or solvers.</p> * optimizers, integrators or solvers.</p>
* <p> * <p>
* This class is heavily based on Orekit {@link org.orekit.errors.OrekitException}, * This class is heavily based on Orekit {@link org.orekit.errors.OrekitException},
* which is distributed under the terms of the Apache License V2. * which is distributed under the terms of the Apache License V2.
......
...@@ -192,7 +192,7 @@ public class SensorMeanPlaneCrossing { ...@@ -192,7 +192,7 @@ public class SensorMeanPlaneCrossing {
final SingularValueDecomposition svd = new SingularValueDecomposition(matrix); final SingularValueDecomposition svd = new SingularValueDecomposition(matrix);
// extract the left singular vector corresponding to least singular value // extract the left singular vector corresponding to least singular value
// (i.e. last vector since Apache Commons Math returns the values // (i.e. last vector since Hipparchus returns the values
// in non-increasing order) // in non-increasing order)
final Vector3D singularVector = new Vector3D(svd.getU().getColumn(2)).normalize(); final Vector3D singularVector = new Vector3D(svd.getU().getColumn(2)).normalize();
...@@ -362,7 +362,7 @@ public class SensorMeanPlaneCrossing { ...@@ -362,7 +362,7 @@ public class SensorMeanPlaneCrossing {
final PVCoordinates targetPV = new PVCoordinates(target, Vector3D.ZERO); final PVCoordinates targetPV = new PVCoordinates(target, Vector3D.ZERO);
// we don't use an Apache Commons Math solver here because we are more // we don't use an Hipparchus solver here because we are more
// interested in reducing the number of evaluations than being accurate, // interested in reducing the number of evaluations than being accurate,
// as we know the solution is improved in the second stage of inverse location. // as we know the solution is improved in the second stage of inverse location.
// We expect two or three evaluations only. Each new evaluation shows up quickly in // We expect two or three evaluations only. Each new evaluation shows up quickly in
......
...@@ -87,9 +87,9 @@ The simplest way to use Rugged with Eclipse is to follow these steps: ...@@ -87,9 +87,9 @@ The simplest way to use Rugged with Eclipse is to follow these steps:
in the source tab of the Configure Build Path dialog in the source tab of the Configure Build Path dialog
* set the external libraries to JRE system library (provided by Eclipse), * set the external libraries to JRE system library (provided by Eclipse),
Junit 4.x (provided by Eclipse), Apache Commons Math (available at Junit 4.x (provided by Eclipse), Hipparchus (available at
Apache Software Foundation Commons Math Hipparchus project
[downloads page](http://commons.apache.org/proper/commons-math/download_math.cgi), [downloads page](https://www.hipparchus.org/downloads.html),
and Orekit (available at Orekit and Orekit (available at Orekit
[downloads page](https://www.orekit.org/forge/projects/orekit/files) [downloads page](https://www.orekit.org/forge/projects/orekit/files)
in the libraries tab of the Configure Build Path dialog in the libraries tab of the Configure Build Path dialog
...@@ -16,14 +16,14 @@ Global architecture ...@@ -16,14 +16,14 @@ Global architecture
------------------- -------------------
Rugged is an intermediate level mission-independent library. It relies on Rugged is an intermediate level mission-independent library. It relies on
the Orekit library and on the Apache Commons Math library. It is itself the Orekit library and on the Hipparchus library. It is itself
intended to be used from a mission-specific interface by one or more intended to be used from a mission-specific interface by one or more
image processing applications. image processing applications.
![architecture](../images/rugged-architecture.png) ![architecture](../images/rugged-architecture.png)
The Java platform provides the runtime environment, the Apache Commons The Java platform provides the runtime environment, the Hipparchus
Math library provides the mathematical algorithms (3D geometry, root library provides the mathematical algorithms (3D geometry, root
solvers ...), the Orekit library provides the space flight dynamics solvers ...), the Orekit library provides the space flight dynamics
computation (frames transforms, orbits and attitude propagation and computation (frames transforms, orbits and attitude propagation and
interpolation ...). The Rugged library itself provides the algorithms interpolation ...). The Rugged library itself provides the algorithms
...@@ -45,7 +45,7 @@ image processing application and the interface layer, and is limited to very few ...@@ -45,7 +45,7 @@ image processing application and the interface layer, and is limited to very few
level functions with few primitive types (raw arrays for pixels or ground coordinates). level functions with few primitive types (raw arrays for pixels or ground coordinates).
The Rugged library is developed in the Java language and has full access to the Orekit and The Rugged library is developed in the Java language and has full access to the Orekit and
Apache Commons Math libraries. It is designed and developed by space flight dynamics and Hipparchus libraries. It is designed and developed by space flight dynamics and
geometry specialists, with support from the image processing specialists for the API definition. geometry specialists, with support from the image processing specialists for the API definition.
Functional Breakdown Functional Breakdown
......
...@@ -16,7 +16,7 @@ Overview ...@@ -16,7 +16,7 @@ Overview
-------- --------
The top level design describes the various libraries and their interactions. The lowest level The top level design describes the various libraries and their interactions. The lowest level
corresponding to the Apache Commons Math library is not shown here for clarity. corresponding to the Hipparchus library is not shown here for clarity.
The following sequence and class diagrams show the three most important functions: initialization The following sequence and class diagrams show the three most important functions: initialization
of the libraries, direct location and inverse location. of the libraries, direct location and inverse location.
...@@ -90,7 +90,7 @@ The computation is performed in several steps. The line to which the points belo ...@@ -90,7 +90,7 @@ The computation is performed in several steps. The line to which the points belo
solver taking advantage of the first time derivatives automatically included in Orekit transforms. It can therefore set solver taking advantage of the first time derivatives automatically included in Orekit transforms. It can therefore set
up a model of the angle between the target point and the mean sensor plane, and therefore compute in only two or three up a model of the angle between the target point and the mean sensor plane, and therefore compute in only two or three
iterations the exact crossing of this plane, and hence the corresponding line number. Then, the position of this iterations the exact crossing of this plane, and hence the corresponding line number. Then, the position of this
crossing along the line is searched using a general purpose solver available in Apache Commons Math. As all coordinates crossing along the line is searched using a general purpose solver available in Hipparchus. As all coordinates
are already known in spacecraft frame at this stage, no conversions are performed and this solver find the corresponding are already known in spacecraft frame at this stage, no conversions are performed and this solver find the corresponding
pixel very fast. The last two steps correspond to fixing accurately the previous results, which can be important when pixel very fast. The last two steps correspond to fixing accurately the previous results, which can be important when
the various pixels in the line sensor do not really form an exact line and therefore when the previous computation which the various pixels in the line sensor do not really form an exact line and therefore when the previous computation which
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
Earth frames Earth frames
------------ ------------
As Rugged is built on top of Orekit and Apache Commons Math, all the flight dynamics and As Rugged is built on top of Orekit and Hipparchus, all the flight dynamics and
mathematical computation are delegated to these two libraries and the full accuracy available mathematical computation are delegated to these two libraries and the full accuracy available
is used. This implies for example that when computing frames conversions between the inertial is used. This implies for example that when computing frames conversions between the inertial
frame and the Earth frame, the complete set of IERS Earth Orientation Parameters (EOP) frame and the Earth frame, the complete set of IERS Earth Orientation Parameters (EOP)
...@@ -194,9 +194,9 @@ Both light-time correction and aberration of light correction are applied in the ...@@ -194,9 +194,9 @@ Both light-time correction and aberration of light correction are applied in the
ignored (independently) at user choice. One use case for ignoring these important correction is for validation purposes and comparison ignored (independently) at user choice. One use case for ignoring these important correction is for validation purposes and comparison
with other libraries that do not take this correction into account. This use case is by definition restricted to validation phases and with other libraries that do not take this correction into account. This use case is by definition restricted to validation phases and
should not apply to operational systems. Another use case for ignoring light-time correction and aberration of light correction occurs should not apply to operational systems. Another use case for ignoring light-time correction and aberration of light correction occurs
when the effect is explicitely expected to be compensated at a later stage in the image processing chain, most probably using a when the effect is explicitly expected to be compensated at a later stage in the image processing chain, most probably using a
posteriori polynomial models. This use case can occur in operational products. It seems however better to compensate these effects early posteriori polynomial models. This use case can occur in operational products. It seems however better to compensate these effects early
as they can be computed to full accuracy with a neglectible computation overhead. as they can be computed to full accuracy with a negligible computation overhead.
Arrival on ellipsoid Arrival on ellipsoid
-------------------- --------------------
......
...@@ -66,20 +66,22 @@ your program: ...@@ -66,20 +66,22 @@ your program:
This file contents is: This file contents is:
* leap seconds data up to early 2016, * leap seconds data up to end of 2016,
* IERS Earth orientation parameters from 1973 to mid 2014 * IERS Earth orientation parameters from 1973 to mid 2016
with predicted date to end 2014 for some parameters (both IAU-1980 and IAU-2000), with predicted date to fall 2016 for some parameters (both IAU-1980 and IAU-2000),
* Marshall Solar Activity Futur Estimation from 1999 to 2014, * Marshall Solar Activity Futur Estimation from 1999 to mid 2016,
* DE 430 planetary ephemerides from 1990 to 2069, * DE 430 planetary ephemerides from 1990 to 2069,
* Eigen 06S gravity field. * Eigen 06S gravity field,
* FES 2004 ocean tides model.
There are no guarantees that this file will be available indefinitely or that its There are no guarantees that this file will be available indefinitely or that its
content will be updated. It should be considered as a simple configuration example. content will be updated. It should be considered as a simple configuration example.
Users are encouraged to set up their own configuration data. Users are encouraged to set up their own configuration data.
The file is available by following this link: [orekit-data.zip](https://www.orekit.org/forge/attachments/download/584/orekit-data.zip). The file is available by following this link: [orekit-data.zip](https://www.orekit.org/forge/attachments/download/610/orekit-data.zip).
...@@ -44,15 +44,11 @@ Installation ...@@ -44,15 +44,11 @@ Installation
### What are the dependencies for Rugged? ### What are the dependencies for Rugged?
Rugged core relies on the Orekit space flight dynamics library and on Rugged relies on the Orekit space flight dynamics library and on
Apache Commons Math mathematical libraries. Both libraries are free Hipparchus mathematical libraries. Both libraries are free
software libraries distributed under the terms of the Apache Software software libraries distributed under the terms of the Apache Software
License version 2.0. License version 2.0.
Rugged aster relies on Rugged core and on Apache Commons imaging libraries.
Both libraries are free software libraries distributed under the terms of
the Apache Software License version 2.0.
Runtime errors Runtime errors
-------------- --------------
......
...@@ -64,7 +64,7 @@ Features ...@@ -64,7 +64,7 @@ Features
* aberration of light correction (about 20m) * aberration of light correction (about 20m)
* line-of-sight curvature in geodetic coordinates, * line-of-sight curvature in geodetic coordinates,
(0m at nadir, 10m at 30° dive angle, hundreds of meters for skimming los) (0m at nadir, 10m at 30° dive angle, hundreds of meters for skimming los)
* refraction not available in early 2014, but expected to be added soon * refraction not available in early 2016, but expected to be added soon
* not limited to Earth * not limited to Earth
......
...@@ -41,9 +41,9 @@ pointing towards the Earth and Y is such that X,Y,Z forms a right-handed coordin ...@@ -41,9 +41,9 @@ pointing towards the Earth and Y is such that X,Y,Z forms a right-handed coordin
For this we need the following packages For this we need the following packages
import org.hipparchus.geometry.euclidean.threed.Rotation; import org.hipparchus.geometry.euclidean.threed.Rotation;
import org.hipparchus.geometry.euclidean.threed.Vector3D; import org.hipparchus.geometry.euclidean.threed.Vector3D;
import org.hipparchus.util.FastMath; import org.hipparchus.util.FastMath;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.orekit.rugged.los.LOSBuilder; import org.orekit.rugged.los.LOSBuilder;
......
src/site/resources/images/rugged-architecture.png

32.4 KiB | W: | H:

src/site/resources/images/rugged-architecture.png

27.9 KiB | W: | H:

src/site/resources/images/rugged-architecture.png
src/site/resources/images/rugged-architecture.png
src/site/resources/images/rugged-architecture.png
src/site/resources/images/rugged-architecture.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -20,6 +20,14 @@ ...@@ -20,6 +20,14 @@
<title>Rugged Changes</title> <title>Rugged Changes</title>
</properties> </properties>
<body> <body>
<release version="2.0" date="TBD" description="TTBD">
<action dev="luc" type="update">
Updated dependencies to Orekit 8.0 and Hipparchus 1.0.
</action>
<action dev="guylaine" type="update">
Converted Rugged to use the Hipparchus library.
</action>
</release>
<release version="1.0" date="2016-02-10" <release version="1.0" date="2016-02-10"
description="This is the first official release of Rugged. It includes direct and description="This is the first official release of Rugged. It includes direct and
inverse location for push-broom sensors."> inverse location for push-broom sensors.">
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment