From cd277f276dfbe5f16f1b49069af45154e01f7d35 Mon Sep 17 00:00:00 2001 From: Daniel Chen Date: Thu, 23 Jan 2025 14:51:45 -0500 Subject: [PATCH 1/2] Initial --- .../math/trajectory/ExponentialProfile.java | 5 +++ .../math/trajectory/TrapezoidProfile.java | 8 +++- .../struct/ExponentialProfileStateStruct.java | 39 +++++++++++++++++++ .../struct/TrapezoidProfileStateStruct.java | 39 +++++++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java create mode 100644 wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java index db6f8f7a1cb..5deb7d1be88 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java @@ -4,6 +4,8 @@ package edu.wpi.first.math.trajectory; +import edu.wpi.first.math.trajectory.struct.ExponentialProfileStateStruct; + import java.util.Objects; /** @@ -129,6 +131,9 @@ public static Constraints fromStateSpace(double maxInput, double A, double B) { /** Profile state. */ public static class State { + /** The struct used for serializing this class. */ + public static final ExponentialProfileStateStruct struct = new ExponentialProfileStateStruct(); + /** The position at this state. */ public double position; diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java index 448c8384cf9..cfcc5d86c92 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/TrapezoidProfile.java @@ -6,6 +6,9 @@ import edu.wpi.first.math.MathSharedStore; import edu.wpi.first.math.MathUsageId; +import edu.wpi.first.math.trajectory.struct.TrapezoidProfileStateStruct; +import edu.wpi.first.util.struct.StructSerializable; + import java.util.Objects; /** @@ -71,7 +74,10 @@ public Constraints(double maxVelocity, double maxAcceleration) { } /** Profile state. */ - public static class State { + public static class State implements StructSerializable { + /** The struct used for serializing this class. */ + public static final TrapezoidProfileStateStruct struct = new TrapezoidProfileStateStruct(); + /** The position at this state. */ public double position; diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java new file mode 100644 index 00000000000..ab3924afacd --- /dev/null +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java @@ -0,0 +1,39 @@ +package edu.wpi.first.math.trajectory.struct; + +import edu.wpi.first.math.trajectory.ExponentialProfile; +import edu.wpi.first.util.struct.Struct; + +import java.nio.ByteBuffer; + +public class ExponentialProfileStateStruct implements Struct { + @Override + public Class getTypeClass() { + return ExponentialProfile.State.class; + } + + @Override + public String getTypeName() { + return "TrapezoidProfile.State"; + } + + @Override + public int getSize() { + return kSizeDouble * 2; + } + + @Override + public String getSchema() { + return "double position;double velocity"; + } + + @Override + public ExponentialProfile.State unpack(ByteBuffer bb) { + return new ExponentialProfile.State(bb.getDouble(), bb.getDouble()); + } + + @Override + public void pack(ByteBuffer bb, ExponentialProfile.State value) { + bb.putDouble(value.position); + bb.putDouble(value.velocity); + } +} diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java new file mode 100644 index 00000000000..90b928d46ed --- /dev/null +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java @@ -0,0 +1,39 @@ +package edu.wpi.first.math.trajectory.struct; + +import edu.wpi.first.math.trajectory.TrapezoidProfile; +import edu.wpi.first.util.struct.Struct; + +import java.nio.ByteBuffer; + +public class TrapezoidProfileStateStruct implements Struct { + @Override + public Class getTypeClass() { + return TrapezoidProfile.State.class; + } + + @Override + public String getTypeName() { + return "TrapezoidProfile.State"; + } + + @Override + public int getSize() { + return kSizeDouble * 2; + } + + @Override + public String getSchema() { + return "double position;double velocity"; + } + + @Override + public TrapezoidProfile.State unpack(ByteBuffer bb) { + return new TrapezoidProfile.State(bb.getDouble(), bb.getDouble()); + } + + @Override + public void pack(ByteBuffer bb, TrapezoidProfile.State value) { + bb.putDouble(value.position); + bb.putDouble(value.velocity); + } +} From 445aef0700e13ed017aaa4991e1f7735c1b147f4 Mon Sep 17 00:00:00 2001 From: Daniel Chen <108989218+Daniel1464@users.noreply.github.com> Date: Thu, 6 Feb 2025 14:51:13 -0500 Subject: [PATCH 2/2] Apply suggestions from code review Co-authored-by: Wispy <101812473+WispySparks@users.noreply.github.com> Co-authored-by: Joseph Eng <91924258+KangarooKoala@users.noreply.github.com> --- .../java/edu/wpi/first/math/trajectory/ExponentialProfile.java | 2 +- .../math/trajectory/struct/ExponentialProfileStateStruct.java | 2 +- .../math/trajectory/struct/TrapezoidProfileStateStruct.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java index 5deb7d1be88..9986b989c28 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/ExponentialProfile.java @@ -130,7 +130,7 @@ public static Constraints fromStateSpace(double maxInput, double A, double B) { } /** Profile state. */ - public static class State { + public static class State implements StructSerializable { /** The struct used for serializing this class. */ public static final ExponentialProfileStateStruct struct = new ExponentialProfileStateStruct(); diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java index ab3924afacd..6239fbc22c3 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/ExponentialProfileStateStruct.java @@ -13,7 +13,7 @@ public Class getTypeClass() { @Override public String getTypeName() { - return "TrapezoidProfile.State"; + return "ExponentialProfileState"; } @Override diff --git a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java index 90b928d46ed..d5b22bcb694 100644 --- a/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java +++ b/wpimath/src/main/java/edu/wpi/first/math/trajectory/struct/TrapezoidProfileStateStruct.java @@ -13,7 +13,7 @@ public Class getTypeClass() { @Override public String getTypeName() { - return "TrapezoidProfile.State"; + return "TrapezoidProfileState"; } @Override