[wpimath] Fully discretized ElevatorFF and ArmFF (#7024)

Co-authored-by: Tyler Veness <calcmogul@gmail.com>
This commit is contained in:
Nicholas Armstrong
2024-10-11 01:10:45 -04:00
committed by GitHub
parent 5d9a553104
commit 4adfa8bf64
31 changed files with 1004 additions and 425 deletions

View File

@@ -18,49 +18,51 @@ import us.hebi.quickbuf.ProtoUtil;
import us.hebi.quickbuf.RepeatedByte;
public final class Controller {
private static final RepeatedByte descriptorData = ProtoUtil.decodeBase64(1755,
"ChBjb250cm9sbGVyLnByb3RvEgl3cGkucHJvdG8iWAoWUHJvdG9idWZBcm1GZWVkZm9yd2FyZBIOCgJr" +
"cxgBIAEoAVICa3MSDgoCa2cYAiABKAFSAmtnEg4KAmt2GAMgASgBUgJrdhIOCgJrYRgEIAEoAVICa2Ei" +
"ngEKJFByb3RvYnVmRGlmZmVyZW50aWFsRHJpdmVGZWVkZm9yd2FyZBIbCglrdl9saW5lYXIYASABKAFS" +
"CGt2TGluZWFyEhsKCWthX2xpbmVhchgCIAEoAVIIa2FMaW5lYXISHQoKa3ZfYW5ndWxhchgDIAEoAVIJ" +
"a3ZBbmd1bGFyEh0KCmthX2FuZ3VsYXIYBCABKAFSCWthQW5ndWxhciJdChtQcm90b2J1ZkVsZXZhdG9y" +
"RmVlZGZvcndhcmQSDgoCa3MYASABKAFSAmtzEg4KAmtnGAIgASgBUgJrZxIOCgJrdhgDIAEoAVICa3YS" +
"DgoCa2EYBCABKAFSAmthImAKHlByb3RvYnVmU2ltcGxlTW90b3JGZWVkZm9yd2FyZBIOCgJrcxgBIAEo" +
"AVICa3MSDgoCa3YYAiABKAFSAmt2Eg4KAmthGAMgASgBUgJrYRIOCgJkdBgEIAEoAVICZHQiUgomUHJv" +
"dG9idWZEaWZmZXJlbnRpYWxEcml2ZVdoZWVsVm9sdGFnZXMSEgoEbGVmdBgBIAEoAVIEbGVmdBIUCgVy" +
"aWdodBgCIAEoAVIFcmlnaHRCGgoYZWR1LndwaS5maXJzdC5tYXRoLnByb3RvSocJCgYSBAAAJQEKCAoB" +
"DBIDAAASCggKAQISAwIAEgoICgEIEgMEADEKCQoCCAESAwQAMQoKCgIEABIEBgALAQoKCgMEAAESAwYI" +
"HgoLCgQEAAIAEgMHAhAKDAoFBAACAAUSAwcCCAoMCgUEAAIAARIDBwkLCgwKBQQAAgADEgMHDg8KCwoE" +
"BAACARIDCAIQCgwKBQQAAgEFEgMIAggKDAoFBAACAQESAwgJCwoMCgUEAAIBAxIDCA4PCgsKBAQAAgIS" +
"AwkCEAoMCgUEAAICBRIDCQIICgwKBQQAAgIBEgMJCQsKDAoFBAACAgMSAwkODwoLCgQEAAIDEgMKAhAK" +
"DAoFBAACAwUSAwoCCAoMCgUEAAIDARIDCgkLCgwKBQQAAgMDEgMKDg8KCgoCBAESBA0AEgEKCgoDBAEB" +
"EgMNCCwKCwoEBAECABIDDgIXCgwKBQQBAgAFEgMOAggKDAoFBAECAAESAw4JEgoMCgUEAQIAAxIDDhUW" +
"CgsKBAQBAgESAw8CFwoMCgUEAQIBBRIDDwIICgwKBQQBAgEBEgMPCRIKDAoFBAECAQMSAw8VFgoLCgQE" +
"AQICEgMQAhgKDAoFBAECAgUSAxACCAoMCgUEAQICARIDEAkTCgwKBQQBAgIDEgMQFhcKCwoEBAECAxID" +
"EQIYCgwKBQQBAgMFEgMRAggKDAoFBAECAwESAxEJEwoMCgUEAQIDAxIDERYXCgoKAgQCEgQUABkBCgoK" +
"AwQCARIDFAgjCgsKBAQCAgASAxUCEAoMCgUEAgIABRIDFQIICgwKBQQCAgABEgMVCQsKDAoFBAICAAMS",
"AxUODwoLCgQEAgIBEgMWAhAKDAoFBAICAQUSAxYCCAoMCgUEAgIBARIDFgkLCgwKBQQCAgEDEgMWDg8K" +
"CwoEBAICAhIDFwIQCgwKBQQCAgIFEgMXAggKDAoFBAICAgESAxcJCwoMCgUEAgICAxIDFw4PCgsKBAQC" +
"AgMSAxgCEAoMCgUEAgIDBRIDGAIICgwKBQQCAgMBEgMYCQsKDAoFBAICAwMSAxgODwoKCgIEAxIEGwAg" +
"AQoKCgMEAwESAxsIJgoLCgQEAwIAEgMcAhAKDAoFBAMCAAUSAxwCCAoMCgUEAwIAARIDHAkLCgwKBQQD" +
"AgADEgMcDg8KCwoEBAMCARIDHQIQCgwKBQQDAgEFEgMdAggKDAoFBAMCAQESAx0JCwoMCgUEAwIBAxID" +
"HQ4PCgsKBAQDAgISAx4CEAoMCgUEAwICBRIDHgIICgwKBQQDAgIBEgMeCQsKDAoFBAMCAgMSAx4ODwoL" +
"CgQEAwIDEgMfAhAKDAoFBAMCAwUSAx8CCAoMCgUEAwIDARIDHwkLCgwKBQQDAgMDEgMfDg8KCgoCBAQS" +
"BCIAJQEKCgoDBAQBEgMiCC4KCwoEBAQCABIDIwISCgwKBQQEAgAFEgMjAggKDAoFBAQCAAESAyMJDQoM" +
"CgUEBAIAAxIDIxARCgsKBAQEAgESAyQCEwoMCgUEBAIBBRIDJAIICgwKBQQEAgEBEgMkCQ4KDAoFBAQC" +
"AQMSAyQREmIGcHJvdG8z");
private static final RepeatedByte descriptorData = ProtoUtil.decodeBase64(1897,
"ChBjb250cm9sbGVyLnByb3RvEgl3cGkucHJvdG8iaAoWUHJvdG9idWZBcm1GZWVkZm9yd2FyZBIOCgJr" +
"cxgBIAEoAVICa3MSDgoCa2cYAiABKAFSAmtnEg4KAmt2GAMgASgBUgJrdhIOCgJrYRgEIAEoAVICa2ES" +
"DgoCZHQYBSABKAFSAmR0Ip4BCiRQcm90b2J1ZkRpZmZlcmVudGlhbERyaXZlRmVlZGZvcndhcmQSGwoJ" +
"a3ZfbGluZWFyGAEgASgBUghrdkxpbmVhchIbCglrYV9saW5lYXIYAiABKAFSCGthTGluZWFyEh0KCmt2" +
"X2FuZ3VsYXIYAyABKAFSCWt2QW5ndWxhchIdCgprYV9hbmd1bGFyGAQgASgBUglrYUFuZ3VsYXIibQob" +
"UHJvdG9idWZFbGV2YXRvckZlZWRmb3J3YXJkEg4KAmtzGAEgASgBUgJrcxIOCgJrZxgCIAEoAVICa2cS" +
"DgoCa3YYAyABKAFSAmt2Eg4KAmthGAQgASgBUgJrYRIOCgJkdBgFIAEoAVICZHQiYAoeUHJvdG9idWZT" +
"aW1wbGVNb3RvckZlZWRmb3J3YXJkEg4KAmtzGAEgASgBUgJrcxIOCgJrdhgCIAEoAVICa3YSDgoCa2EY" +
"AyABKAFSAmthEg4KAmR0GAQgASgBUgJkdCJSCiZQcm90b2J1ZkRpZmZlcmVudGlhbERyaXZlV2hlZWxW" +
"b2x0YWdlcxISCgRsZWZ0GAEgASgBUgRsZWZ0EhQKBXJpZ2h0GAIgASgBUgVyaWdodEIaChhlZHUud3Bp" +
"LmZpcnN0Lm1hdGgucHJvdG9K9QkKBhIEAAAnAQoICgEMEgMAABIKCAoBAhIDAgASCggKAQgSAwQAMQoJ" +
"CgIIARIDBAAxCgoKAgQAEgQGAAwBCgoKAwQAARIDBggeCgsKBAQAAgASAwcCEAoMCgUEAAIABRIDBwII" +
"CgwKBQQAAgABEgMHCQsKDAoFBAACAAMSAwcODwoLCgQEAAIBEgMIAhAKDAoFBAACAQUSAwgCCAoMCgUE" +
"AAIBARIDCAkLCgwKBQQAAgEDEgMIDg8KCwoEBAACAhIDCQIQCgwKBQQAAgIFEgMJAggKDAoFBAACAgES" +
"AwkJCwoMCgUEAAICAxIDCQ4PCgsKBAQAAgMSAwoCEAoMCgUEAAIDBRIDCgIICgwKBQQAAgMBEgMKCQsK" +
"DAoFBAACAwMSAwoODwoLCgQEAAIEEgMLAhAKDAoFBAACBAUSAwsCCAoMCgUEAAIEARIDCwkLCgwKBQQA" +
"AgQDEgMLDg8KCgoCBAESBA4AEwEKCgoDBAEBEgMOCCwKCwoEBAECABIDDwIXCgwKBQQBAgAFEgMPAggK" +
"DAoFBAECAAESAw8JEgoMCgUEAQIAAxIDDxUWCgsKBAQBAgESAxACFwoMCgUEAQIBBRIDEAIICgwKBQQB" +
"AgEBEgMQCRIKDAoFBAECAQMSAxAVFgoLCgQEAQICEgMRAhgKDAoFBAECAgUSAxECCAoMCgUEAQICARID" +
"EQkTCgwKBQQBAgIDEgMRFhcKCwoEBAECAxIDEgIYCgwKBQQBAgMFEgMSAggKDAoFBAECAwESAxIJEwoM",
"CgUEAQIDAxIDEhYXCgoKAgQCEgQVABsBCgoKAwQCARIDFQgjCgsKBAQCAgASAxYCEAoMCgUEAgIABRID" +
"FgIICgwKBQQCAgABEgMWCQsKDAoFBAICAAMSAxYODwoLCgQEAgIBEgMXAhAKDAoFBAICAQUSAxcCCAoM" +
"CgUEAgIBARIDFwkLCgwKBQQCAgEDEgMXDg8KCwoEBAICAhIDGAIQCgwKBQQCAgIFEgMYAggKDAoFBAIC" +
"AgESAxgJCwoMCgUEAgICAxIDGA4PCgsKBAQCAgMSAxkCEAoMCgUEAgIDBRIDGQIICgwKBQQCAgMBEgMZ" +
"CQsKDAoFBAICAwMSAxkODwoLCgQEAgIEEgMaAhAKDAoFBAICBAUSAxoCCAoMCgUEAgIEARIDGgkLCgwK" +
"BQQCAgQDEgMaDg8KCgoCBAMSBB0AIgEKCgoDBAMBEgMdCCYKCwoEBAMCABIDHgIQCgwKBQQDAgAFEgMe" +
"AggKDAoFBAMCAAESAx4JCwoMCgUEAwIAAxIDHg4PCgsKBAQDAgESAx8CEAoMCgUEAwIBBRIDHwIICgwK" +
"BQQDAgEBEgMfCQsKDAoFBAMCAQMSAx8ODwoLCgQEAwICEgMgAhAKDAoFBAMCAgUSAyACCAoMCgUEAwIC" +
"ARIDIAkLCgwKBQQDAgIDEgMgDg8KCwoEBAMCAxIDIQIQCgwKBQQDAgMFEgMhAggKDAoFBAMCAwESAyEJ" +
"CwoMCgUEAwIDAxIDIQ4PCgoKAgQEEgQkACcBCgoKAwQEARIDJAguCgsKBAQEAgASAyUCEgoMCgUEBAIA" +
"BRIDJQIICgwKBQQEAgABEgMlCQ0KDAoFBAQCAAMSAyUQEQoLCgQEBAIBEgMmAhMKDAoFBAQCAQUSAyYC" +
"CAoMCgUEBAIBARIDJgkOCgwKBQQEAgEDEgMmERJiBnByb3RvMw==");
static final Descriptors.FileDescriptor descriptor = Descriptors.FileDescriptor.internalBuildGeneratedFileFrom("controller.proto", "wpi.proto", descriptorData);
static final Descriptors.Descriptor wpi_proto_ProtobufArmFeedforward_descriptor = descriptor.internalContainedType(31, 88, "ProtobufArmFeedforward", "wpi.proto.ProtobufArmFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufArmFeedforward_descriptor = descriptor.internalContainedType(31, 104, "ProtobufArmFeedforward", "wpi.proto.ProtobufArmFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufDifferentialDriveFeedforward_descriptor = descriptor.internalContainedType(122, 158, "ProtobufDifferentialDriveFeedforward", "wpi.proto.ProtobufDifferentialDriveFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufDifferentialDriveFeedforward_descriptor = descriptor.internalContainedType(138, 158, "ProtobufDifferentialDriveFeedforward", "wpi.proto.ProtobufDifferentialDriveFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufElevatorFeedforward_descriptor = descriptor.internalContainedType(282, 93, "ProtobufElevatorFeedforward", "wpi.proto.ProtobufElevatorFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufElevatorFeedforward_descriptor = descriptor.internalContainedType(298, 109, "ProtobufElevatorFeedforward", "wpi.proto.ProtobufElevatorFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufSimpleMotorFeedforward_descriptor = descriptor.internalContainedType(377, 96, "ProtobufSimpleMotorFeedforward", "wpi.proto.ProtobufSimpleMotorFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufSimpleMotorFeedforward_descriptor = descriptor.internalContainedType(409, 96, "ProtobufSimpleMotorFeedforward", "wpi.proto.ProtobufSimpleMotorFeedforward");
static final Descriptors.Descriptor wpi_proto_ProtobufDifferentialDriveWheelVoltages_descriptor = descriptor.internalContainedType(475, 82, "ProtobufDifferentialDriveWheelVoltages", "wpi.proto.ProtobufDifferentialDriveWheelVoltages");
static final Descriptors.Descriptor wpi_proto_ProtobufDifferentialDriveWheelVoltages_descriptor = descriptor.internalContainedType(507, 82, "ProtobufDifferentialDriveWheelVoltages", "wpi.proto.ProtobufDifferentialDriveWheelVoltages");
/**
* @return this proto file's descriptor.
@@ -95,6 +97,11 @@ public final class Controller {
*/
private double ka;
/**
* <code>optional double dt = 5;</code>
*/
private double dt;
private ProtobufArmFeedforward() {
}
@@ -253,6 +260,43 @@ public final class Controller {
return this;
}
/**
* <code>optional double dt = 5;</code>
* @return whether the dt field is set
*/
public boolean hasDt() {
return (bitField0_ & 0x00000010) != 0;
}
/**
* <code>optional double dt = 5;</code>
* @return this
*/
public ProtobufArmFeedforward clearDt() {
bitField0_ &= ~0x00000010;
dt = 0D;
return this;
}
/**
* <code>optional double dt = 5;</code>
* @return the dt
*/
public double getDt() {
return dt;
}
/**
* <code>optional double dt = 5;</code>
* @param value the dt to set
* @return this
*/
public ProtobufArmFeedforward setDt(final double value) {
bitField0_ |= 0x00000010;
dt = value;
return this;
}
@Override
public ProtobufArmFeedforward copyFrom(final ProtobufArmFeedforward other) {
cachedSize = other.cachedSize;
@@ -262,6 +306,7 @@ public final class Controller {
kg = other.kg;
kv = other.kv;
ka = other.ka;
dt = other.dt;
}
return this;
}
@@ -284,6 +329,9 @@ public final class Controller {
if (other.hasKa()) {
setKa(other.ka);
}
if (other.hasDt()) {
setDt(other.dt);
}
return this;
}
@@ -298,6 +346,7 @@ public final class Controller {
kg = 0D;
kv = 0D;
ka = 0D;
dt = 0D;
return this;
}
@@ -324,7 +373,8 @@ public final class Controller {
&& (!hasKs() || ProtoUtil.isEqual(ks, other.ks))
&& (!hasKg() || ProtoUtil.isEqual(kg, other.kg))
&& (!hasKv() || ProtoUtil.isEqual(kv, other.kv))
&& (!hasKa() || ProtoUtil.isEqual(ka, other.ka));
&& (!hasKa() || ProtoUtil.isEqual(ka, other.ka))
&& (!hasDt() || ProtoUtil.isEqual(dt, other.dt));
}
@Override
@@ -345,6 +395,10 @@ public final class Controller {
output.writeRawByte((byte) 33);
output.writeDoubleNoTag(ka);
}
if ((bitField0_ & 0x00000010) != 0) {
output.writeRawByte((byte) 41);
output.writeDoubleNoTag(dt);
}
}
@Override
@@ -362,6 +416,9 @@ public final class Controller {
if ((bitField0_ & 0x00000008) != 0) {
size += 9;
}
if ((bitField0_ & 0x00000010) != 0) {
size += 9;
}
return size;
}
@@ -404,6 +461,15 @@ public final class Controller {
ka = input.readDouble();
bitField0_ |= 0x00000008;
tag = input.readTag();
if (tag != 41) {
break;
}
}
case 41: {
// dt
dt = input.readDouble();
bitField0_ |= 0x00000010;
tag = input.readTag();
if (tag != 0) {
break;
}
@@ -437,6 +503,9 @@ public final class Controller {
if ((bitField0_ & 0x00000008) != 0) {
output.writeDouble(FieldNames.ka, ka);
}
if ((bitField0_ & 0x00000010) != 0) {
output.writeDouble(FieldNames.dt, dt);
}
output.endObject();
}
@@ -491,6 +560,17 @@ public final class Controller {
}
break;
}
case 3216: {
if (input.isAtField(FieldNames.dt)) {
if (!input.trySkipNullValue()) {
dt = input.readDouble();
bitField0_ |= 0x00000010;
}
} else {
input.skipUnknownField();
}
break;
}
default: {
input.skipUnknownField();
break;
@@ -558,6 +638,8 @@ public final class Controller {
static final FieldName kv = FieldName.forField("kv");
static final FieldName ka = FieldName.forField("ka");
static final FieldName dt = FieldName.forField("dt");
}
}
@@ -1089,6 +1171,11 @@ public final class Controller {
*/
private double ka;
/**
* <code>optional double dt = 5;</code>
*/
private double dt;
private ProtobufElevatorFeedforward() {
}
@@ -1247,6 +1334,43 @@ public final class Controller {
return this;
}
/**
* <code>optional double dt = 5;</code>
* @return whether the dt field is set
*/
public boolean hasDt() {
return (bitField0_ & 0x00000010) != 0;
}
/**
* <code>optional double dt = 5;</code>
* @return this
*/
public ProtobufElevatorFeedforward clearDt() {
bitField0_ &= ~0x00000010;
dt = 0D;
return this;
}
/**
* <code>optional double dt = 5;</code>
* @return the dt
*/
public double getDt() {
return dt;
}
/**
* <code>optional double dt = 5;</code>
* @param value the dt to set
* @return this
*/
public ProtobufElevatorFeedforward setDt(final double value) {
bitField0_ |= 0x00000010;
dt = value;
return this;
}
@Override
public ProtobufElevatorFeedforward copyFrom(final ProtobufElevatorFeedforward other) {
cachedSize = other.cachedSize;
@@ -1256,6 +1380,7 @@ public final class Controller {
kg = other.kg;
kv = other.kv;
ka = other.ka;
dt = other.dt;
}
return this;
}
@@ -1278,6 +1403,9 @@ public final class Controller {
if (other.hasKa()) {
setKa(other.ka);
}
if (other.hasDt()) {
setDt(other.dt);
}
return this;
}
@@ -1292,6 +1420,7 @@ public final class Controller {
kg = 0D;
kv = 0D;
ka = 0D;
dt = 0D;
return this;
}
@@ -1318,7 +1447,8 @@ public final class Controller {
&& (!hasKs() || ProtoUtil.isEqual(ks, other.ks))
&& (!hasKg() || ProtoUtil.isEqual(kg, other.kg))
&& (!hasKv() || ProtoUtil.isEqual(kv, other.kv))
&& (!hasKa() || ProtoUtil.isEqual(ka, other.ka));
&& (!hasKa() || ProtoUtil.isEqual(ka, other.ka))
&& (!hasDt() || ProtoUtil.isEqual(dt, other.dt));
}
@Override
@@ -1339,6 +1469,10 @@ public final class Controller {
output.writeRawByte((byte) 33);
output.writeDoubleNoTag(ka);
}
if ((bitField0_ & 0x00000010) != 0) {
output.writeRawByte((byte) 41);
output.writeDoubleNoTag(dt);
}
}
@Override
@@ -1356,6 +1490,9 @@ public final class Controller {
if ((bitField0_ & 0x00000008) != 0) {
size += 9;
}
if ((bitField0_ & 0x00000010) != 0) {
size += 9;
}
return size;
}
@@ -1398,6 +1535,15 @@ public final class Controller {
ka = input.readDouble();
bitField0_ |= 0x00000008;
tag = input.readTag();
if (tag != 41) {
break;
}
}
case 41: {
// dt
dt = input.readDouble();
bitField0_ |= 0x00000010;
tag = input.readTag();
if (tag != 0) {
break;
}
@@ -1431,6 +1577,9 @@ public final class Controller {
if ((bitField0_ & 0x00000008) != 0) {
output.writeDouble(FieldNames.ka, ka);
}
if ((bitField0_ & 0x00000010) != 0) {
output.writeDouble(FieldNames.dt, dt);
}
output.endObject();
}
@@ -1485,6 +1634,17 @@ public final class Controller {
}
break;
}
case 3216: {
if (input.isAtField(FieldNames.dt)) {
if (!input.trySkipNullValue()) {
dt = input.readDouble();
bitField0_ |= 0x00000010;
}
} else {
input.skipUnknownField();
}
break;
}
default: {
input.skipUnknownField();
break;
@@ -1553,6 +1713,8 @@ public final class Controller {
static final FieldName kv = FieldName.forField("kv");
static final FieldName ka = FieldName.forField("ka");
static final FieldName dt = FieldName.forField("dt");
}
}