geoDetails = Optional.empty();
@@ -699,6 +719,7 @@ public Builder from(Entity other) {
status(other.getStatus());
location(other.getLocation());
locationUncertainty(other.getLocationUncertainty());
+ kinematics(other.getKinematics());
geoShape(other.getGeoShape());
geoDetails(other.getGeoDetails());
aliases(other.getAliases());
@@ -845,7 +866,9 @@ public Builder status(Status status) {
}
/**
- * Geospatial data related to the entity, including its position, kinematics, and orientation.
+ * Geospatial data related to the entity, including its position, kinematics, and orientation. Populate either
+ * this field (and location_uncertainty) or kinematics, not both. Populating both can lead to conflicting or
+ * inconsistent kinematics data for the entity.
*/
@JsonSetter(value = "location", nulls = Nulls.SKIP)
public Builder location(Optional location) {
@@ -872,6 +895,22 @@ public Builder locationUncertainty(LocationUncertainty locationUncertainty) {
return this;
}
+ /**
+ * Kinematics data related to the entity to a higher degree of granularity than Location. This is preferred for Track Entities.
+ * Populate either location/location_uncertainty or this field, not both.
+ * Populating both can lead to conflicting or inconsistent kinematics data for the entity.
+ */
+ @JsonSetter(value = "kinematics", nulls = Nulls.SKIP)
+ public Builder kinematics(Optional kinematics) {
+ this.kinematics = kinematics;
+ return this;
+ }
+
+ public Builder kinematics(Kinematics kinematics) {
+ this.kinematics = Optional.ofNullable(kinematics);
+ return this;
+ }
+
/**
* Geospatial representation of the entity, including entities that cover an area rather than a fixed point.
*/
@@ -1292,6 +1331,7 @@ public Entity build() {
status,
location,
locationUncertainty,
+ kinematics,
geoShape,
geoDetails,
aliases,
diff --git a/src/main/java/com/anduril/types/Kinematics.java b/src/main/java/com/anduril/types/Kinematics.java
new file mode 100644
index 0000000..b76a44c
--- /dev/null
+++ b/src/main/java/com/anduril/types/Kinematics.java
@@ -0,0 +1,143 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.anduril.types;
+
+import com.anduril.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = Kinematics.Builder.class)
+public final class Kinematics {
+ private final Optional kinematicsGeodetic;
+
+ private final Optional kinematicsGeocentric;
+
+ private final Map additionalProperties;
+
+ private Kinematics(
+ Optional kinematicsGeodetic,
+ Optional kinematicsGeocentric,
+ Map additionalProperties) {
+ this.kinematicsGeodetic = kinematicsGeodetic;
+ this.kinematicsGeocentric = kinematicsGeocentric;
+ this.additionalProperties = additionalProperties;
+ }
+
+ /**
+ * @return Kinematics measured in a geodetic (WGS84 latitude/longitude/altitude and ENU) reference frame.
+ */
+ @JsonProperty("kinematicsGeodetic")
+ public Optional getKinematicsGeodetic() {
+ return kinematicsGeodetic;
+ }
+
+ /**
+ * @return Kinematics measured in a geocentric (ECEF) reference frame.
+ */
+ @JsonProperty("kinematicsGeocentric")
+ public Optional getKinematicsGeocentric() {
+ return kinematicsGeocentric;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof Kinematics && equalTo((Kinematics) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(Kinematics other) {
+ return kinematicsGeodetic.equals(other.kinematicsGeodetic)
+ && kinematicsGeocentric.equals(other.kinematicsGeocentric);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(this.kinematicsGeodetic, this.kinematicsGeocentric);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder {
+ private Optional kinematicsGeodetic = Optional.empty();
+
+ private Optional kinematicsGeocentric = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ public Builder from(Kinematics other) {
+ kinematicsGeodetic(other.getKinematicsGeodetic());
+ kinematicsGeocentric(other.getKinematicsGeocentric());
+ return this;
+ }
+
+ /**
+ * Kinematics measured in a geodetic (WGS84 latitude/longitude/altitude and ENU) reference frame.
+ */
+ @JsonSetter(value = "kinematicsGeodetic", nulls = Nulls.SKIP)
+ public Builder kinematicsGeodetic(Optional kinematicsGeodetic) {
+ this.kinematicsGeodetic = kinematicsGeodetic;
+ return this;
+ }
+
+ public Builder kinematicsGeodetic(KinematicsGeodetic kinematicsGeodetic) {
+ this.kinematicsGeodetic = Optional.ofNullable(kinematicsGeodetic);
+ return this;
+ }
+
+ /**
+ * Kinematics measured in a geocentric (ECEF) reference frame.
+ */
+ @JsonSetter(value = "kinematicsGeocentric", nulls = Nulls.SKIP)
+ public Builder kinematicsGeocentric(Optional kinematicsGeocentric) {
+ this.kinematicsGeocentric = kinematicsGeocentric;
+ return this;
+ }
+
+ public Builder kinematicsGeocentric(KinematicsGeocentric kinematicsGeocentric) {
+ this.kinematicsGeocentric = Optional.ofNullable(kinematicsGeocentric);
+ return this;
+ }
+
+ public Kinematics build() {
+ return new Kinematics(kinematicsGeodetic, kinematicsGeocentric, additionalProperties);
+ }
+
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/com/anduril/types/KinematicsGeocentric.java b/src/main/java/com/anduril/types/KinematicsGeocentric.java
new file mode 100644
index 0000000..cfb1da8
--- /dev/null
+++ b/src/main/java/com/anduril/types/KinematicsGeocentric.java
@@ -0,0 +1,315 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.anduril.types;
+
+import com.anduril.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.time.OffsetDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = KinematicsGeocentric.Builder.class)
+public final class KinematicsGeocentric {
+ private final Optional location;
+
+ private final Optional locationUncertaintyEcef;
+
+ private final Optional velocityEcefMPerS;
+
+ private final Optional velocityUncertaintyEcef;
+
+ private final Optional accelerationMPerS2;
+
+ private final Optional attitudeEcef;
+
+ private final Optional measurementTime;
+
+ private final Map additionalProperties;
+
+ private KinematicsGeocentric(
+ Optional location,
+ Optional locationUncertaintyEcef,
+ Optional velocityEcefMPerS,
+ Optional velocityUncertaintyEcef,
+ Optional accelerationMPerS2,
+ Optional attitudeEcef,
+ Optional measurementTime,
+ Map additionalProperties) {
+ this.location = location;
+ this.locationUncertaintyEcef = locationUncertaintyEcef;
+ this.velocityEcefMPerS = velocityEcefMPerS;
+ this.velocityUncertaintyEcef = velocityUncertaintyEcef;
+ this.accelerationMPerS2 = accelerationMPerS2;
+ this.attitudeEcef = attitudeEcef;
+ this.measurementTime = measurementTime;
+ this.additionalProperties = additionalProperties;
+ }
+
+ /**
+ * @return The location of the entity, measured in the ECEF reference frame.
+ */
+ @JsonProperty("location")
+ public Optional getLocation() {
+ return location;
+ }
+
+ /**
+ * @return Location uncertainty of this measurement, measured in the ECEF frame.
+ */
+ @JsonProperty("locationUncertaintyEcef")
+ public Optional getLocationUncertaintyEcef() {
+ return locationUncertaintyEcef;
+ }
+
+ /**
+ * @return Velocity in the ECEF frame, measured in meters per second.
+ */
+ @JsonProperty("velocityEcefMPerS")
+ public Optional getVelocityEcefMPerS() {
+ return velocityEcefMPerS;
+ }
+
+ /**
+ * @return A 3x3 covariance matrix representing the uncertainty of the velocity measurement.
+ */
+ @JsonProperty("velocityUncertaintyEcef")
+ public Optional getVelocityUncertaintyEcef() {
+ return velocityUncertaintyEcef;
+ }
+
+ /**
+ * @return The entity's acceleration in meters per second squared.
+ */
+ @JsonProperty("accelerationMPerS2")
+ public Optional getAccelerationMPerS2() {
+ return accelerationMPerS2;
+ }
+
+ /**
+ * @return Quaternion that rotates the X unit vector in the entity's body frame (assumed to be front-left-up) [1,0,0]
+ * to the entity's orientation unit vector in the ECEF frame at the entity's location.
+ */
+ @JsonProperty("attitudeEcef")
+ public Optional getAttitudeEcef() {
+ return attitudeEcef;
+ }
+
+ /**
+ * @return The time when these kinematics were measured by the sensor. For tracks, this represents when the sensor made
+ * the observation that produced these kinematics. For asset pose data, this represents the system time when the
+ * pose was captured.
+ */
+ @JsonProperty("measurementTime")
+ public Optional getMeasurementTime() {
+ return measurementTime;
+ }
+
+ @java.lang.Override
+ public boolean equals(Object other) {
+ if (this == other) return true;
+ return other instanceof KinematicsGeocentric && equalTo((KinematicsGeocentric) other);
+ }
+
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return this.additionalProperties;
+ }
+
+ private boolean equalTo(KinematicsGeocentric other) {
+ return location.equals(other.location)
+ && locationUncertaintyEcef.equals(other.locationUncertaintyEcef)
+ && velocityEcefMPerS.equals(other.velocityEcefMPerS)
+ && velocityUncertaintyEcef.equals(other.velocityUncertaintyEcef)
+ && accelerationMPerS2.equals(other.accelerationMPerS2)
+ && attitudeEcef.equals(other.attitudeEcef)
+ && measurementTime.equals(other.measurementTime);
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ return Objects.hash(
+ this.location,
+ this.locationUncertaintyEcef,
+ this.velocityEcefMPerS,
+ this.velocityUncertaintyEcef,
+ this.accelerationMPerS2,
+ this.attitudeEcef,
+ this.measurementTime);
+ }
+
+ @java.lang.Override
+ public String toString() {
+ return ObjectMappers.stringify(this);
+ }
+
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ @JsonIgnoreProperties(ignoreUnknown = true)
+ public static final class Builder {
+ private Optional location = Optional.empty();
+
+ private Optional locationUncertaintyEcef = Optional.empty();
+
+ private Optional velocityEcefMPerS = Optional.empty();
+
+ private Optional velocityUncertaintyEcef = Optional.empty();
+
+ private Optional accelerationMPerS2 = Optional.empty();
+
+ private Optional attitudeEcef = Optional.empty();
+
+ private Optional measurementTime = Optional.empty();
+
+ @JsonAnySetter
+ private Map additionalProperties = new HashMap<>();
+
+ private Builder() {}
+
+ public Builder from(KinematicsGeocentric other) {
+ location(other.getLocation());
+ locationUncertaintyEcef(other.getLocationUncertaintyEcef());
+ velocityEcefMPerS(other.getVelocityEcefMPerS());
+ velocityUncertaintyEcef(other.getVelocityUncertaintyEcef());
+ accelerationMPerS2(other.getAccelerationMPerS2());
+ attitudeEcef(other.getAttitudeEcef());
+ measurementTime(other.getMeasurementTime());
+ return this;
+ }
+
+ /**
+ * The location of the entity, measured in the ECEF reference frame.
+ */
+ @JsonSetter(value = "location", nulls = Nulls.SKIP)
+ public Builder location(Optional location) {
+ this.location = location;
+ return this;
+ }
+
+ public Builder location(LocationGeocentricEcef location) {
+ this.location = Optional.ofNullable(location);
+ return this;
+ }
+
+ /**
+ * Location uncertainty of this measurement, measured in the ECEF frame.
+ */
+ @JsonSetter(value = "locationUncertaintyEcef", nulls = Nulls.SKIP)
+ public Builder locationUncertaintyEcef(Optional locationUncertaintyEcef) {
+ this.locationUncertaintyEcef = locationUncertaintyEcef;
+ return this;
+ }
+
+ public Builder locationUncertaintyEcef(TMat3 locationUncertaintyEcef) {
+ this.locationUncertaintyEcef = Optional.ofNullable(locationUncertaintyEcef);
+ return this;
+ }
+
+ /**
+ * Velocity in the ECEF frame, measured in meters per second.
+ */
+ @JsonSetter(value = "velocityEcefMPerS", nulls = Nulls.SKIP)
+ public Builder velocityEcefMPerS(Optional velocityEcefMPerS) {
+ this.velocityEcefMPerS = velocityEcefMPerS;
+ return this;
+ }
+
+ public Builder velocityEcefMPerS(Vec3 velocityEcefMPerS) {
+ this.velocityEcefMPerS = Optional.ofNullable(velocityEcefMPerS);
+ return this;
+ }
+
+ /**
+ * A 3x3 covariance matrix representing the uncertainty of the velocity measurement.
+ */
+ @JsonSetter(value = "velocityUncertaintyEcef", nulls = Nulls.SKIP)
+ public Builder velocityUncertaintyEcef(Optional velocityUncertaintyEcef) {
+ this.velocityUncertaintyEcef = velocityUncertaintyEcef;
+ return this;
+ }
+
+ public Builder velocityUncertaintyEcef(TMat3 velocityUncertaintyEcef) {
+ this.velocityUncertaintyEcef = Optional.ofNullable(velocityUncertaintyEcef);
+ return this;
+ }
+
+ /**
+ * The entity's acceleration in meters per second squared.
+ */
+ @JsonSetter(value = "accelerationMPerS2", nulls = Nulls.SKIP)
+ public Builder accelerationMPerS2(Optional accelerationMPerS2) {
+ this.accelerationMPerS2 = accelerationMPerS2;
+ return this;
+ }
+
+ public Builder accelerationMPerS2(Vec3 accelerationMPerS2) {
+ this.accelerationMPerS2 = Optional.ofNullable(accelerationMPerS2);
+ return this;
+ }
+
+ /**
+ * Quaternion that rotates the X unit vector in the entity's body frame (assumed to be front-left-up) [1,0,0]
+ * to the entity's orientation unit vector in the ECEF frame at the entity's location.
+ */
+ @JsonSetter(value = "attitudeEcef", nulls = Nulls.SKIP)
+ public Builder attitudeEcef(Optional attitudeEcef) {
+ this.attitudeEcef = attitudeEcef;
+ return this;
+ }
+
+ public Builder attitudeEcef(Quaternion attitudeEcef) {
+ this.attitudeEcef = Optional.ofNullable(attitudeEcef);
+ return this;
+ }
+
+ /**
+ * The time when these kinematics were measured by the sensor. For tracks, this represents when the sensor made
+ * the observation that produced these kinematics. For asset pose data, this represents the system time when the
+ * pose was captured.
+ */
+ @JsonSetter(value = "measurementTime", nulls = Nulls.SKIP)
+ public Builder measurementTime(Optional measurementTime) {
+ this.measurementTime = measurementTime;
+ return this;
+ }
+
+ public Builder measurementTime(OffsetDateTime measurementTime) {
+ this.measurementTime = Optional.ofNullable(measurementTime);
+ return this;
+ }
+
+ public KinematicsGeocentric build() {
+ return new KinematicsGeocentric(
+ location,
+ locationUncertaintyEcef,
+ velocityEcefMPerS,
+ velocityUncertaintyEcef,
+ accelerationMPerS2,
+ attitudeEcef,
+ measurementTime,
+ additionalProperties);
+ }
+
+ public Builder additionalProperty(String key, Object value) {
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ public Builder additionalProperties(Map additionalProperties) {
+ this.additionalProperties.putAll(additionalProperties);
+ return this;
+ }
+ }
+}
diff --git a/src/main/java/com/anduril/types/KinematicsGeodetic.java b/src/main/java/com/anduril/types/KinematicsGeodetic.java
new file mode 100644
index 0000000..0e10fc1
--- /dev/null
+++ b/src/main/java/com/anduril/types/KinematicsGeodetic.java
@@ -0,0 +1,317 @@
+/**
+ * This file was auto-generated by Fern from our API Definition.
+ */
+package com.anduril.types;
+
+import com.anduril.core.ObjectMappers;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonSetter;
+import com.fasterxml.jackson.annotation.Nulls;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import java.time.OffsetDateTime;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+
+@JsonInclude(JsonInclude.Include.NON_ABSENT)
+@JsonDeserialize(builder = KinematicsGeodetic.Builder.class)
+public final class KinematicsGeodetic {
+ private final Optional location;
+
+ private final Optional locationUncertaintyEnu;
+
+ private final Optional velocityEnuMPerS;
+
+ private final Optional velocityUncertaintyEnu;
+
+ private final Optional accelerationMPerS2;
+
+ private final Optional attitudeEnu;
+
+ private final Optional measurementTime;
+
+ private final Map additionalProperties;
+
+ private KinematicsGeodetic(
+ Optional location,
+ Optional locationUncertaintyEnu,
+ Optional velocityEnuMPerS,
+ Optional velocityUncertaintyEnu,
+ Optional accelerationMPerS2,
+ Optional attitudeEnu,
+ Optional measurementTime,
+ Map additionalProperties) {
+ this.location = location;
+ this.locationUncertaintyEnu = locationUncertaintyEnu;
+ this.velocityEnuMPerS = velocityEnuMPerS;
+ this.velocityUncertaintyEnu = velocityUncertaintyEnu;
+ this.accelerationMPerS2 = accelerationMPerS2;
+ this.attitudeEnu = attitudeEnu;
+ this.measurementTime = measurementTime;
+ this.additionalProperties = additionalProperties;
+ }
+
+ /**
+ * @return The location of this entity.
+ */
+ @JsonProperty("location")
+ public Optional getLocation() {
+ return location;
+ }
+
+ /**
+ * @return Location uncertainty of this measurement, measured in the ENU frame. When there are multiple altitude
+ * measurements, this represents the most certain.
+ */
+ @JsonProperty("locationUncertaintyEnu")
+ public Optional getLocationUncertaintyEnu() {
+ return locationUncertaintyEnu;
+ }
+
+ /**
+ * @return Velocity in the ENU frame, measured in meters per second.
+ */
+ @JsonProperty("velocityEnuMPerS")
+ public Optional getVelocityEnuMPerS() {
+ return velocityEnuMPerS;
+ }
+
+ /**
+ * @return A 3x3 covariance matrix representing the uncertainty of the velocity measurement.
+ */
+ @JsonProperty("velocityUncertaintyEnu")
+ public Optional