Skip to content

Commit

Permalink
[wpimath] Disambiguate wpimath JNI functions
Browse files Browse the repository at this point in the history
Now, each collection of JNI functions has its own class.
  • Loading branch information
calcmogul committed Jun 5, 2024
1 parent 8def7b2 commit 1920365
Show file tree
Hide file tree
Showing 32 changed files with 1,038 additions and 543 deletions.
16 changes: 8 additions & 8 deletions wpimath/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,14 @@ protobuf_generate_cpp(

file(
GLOB wpimath_jni_src
src/main/native/cpp/jni/WPIMathJNI_ArmFeedforward.cpp
src/main/native/cpp/jni/WPIMathJNI_DARE.cpp
src/main/native/cpp/jni/WPIMathJNI_Eigen.cpp
src/main/native/cpp/jni/WPIMathJNI_Ellipse2d.cpp
src/main/native/cpp/jni/WPIMathJNI_Exceptions.cpp
src/main/native/cpp/jni/WPIMathJNI_Pose3d.cpp
src/main/native/cpp/jni/WPIMathJNI_StateSpaceUtil.cpp
src/main/native/cpp/jni/WPIMathJNI_Trajectory.cpp
src/main/native/cpp/jni/ArmFeedforwardJNI.cpp
src/main/native/cpp/jni/DAREJNI.cpp
src/main/native/cpp/jni/EigenJNI.cpp
src/main/native/cpp/jni/Ellipse2dJNI.cpp
src/main/native/cpp/jni/Exceptions.cpp
src/main/native/cpp/jni/Pose3dJNI.cpp
src/main/native/cpp/jni/StateSpaceUtilJNI.cpp
src/main/native/cpp/jni/TrajectoryUtilJNI.cpp
)

# Java bindings
Expand Down
9 changes: 5 additions & 4 deletions wpimath/src/main/java/edu/wpi/first/math/DARE.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package edu.wpi.first.math;

import edu.wpi.first.math.jni.DAREJNI;
import org.ejml.simple.SimpleMatrix;

/** DARE solver utility functions. */
Expand Down Expand Up @@ -43,7 +44,7 @@ public static <States extends Num, Inputs extends Num> Matrix<States, States> da
Matrix<States, States> Q,
Matrix<Inputs, Inputs> R) {
var S = new Matrix<States, States>(new SimpleMatrix(A.getNumRows(), A.getNumCols()));
WPIMathJNI.dareDetailABQR(
DAREJNI.dareDetailABQR(
A.getStorage().getDDRM().getData(),
B.getStorage().getDDRM().getData(),
Q.getStorage().getDDRM().getData(),
Expand Down Expand Up @@ -121,7 +122,7 @@ public static <States extends Num, Inputs extends Num> Matrix<States, States> da
Matrix<Inputs, Inputs> R,
Matrix<States, Inputs> N) {
var S = new Matrix<States, States>(new SimpleMatrix(A.getNumRows(), A.getNumCols()));
WPIMathJNI.dareDetailABQRN(
DAREJNI.dareDetailABQRN(
A.getStorage().getDDRM().getData(),
B.getStorage().getDDRM().getData(),
Q.getStorage().getDDRM().getData(),
Expand Down Expand Up @@ -156,7 +157,7 @@ public static <States extends Num, Inputs extends Num> Matrix<States, States> da
Matrix<States, States> Q,
Matrix<Inputs, Inputs> R) {
var S = new Matrix<States, States>(new SimpleMatrix(A.getNumRows(), A.getNumCols()));
WPIMathJNI.dareABQR(
DAREJNI.dareABQR(
A.getStorage().getDDRM().getData(),
B.getStorage().getDDRM().getData(),
Q.getStorage().getDDRM().getData(),
Expand Down Expand Up @@ -226,7 +227,7 @@ public static <States extends Num, Inputs extends Num> Matrix<States, States> da
Matrix<Inputs, Inputs> R,
Matrix<States, Inputs> N) {
var S = new Matrix<States, States>(new SimpleMatrix(A.getNumRows(), A.getNumCols()));
WPIMathJNI.dareABQRN(
DAREJNI.dareABQRN(
A.getStorage().getDDRM().getData(),
B.getStorage().getDDRM().getData(),
Q.getStorage().getDDRM().getData(),
Expand Down
9 changes: 5 additions & 4 deletions wpimath/src/main/java/edu/wpi/first/math/Matrix.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

package edu.wpi.first.math;

import edu.wpi.first.math.jni.EigenJNI;
import edu.wpi.first.math.numbers.N1;
import java.util.Objects;
import org.ejml.MatrixDimensionException;
Expand Down Expand Up @@ -360,7 +361,7 @@ public final <C2 extends Num> Matrix<C, C2> solve(Matrix<R, C2> b) {
public final <R2 extends Num, C2 extends Num> Matrix<C, C2> solveFullPivHouseholderQr(
Matrix<R2, C2> other) {
Matrix<C, C2> solution = new Matrix<>(new SimpleMatrix(this.getNumCols(), other.getNumCols()));
WPIMathJNI.solveFullPivHouseholderQr(
EigenJNI.solveFullPivHouseholderQr(
this.getData(),
this.getNumRows(),
this.getNumCols(),
Expand All @@ -387,7 +388,7 @@ public final Matrix<R, C> exp() {
+ this.getNumCols());
}
Matrix<R, C> toReturn = new Matrix<>(new SimpleMatrix(this.getNumRows(), this.getNumCols()));
WPIMathJNI.exp(
EigenJNI.exp(
this.m_storage.getDDRM().getData(),
this.getNumRows(),
toReturn.m_storage.getDDRM().getData());
Expand All @@ -411,7 +412,7 @@ public final Matrix<R, C> pow(double exponent) {
+ this.getNumCols());
}
Matrix<R, C> toReturn = new Matrix<>(new SimpleMatrix(this.getNumRows(), this.getNumCols()));
WPIMathJNI.pow(
EigenJNI.pow(
this.m_storage.getDDRM().getData(),
this.getNumRows(),
exponent,
Expand Down Expand Up @@ -709,7 +710,7 @@ public boolean isEqual(Matrix<?, ?> other, double tolerance) {
* @param lowerTriangular Whether this matrix is lower triangular.
*/
public void rankUpdate(Matrix<R, N1> v, double sigma, boolean lowerTriangular) {
WPIMathJNI.rankUpdate(this.getData(), this.getNumRows(), v.getData(), sigma, lowerTriangular);
EigenJNI.rankUpdate(this.getData(), this.getNumRows(), v.getData(), sigma, lowerTriangular);
}

@Override
Expand Down
6 changes: 4 additions & 2 deletions wpimath/src/main/java/edu/wpi/first/math/StateSpaceUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package edu.wpi.first.math;

import edu.wpi.first.math.geometry.Pose2d;
import edu.wpi.first.math.jni.StateSpaceUtilJNI;
import edu.wpi.first.math.numbers.N1;
import edu.wpi.first.math.numbers.N3;
import edu.wpi.first.math.numbers.N4;
Expand Down Expand Up @@ -102,7 +103,8 @@ public static <Elements extends Num> Matrix<Elements, Elements> makeCostMatrix(
*/
public static <States extends Num, Inputs extends Num> boolean isStabilizable(
Matrix<States, States> A, Matrix<States, Inputs> B) {
return WPIMathJNI.isStabilizable(A.getNumRows(), B.getNumCols(), A.getData(), B.getData());
return StateSpaceUtilJNI.isStabilizable(
A.getNumRows(), B.getNumCols(), A.getData(), B.getData());
}

/**
Expand All @@ -120,7 +122,7 @@ public static <States extends Num, Inputs extends Num> boolean isStabilizable(
*/
public static <States extends Num, Outputs extends Num> boolean isDetectable(
Matrix<States, States> A, Matrix<Outputs, States> C) {
return WPIMathJNI.isStabilizable(
return StateSpaceUtilJNI.isStabilizable(
A.getNumRows(), C.getNumRows(), A.transpose().getData(), C.transpose().getData());
}

Expand Down
Loading

0 comments on commit 1920365

Please sign in to comment.