Squashed 'third_party/allwpilib/' changes from 83f1860047..f1a82828fe
f1a82828fe [wpiutil] Add DataLog and DataLogManager Stop() (#5860)
2a04e12c6f [apriltag] AprilTagFieldLayout: Add accessors for origin and field dimensions (#5869)
33e0089afb Cleanup usages of std::function<void(void)> (#5864)
d06fa633d5 [build] Fix protobuf generation when building with make (#5867)
049732afb8 [cscore] Make camera connection logging clearer (#5866)
87f7c19f90 [wpimath] Make InterpolatingDoubleTreeMap constructor public (#5865)
6b53ef47cf [wpimath] Don't recreate TrapezoidProfile in ProfiledPIDController calculate() (#5863)
8a3a268ae6 [commands] Add finallyDo with zero-arg lambda (#5862)
1c35d42cd0 [wpilib] Pop diagnostic for deprecated function use (#5859)
ddc8db6c26 [wpimath] Add feedforward constant constructor to ElevatorSim (#5823)
c6aff2c431 [upstream_utils] Update to LLVM 17.0.4 (#5855)
a9c5b18a39 [build] Update OpenCV to 2024-4.8.0-2 (#5854)
9540b6922d [hal] Add CAN IDs for AndyMark and Vivid Hosting (#5852)
83a7d33c47 [glass] Improve display of protobuf/struct type strings (#5850)
a4a8ad9c75 [commands] Make Java SelectCommand generic (#5849)
9eecf2a456 [build] Add CMake option to build Java sources jars (#5768)
9536a311cb [wpilib] Add support for the PS5 DualSense controller (#5257)
8d5e6737fc [wpilibc] SolenoidSim: Add virtual destructor (#5848)
07e13d60a2 [ntcore] Fix write_impl (#5847)
1713386869 [wpiutil] ProtobufMessageDatabase: Fix out-of-order Add() rebuild (#5845)
35472f5fc9 [ntcore] Fix a use-after-free in client close (#5844)
ed168b522c [ntcore] Disable buf pool when asan is enabled (#5843)
3e7ba2cc6f [wpinet] WebSocket: Fix write behavior (#5841)
80c47da237 [sim] Disable the robot program when DS disconnects (#5818)
abe1cec90c [wpilib] Update Usage Reporting ResourceType from NI Libraries (#5842)
cdf981abba [glass] Fix position of data type in NT view (#5840)
04dcd80adb [build] Publish unit tests for examples (#5838)
49920234ac [build] Fix checkstyle rules to allow Windows paths (#5839)
366b715942 [wpilib] Fix SendableChooser test (#5835)
3ba501f947 [commands] Java: Fix CommandXboxController.leftTrigger() parameter order (#5831)
ec569a58ef [wpimath] Make KalmanTypeFilter interface public (#5830)
b91317fd36 [wpiutil] DataLog.addSchema(): Don't add into a set view (#5829)
2ab4fcbc24 [wpiutil] ProtobufMessageDatabase: Clear messages first (#5827)
98c14f1692 [wpimath] Add EKF/UKF u-y-R correct overload (#5832)
60bcdeded9 [ci] Disable java in sanitizer builds (#5833)
c87f8fd538 [commands] Add DeferredCommand (#5566)
ad80eb3a0b [ci] Update actions for comment-command (#5824)
c7d6ad5a0b [ntcore] WebSocketConnection: Use weak capture (#5822)
8a8e220792 [simgui] Add 'Invalid' option for AllianceStation (#5820)
cfc6a47f76 [sim] DS plugin: Fix off-by-one error when setting alliance station (#5819)
8efa586ace [ntcore] Don't check type string on publishing an entry (#5816)
23ea188e60 [glass] Add protobuf decode error log message (#5812)
928e87b4f4 [build] Add combined test meta-task (#5813)
63ef585d4b [wpiutil] Fix compilation of MathExtras.h on Windows with /sdl (#5809)
b03a7668f9 [build] Windows CMake/vcpkg fixes (#5807)
3f08bcde54 [hal] Fix HAL AllianceStation on rio (#5811)
196d963dc4 [ntcore] Fix off-by-one error in stream write (#5810)
f4cbcbc984 Fix typos (NFC) (#5804)
ec0f7fefb0 [myrobot] Update the myRobot JRE (#5805)
3d618bdbfd [wpiutil] Fix Java struct array unpacking (#5801)
1fa7445667 [ntcore] Check for valid client in incoming text and binary (#5799)
269b9647da [ci] Update JDK for combine step (#5794)
bee32f080e [docs] Add wpiunits to JavaDocs (#5793)
25dad5a531 [wpinet] TCPConnector_parallel: Don't use thread_local (#5791)
4a93581f1a [build] cmake: use default library type for libglassnt, libglass, wpigui, and imgui (#5797)
abb2857e03 [wpilib] Counter: Fix default distance per pulse, add distance and rate to C++ (#5796)
b14a61e1c0 [readme] Add link to QuickBuffers release page (#5795)
cf54d9ccb7 [wpiutil, ntcore] Add structured data support (#5391)
ecb7cfa9ef [wpimath] Add Exponential motion profile (#5720)
7c6fe56cf2 [ntcore] Fix crash on disconnect (#5788)
85147bf69e [wpinet] WebSocketSerializer: Fix UB (#5787)
244163acad [wpinet] uv::Stream::TryWrite(): Return 0 on EAGAIN (#5784)
820728503d [hal] Remove extra semicolon in RoboRioData (#5786)
45f307d87e [upstream_utils] Upgrade to LLVM 17.0.3 (#5785)
4ce4d63efc [wpilibj] Fix RobotBase.isSimulation() (#5783)
579007ceb3 [commands] Add requirements parameter to Commands.idle() (#5774)
3f3a169149 [wpilib] Make physics sim setState() functions public (#5779)
7501e4ac88 [wpilib] Close sim device in ADIS IMUs (#5776)
99630d2e78 [wpimath] Upgrade to EJML 0.43.1 (#5778)
02cbbc997d [wpimath] Make Vector-Vector binary operators return Vector (#5772)
ed93889e17 [examples] Fix typo in TimesliceRobot example name (#5773)
da70e4c262 [docs] Add jinja2 to CMake prerequisites (#5771)
e814595ea7 [wpimath] Add ChassisSpeeds.fromRobotRelativeSpeeds() (#5744)
f98c943445 [wpimath] LinearSystemId: Add DCMotorSystem overload (#5770)
b3eb64b0f7 [wpiutil] ct_string: Use inline namespace for literals (#5767)
7d9ba256c2 Revert "[build] Add CMake option to build Java source jars (#5756)" (#5766)
1f6492e3d8 [sysid] Update JSON library usage (#5765)
638f04f626 [wpiutil] Add protobuf to thirdparty sources (#5746)
210255bfff [wpiutil] Update json to 3.11.2 (#5680)
896772c750 [wpimath] Add DCMotor functions for Kraken X60 and Neo Vortex (#5759)
fd427f6c82 [wpimath] Fix hardcoded module count in SwerveDriveKinematics.resetHeading() (#5762)
c0b4c6cce6 [wpimath] Add overloads for Transform2d and Transform3d (#5757)
9a0aafd8ab [examples] Make swerve examples multiply desired module speeds by cosine of heading error (#5758)
1c724884ca [build] Add CMake option to build Java source jars (#5756)
5b0db6b93e [ci] Forward CI as well (#5755)
f8cbbbac12 [ci] Take 2 on passing GITHUB_REF (#5754)
b9944be09c [ci] Pass GITHUB_REF to docker container (#5753)
de5e4eda6c [build] Update apriltag, libssh, googletest for 2024 (#5752)
227e660e20 [upstream_utils] Upgrade to LLVM 17.0.2 (#5750)
36f94c9f21 [commands,romi,xrp] Add frcYear to vendordep (#5747)
741d166457 [glass] NT view: enhance array support (#5732)
1d23513945 [ntcore] Fix string array value comparison (#5745)
ff1849052e [commands] Make command scheduling order consistent (#5470)
58e8474368 [build] Disable armsimulation unit test (#5739)
fb07b0da49 [examples] Add XRP C++ Examples and Templates (#5743)
81893ad73d Run wpiformat with clang-format 17 (#5740)
faa1e665ba [wpimath] Add ElevatorFeedforward.calculate(currentV, nextV) overload (#5715)
a789632052 [build] Update to native utils 2024.3.1 (#5738)
8f60ab5182 [build] Update OpenCV to 2024-4.8.0-1 (#5737)
33243f982b [wpimath] Expand Quaternion class with additional operators (#5600)
420f2f7c80 [ntcore] Add RTT-only subprotocol (#5731)
2b63e35ded [ntcore] Fix moving outgoing queue to new period (#5735)
be939cb636 [ntcore] Fix notification of SetDefaultEntryValue (#5733)
69a54de202 [build] Update enterprise plugin (#5730)
fef03a3ff5 [commands] Clean up C++ includes after Requirements was added (#5719)
8b7c6852cf [ntcore] Networking improvements (#5659)
1d19e09ca9 [wpiutil] Set WPI_{UN}IGNORE_DEPRECATED to empty when all else fails (#5728)
58141d6eb5 [wpilib] Make BooleanEvent more consistent (#5436)
6576d9b474 [wpilib] SendableChooser: implement Sendable instead of NTSendable (#5718)
a4030c670f [build] Update to gradle 8.4, enable win arm builds (#5727)
0960f11eba [wpinet] Revert removal of uv_clock_gettime() (#5723)
cb1bd0a3be [wpiutil] Get more precise system time on Windows (#5722)
4831277ffe [wpigui] Fix loading a maximized window on second monitor (#5721)
3eb372c25a [wpiutil] SendableBuilder: Add PublishConst methods (#5158)
1fec8596a4 [ci] Fix -dirty version (#5716)
f7e47d03f3 [build] Remove unnecessary CMake config installs (#5714)
a331ed2374 [sysid] Add SysId (#5672)
8d2cbfce16 [wpiutil] DataLog: Stop logging if insufficient free space (#5699)
48facb9cef [ntcoreffi] Add DataLogManager (#5702)
aecbcb08fc [ntcore] Correctly start DataLog for existing publishers (#5703)
5e295dfbda [wpiutil] DataLog: Limit total buffer allocation (#5700)
c7c7e05d9d [ci] Unbreak combiner (#5698)
c92bad52cb [wpilib] DataLogManager: Use system time valid function (#5697)
d404af5f24 [wpilib] RobotController: Add isSystemTimeValid() (#5696)
e56f1a3632 [ci] Run combine but skip all steps (#5695)
8f5bcad244 [ci] Use sccache for cmake builds (#5692)
703dedc4a6 [ci] Upgrade get-cmake action to fix node12 deprecation warning (#5694)
c69a0d7504 [ci] Don't run example unit test that segfaults (#5693)
66358d103e Add menu items for online docs to GUI tools (#5689)
4be8384a76 [ci] Disable combine on PR builds (#5691)
90288f06a6 [ci] Fix Gradle disk space issues (#5688)
9e9583412e [wpigui] Make wpi::gui::OpenURL() fork the process first (#5687)
d4fcd80b7b [ci] Gradle: Use container only for build step (#5684)
7b70e66772 [outlineviewer] Fix thirdparty library include sorting (#5683)
5f651df5d5 [build] Clean up Gradle configs (#5685)
65b26738d5 Add CMakeSettings.json to gitignore (#5682)
d0305951ad Fix GitHub inline warnings (#5681)
e8d4a20331 [build][cmake] Fix windows tests and re-enable CI tests (#5674)
2b58bbde0b [xrp] Add Reflectance sensor and rangefinder classes (#5673)
dd5612fbee [json] Add forward definition header (#5676)
eab44534c3 [wpimath] Remove unused SmallString include (#5677)
5ab54ff760 Replace wpi::raw_istream with wpi::MemoryBuffer (#5675)
1b6ec5a95d [wpiutil] Upgrade to LLVM 17.0.1 (#5482)
07a0d22fe6 [build] Build examples in CMake CI (#5667)
97021f074a [build] Upgrade imgui and implot (#5668)
87ce1e3761 [build] Fix wpilibNewCommands CMake install (#5671)
6ef94de9b5 [wpimath] Add tests for ArmFeedforward and ElevatorFeedforward (#5663)
c395b29fb4 [wpinet] Add WebSocket::TrySendFrames() (#5607)
c4643ba047 [romi/xrp] Fix version typo in vendordep json (#5664)
51dcb8b55a [examples] Make Romi/XRP Examples use appropriate vendordeps (#5665)
daf7702007 [build] Test each example in a new environment (#5662)
e67df8c180 [wpilib] Const-qualify EncoderSim getters (#5660)
7be290147c [wpiutil] Refactor SpanMatcher and TestPrinters from ntcore (#5658)
9fe258427a [commands] Add proxy factory to Commands (#5603)
633c5a8a22 [commands] Add C++ Requirements struct (#5504)
b265a68eea [commands] Add interruptor parameter to onCommandInterrupt callbacks (#5461)
e93c233d60 [ntcore] Compute Value memory size when creating value (#5657)
5383589f99 [wpinet] uv::Request: Return shared_ptr from Release() (#5656)
40b552be4a [wpinet] uv::Stream: Return error from TryWrite() (#5655)
202a75fe08 [wpinet] RequestImpl: Avoid infinite loop in shared_from_this() (#5654)
8896515eb7 [wpinet] uv::Buffer: Add bytes() accessor (#5653)
ae59a2fba2 [wpinet] uv::Error: Change default error to 0 (#5652)
3b51ecc35b [wpiutil] SpanExtras: Add take_back and take_front (#5651)
17f1062885 Replace std::snprintf() with wpi::format_to_n_c_str() (#5645)
bb39900353 [romi/xrp] Add Romi and XRP Vendordeps (#5644)
cb99517838 [build] cmake: Use default install location on windows for dlls (#5580)
25b0622d4c [build] Add Windows CMake CI (#5516)
34e7849605 Add warning to development builds instructions (NFC) (#5646)
e9e611c9d8 [cameraserver] Remove CameraServer.SetSize() (#5650)
94f58cc536 [wpilib] Remove Compressor.Enabled() (#5649)
4da5aee88a [wpimath] Remove SlewRateLimiter 2 argument constructor (#5648)
2e3ddf5502 Update versions in development builds instructions to 2024 (#5647)
19a8850fb1 [examples] Add TimesliceRobot templates (#3683)
9047682202 [sim] Add XRP-specific plugin (#5631)
575348b81c [wpilib] Use IsSimulation() consistently (#3534)
12e2043b77 [wpilib] Clean up Notifier (#5630)
4bac4dd0f4 [wpimath] Move PIDController from frc2 to frc namespace (#5640)
494cfd78c1 [wpiutil] Fix deprecation warning in LLVM for C++23 (#5642)
43a727e868 [apriltag] Make loadAprilTagFieldLayout throw an unchecked exception instead (#5629)
ad4b017321 [ci] Use Ninja for faster builds (#5626)
4f2114d6f5 Fix warnings from GCC 13 release build (#5637)
e7e927fe26 [build] Also compress debug info for CMake RelWithDebInfo build type (#5638)
205a40c895 [build] Specify zlib for debug info compression (#5636)
707444f000 [apriltag] Suppress -Wtype-limits warning in asserts from GCC 13 (#5635)
3b79cb6ed3 [commands] Revert SubsystemBase deprecation/removal (#5634)
bc7f23a632 [build] Compress Linux debug info (#5633)
57b2d6f254 [build] Update to image 2024 v1.0 (#5625)
339ef1ea39 [wpilib] DataLogManager: Warn user if logging to RoboRIO 1 internal storage (#5617)
7a9a901a73 [build] Fix cmake config files (#5624)
298f8a6e33 [wpilib] Add Mechanism2d tests and make Java impl match C++ (#5527)
d7ef817bae [apriltag] Update apriltag library (#5619)
c3fb31fd0e [docs] Switch to Java 17 api docs (#5613)
bd64f81cf9 [build] Run Google tests in release mode in CI (#5615)
66e6bd81ea [wpimath] Cleanup wpimath/algorithms.md (NFC) (#5621)
4fa56fd884 [build] Add missing find_dependency call (#5623)
f63d958995 [build] Update to native utils 2024.2.0 (#5601)
a9ab08f48b [wpimath] Rename ChassisSpeeds.fromDiscreteSpeeds() to discretize() (#5616)
8e05983a4a [wpimath] Add math docs to plant inversion feedforward internals (NFC) (#5618)
3a33ce918b [ntcore] Add missing StringMap include (#5620)
a6157f184d [wpiutil] timestamp: Add ShutdownNowRio (#5610)
e9f612f581 [build] Guard policy setting for CMake versions below 3.24 (#5612)
1a6df6fec6 [wpimath] Fix DARE Q decomposition (#5611)
9b3f7fb548 [build] Exclude IntelliJ folders from spotless XML (#5602)
814f18c7f5 [wpimath] Fix computation of C for DARE (A, C) detectability check (#5609)
ac23f92451 [hal] Add GetTeamNumber (#5596)
a750bee54d [wpimath] Use std::norm() in IsStabilizable() (#5599)
8e2465f8a0 [wpimath] Add arithmetic functions to wheel speeds classes (#5465)
10d4f5b5df [wpimath] Clean up notation in DARE precondition docs (#5595)
b2dd59450b [hal] Fix unfinished/incorrect GetCPUTemp functions (#5598)
99f66b1e24 [wpimath] Replace frc/EigenCore.h typedefs with Eigen's where possible (#5597)
383289bc4b [build] Make custom CMake macros use lowercase (#5594)
45e7720ec1 [build] Add error message when downloading files in CMake (#5593)
4e0d785356 [wpimath] ChassisSpeeds: document that values aren't relative to the robot (NFC) (#5551)
3c04580a57 [commands] ProxyCommand: Use inner command name in unique_ptr constructor (#5570)
cf19102c4a [commands] SelectCommand: Fix leakage and multiple composition bug (#5571)
171375f440 [ntcoreffi] Link to NI libraries (#5589)
89add5d05b Disable flaky tests (#5591)
a8d4b162ab [ntcore] Remove RPC manual tests (#5590)
39a73b5b58 [commands] C++: Add CommandPtr supplier constructor to ProxyCommand (#5572)
36d514eae7 [commands] Refactor C++ ScheduleCommand to use SmallSet (#5568)
52297ffe29 [commands] Add idle command (#5555)
67043a8eeb [wpimath] Add angular jerk unit (#5582)
51b0fb1492 [wpimath] Fix incorrect header inclusion in angular_acceleration.h (#5587)
b7657a8e28 [wpimath] Split WPIMathJNI into logical chunks (#5552)
ea17f90f87 [build] Fix tool builds with multiple arm platforms installed (#5586)
f1d7b05723 [wpimath] Clean up unit formatter (#5584)
d7264ff597 Replace wpi::errs() usage with fmtlib (#5560)
ab3bf39e0e [wpiutil] Upgrade to fmt 10.1.1 (#5585)
165ebe4c79 Upgrade to fmt 10.1.0 (#5326)
8e2a7fd306 Include thirdparty libraries with angle brackets (#5578)
e322ab8e46 [wpimath] Fix docs for DARE ABQRN stabilizability check (NFC) (#5579)
360fb835f4 [upstream_utils] Handle edge case in filename matches (#5576)
9d86624c00 [build] Fix CMake configure warnings (#5577)
969979d6c7 [wpiutil] Update to foonathan memory 0.7-3 (#5573)
0d2d989e84 [wpimath] Update to gcem 1.17.0 (#5575)
cf86af7166 [wpiutil] Update to mpack 1.1.1 (#5574)
a0c029a35b [commands] Fix dangling SelectCommand documentation (NFC) (#5567)
349141b91b [upstream_utils] Document adding a patch (NFC) (#5432)
7889b35b67 [wpimath] Add RamseteController comparison to LTV controller docs (NFC) (#5559)
b3ef536677 [build] Ignore nt/sim json files in spotless (#5565)
ed895815b5 [build] Compile Java with UTF-8 encoding (#5564)
2e4ad35e36 [wpiutil] jni_util: Add JSpan and CriticalJSpan (#5554)
8f3d6a1d4b [wpimath] Remove discretizeAQTaylor() (#5562)
7c20fa1b18 [wpimath] Refactor DARE tests to reduce RAM usage at compile time (#5557)
89e738262c [ntcore] Limit buffer pool size to 64KB per connection (#5485)
96f7fa662e Upgrade Maven dependencies (#5553)
7a2d336d52 [wpinet] Leak multicast handles during windows shutdown (#5550)
f9e2757d8f [wpimath] Use JDoubleArrayRef in all JNI functions (#5546)
0cf6e37dc1 [wpimath] Make LTV controller constructors use faster DARE solver (#5543)
6953a303b3 [build] Fix the windows build with fmt (#5544)
7a37e3a496 [wpimath] Correct Rotation3d::RotateBy doc comment (NFC) (#5541)
186b409e16 [wpimath] Remove internal Eigen header include (#5539)
03764dfe93 [wpimath] Add static matrix support to DARE solver (#5536)
394cfeadbd [wpimath] Use SDA algorithm instead of SSCA for DARE solver (#5526)
a4b7fde767 [wpilib] Add mechanism specific SetState overloads to physics sims (#5534)
8121566258 [wpimath] Fix CoordinateSystem.convert() Transform3d overload (#5532)
b542e01a0b [glass] Fix array crash when clearing existing workspace (#5535)
e2e1b763b2 [wpigui] Fix PFD file dialogs not closing after window closing (#5530)
86d7bbc4e4 [examples] Add Java Examples and Templates for the XRP (#5529)
e8b5d44752 [wpimath] Make Java Quaternion use doubles instead of Vector (#5525)
38c198fa64 [myRobot] Add apriltags to myRobot build (#5528)
00450c3548 [wpimath] Upgrade to EJML 0.42 (#5531)
faf3cecd83 [wpimath] Don't copy Matrix and underlying storage in VecBuilder (#5524)
6b896a38dc [build] Don't enforce WITH_FLAT_INSTALL with MSVC (part 2) (#5517)
c01814b80e [wpiutil] Add C API for DataLog (#5509)
b5bd0771eb [wpimath] Document extrinsic vs intrinsic rotations (NFC) (#5508)
84ed8aec05 [build] Don't enforce WITH_FLAT_INSTALL with MSVC (#5515)
999f677d8c [ntcoreffi] Add WPI_Impl_SetupNowRio to exported symbols (#5510)
338f37d302 Fix header sorting of libssh (#5507)
75cbd9d6d0 [glass] Add background color selector to glass plots (#5506)
e2c190487b [examples] Add flywheel bang-bang controller example (#4071)
c52dad609e [wpinet] WebSocket: Send pong in response to ping (#5498)
e2d17a24a6 [hal] Expose power rail disable and cpu temp functionality (#5477)
3ad5d2e42d [hal,wpiutil] Use HMB for FPGA Timestamps (#5499)
b46a872494 [ntcore] Remove pImpl from implementation (#5480)
d8c59ccc71 [wpimath] Add tests for MathUtil clamp() and interpolate() (#5501)
0552c8621d [glass,ov] Improve Glass and OutlineViewer title bar message (#5502)
90e37a129f [wpiutil,wpimath] Add generic InterpolatingTreeMap (#5372)
d83a6edc20 [wpilib] Update GetMatchTime docs and units (#5232)
6db2c42966 [wpimath] Trajectory: Throw on empty lists of States (#5497)
21439b606c [wpimath] Disallow LTV controller max velocities above 15 m/s (#5495)
7496e0d208 [ntcore] Value: More efficiently store arrays (#5484)
0c93aded8a [wpimath] Change kinematics.ToTwist2d(end - start) to kinematics.ToTwist2d(start, end) (#5493)
815a8403e5 [wpimath] Give infeasible trajectory constraints a better exception message (#5492)
35a8b129d9 [wpimath] Add RotateBy() function to pose classes (#5491)
26d6e68c8f [upstream_utils] Add GCEM to CI (#5483)
6aa469ae45 [wpilib] Document how to create LinearSystem object for physics sim classes (NFC) (#5488)
a01b6467d3 [wpimath] Link to docs on LQR and KF tolerances (#5486)
d814f1d123 [wpimath] Fix copy-paste error from Pose2d docs (NFC) (#5490)
98f074b072 [wpimath] Add folder prefix to geometry includes (#5489)
e9858c10e9 [glass] Add tooltips for NT settings (#5476)
12dda24f06 [examples] Fix C robot template not correctly looping (#5474)
fc75d31755 [apriltag] Update apriltaglib (#5475)
a95994fff6 [wpiutil] timestamp: Call FPGA functions directly (#5235)
2ba8fbb6f4 [wpimath] Improve documentation for SwerveModulePosition::operator- (#5468)
b8cdf97621 [build] Prepare for Windows arm64 builds (#5390)
552f4b76b5 [wpimath] Add FOC-enabled Falcon constants to the DCMotor class (#5469)
1938251436 [examples] Add Feedforward to ElevatorProfiledPid (#5300)
873c2a6c10 [examples] Update ElevatorTrapezoidProfile example (#5466)
99b88be4f3 [wpilib] Reduce usage of NTSendable (#5434)
d125711023 [hal] Fix Java REVPH faults bitfield (take 2) (#5464)
c3fab7f1f2 [ntcore] Don't update timestamp when value is unchanged (#5356)
5ec7f18bdc [wpilib] EventLoop docs: Remove BooleanEvent references (NFC) (#5463)
c065ae1fcf [wpiunits] Add subproject for a Java typesafe unit system (#5371)
44acca7c00 [wpiutil] Add ClassPreloader (#5365)
88b11832ec [hal] Fix Java REVPH faults bitfield (#5148)
fb57d82e52 [ntcore] Enhance Java raw value support
3a6e40a44b [wpiutil] Enhance DataLog Java raw value support
8dae5af271 [wpiutil] Add compile-time string utilities (ct_string) (#5462)
fc56f8049a [wpilib] DriverStation: Change alliance station to use optional (#5229)
ef155438bd [build] Consume libuv via cmake config instead of via pkg-config (#5438)
86e91e6724 [wpimath] Refactor TrapezoidProfile API (#5457)
72a4543493 [wpilib] DutyCycleEncoderSim: Expand API (#5443)
657338715d [wpimath] Add ChassisSpeeds method to fix drifting during compound swerve drive maneuvers (#5425)
1af224c21b Add missing <functional> includes (#5459)
0b91ca6d5a [wpilib] SendableChooser: Add onChange listener (#5458)
6f7cdd460e [wpimath] Pose3d: Switch to JNI for exp and log (#5444)
c69e34c80c [wpimath] ChassisSpeeds: Add arithmetic functions (#5293)
335e7dd89d [wpilib] Simulation: Add ctor parameter to set starting state of mechanism sims (#5288)
14f30752ab [wpilib] Deprecate Accelerometer and Gyro interfaces (#5445)
70b60e3a74 [commands] Trigger: Fix method names in requireNonNullParam (#5454)
593767c8c7 [wpimath] Improve Euler angle calculations in gimbal lock (#5437)
daf022d3da [build] Make devImplementation inherit from implementation (#5450)
9b8d90b852 [examples] Convert the unitless joystick inputs to actual physical units (#5451)
1f6428ab63 [ntcore] Fix undefined comparison behavior when array is empty (#5448)
17eb9161cd Update code owners for removal of old commands (#5447)
3c4b58ae1e [wpinet] Upgrade to libuv 1.46.0 (#5446)
aaea85ff16 [commands] Merge CommandBase into Command and SubsystemBase into Subsystem (#5392)
7ac932996a [ci] Use PAT for workflow dispatch (#5442)
efe1987e8b [ci] Trigger pages repo workflow (#5441)
828bc5276f [wpiutil] Upgrade to LLVM 16.0.6 (#5435)
701df9eb87 [ci] Change documentation publish to single-commit (#5440)
e5452e3f69 [wpiutil] Add WPICleaner and an example how to use it (#4850)
7a099cb02a [commands] Remove deprecated classes and functions (#5409)
b250a03944 [wpilib] Add function to wait for DS Connection (#5230)
a6463ed761 [wpiutil] Fix unused variable warning in release build (#5430)
f031513470 [ntcore] NetworkTable::GetSubTables(): Remove duplicates (#5076)
f8e74e2f7c [hal] Unify PWM simulation Speed, Position, and Raw (#5277)
fd5699b240 Remove references to Drake (#5427)
e2d385d80a [build] cmake: Respect USE_SYSTEM_FMTLIB (#5429)
d37f990ce3 [hal] Fix HAL Relay/Main doc module (NFC) (#5422)
a7a8b874ac [docs] Expand HAL_ENUM in doxygen docs (#5421)
3a61deedde [wpimath] Rotation2d: Only use gcem::hypot when constexpr evaluated (#5419)
96145de7db [examples] Fix formatting (NFC) (#5420)
fffe6a7b9a [examples] Improve Pneumatics example coverage in Solenoid and RapidReactCmdBot examples (#4998)
6b5817836d [wpimath] Add tolerance for some tests (#5416)
3233883f3e [cscore] Fix warnings on macos arm (#5415)
c4fc21838f [commands] Add ConditionalCommand getInterruptionBehavior (#5161)
89fc51f0d4 Add tests for SendableChooser and Command Sendable functionality (#5179)
663bf25aaf [docs] Generate docs for symbols in __cplusplus (#5412)
fe32127ea8 [command] Clean up Command doc comments (NFC) (#5321)
c1a01569b4 [wpilib][hal] PWM Raw using microseconds (#5283)
1fca519fb4 [wpiutil] Remove remnants of ghc fs and tcb_span libraries (#5411)
90602cc135 [github] Update issue template to collect more project info (#5090)
34412ac57e [build] Exclude files in bin from Spotless (#5410)
61aa60f0e3 [wpilib] Add robot callback that is called when the DS is initially connected (#5231)
ebae341a91 [commands] Add test for subsystem registration and periodic (#5408)
5d3a133f9f Remove spaces in NOLINT comments (#5407)
3a0e484691 [wpimath] Fix clang-tidy warnings (#5403)
eb3810c765 [wpiutil] Fix clang-tidy warnings (#5406)
c4dc697192 [hal] WS Simulation: Add message filtering capability (#5395)
0eccc3f247 [ntcore] Fix clang-tidy warnings (#5405)
f4dda4bac0 [hal] Add javadocs for JNI (NFC) (#5298)
1c20c69793 [cscore] Fix clang-tidy warnings (#5404)
1501607e48 [commands] Fix clang-tidy warnings (#5402)
991f4b0f62 [wpimath] PIDController: Add IZone (#5315)
f5b0d1484b [wpimath] Add isNear method to MathUtil (#5353)
2ce248f66c [hal] Fix clang-tidy warnings (#5401)
5fc4aee2d2 [wpimath] SwerveDriveKinematics: Rename currentChassisSpeed to desiredChassisSpeed (#5393)
50b90ceb54 [wpimath] SwerveDriveKinematics: Add reset method (#5398)
316cd2a453 [commands] Notify DriverStationSim in CommandTestBaseWithParam (#5400)
d4ea5fa902 [cscore] VideoMode: Add equals override (Java) (#5397)
d6bd72d738 [wpimath] ProfiledPIDController: Add getConstraints (#5399)
25ad5017a9 [wpimath] Refactor kinematics, odometry, and pose estimator (#5355)
5c2addda0f [doc] Add missing pneumatics docs (NFC) (#5389)
c3e04a6ea2 Fix loading tests on macos 12 (#5388)
d5ed9fb859 [wpimath] Create separate archive with just units headers (#5383)
901ab693d4 [wpimath] Use UtilityClassTest for more utility classes (#5384)
9d53231b01 [wpilib] DataLogManager: Add warning for low storage space (#5364)
d466933963 [wpiutil] Group doxygen into MPack module (#5380)
652d1c44e3 [wpiutil] Upgrade to macOS 12 to remove concept shims (#5379)
6414be0e5d [wpimath] Group units doxygen modules (#5382)
7ab5800487 [wpiutil] Fix docs typo in SmallVector (#5381)
59905ea721 Replace WPI_DEPRECATED() macro with [[deprecated]] attribute (#5373)
753cb49a5e [ntcore] Fix doxygen module in generated C types (NFC) (#5374)
1c00a52b67 [hal] Expose CAN timestamp base clock (#5357)
91cbcea841 Replace SFINAE with concepts (#5361)
d57d1a4598 [wpimath] Remove unnecessary template argument from unit formatter (#5367)
5acc5e22aa [wpimath] Only compute eigenvalues with EigenSolvers (#5369)
d3c9316a97 extend shuffleboard test timeout (#5377)
1ea868081a [ci] Fix /format command (#5376)
5fac18ff4a Update formatting to clang-format 16 (#5370)
a94a998002 [wpimath] Generalize Eigen formatter (#5360)
125f6ea101 [wpimath] Make SwerveDriveKinematics::ToChassisSpeeds() take const-ref argument (#5363)
51066a5a8a [wpimath] Move unit formatters into units library (#5358)
282c032b60 [wpilibc] Add unit-aware Joystick.GetDirection() (#5319)
073d19cb69 [build] Fix CMake warning (#5359)
01490fc77b [wpiutil] DataLog: Add documentation for append methods (NFC) (#5348)
c9b612c986 [wpilibcExamples] Make C++ state-space elevator KF and LQR match Java (#5346)
eed1e6e3cb [wpimath] Replace DiscretizeAQTaylor() with DiscretizeAQ() (#5344)
c976f40364 [readme] Document how to run examples in simulation (#5340)
4d28bdc19e [ci] Update Github Pages deploy action parameters (#5343)
e0f851871f [ci] Fix github pages deploy version (#5342)
063c8cbedc Run wpiformat (NFC) (#5341)
96e41c0447 [ci] Update deploy and sshagent actions (#5338)
fd294bdd71 [build] Fix compilation with GCC 13 (#5322)
d223e4040b [dlt] Add delete without download functionality (#5329)
abc19bcb43 [upstream_utils] Zero out commit hashes and show 40 digits in index hashes (#5336)
e909f2e687 [build] Update gradle cache repo name (#5334)
52bd5b972d [wpimath] Rewrite DARE solver (#5328)
3876a2523a [wpimath] Remove unused MatrixImpl() function (#5330)
c82fcb1975 [wpiutil] Add reflection based cleanup helper (#4919)
15ba95df7e [wpiutil] Use std::filesystem (#4941)
77c2124fc5 [wpimath] Remove Eigen's custom STL types (#4945)
27fb47ab10 [glass] Field2D: Embed standard field images (#5159)
102e4f2566 [wpilib] Remove deprecated and broken SPI methods (#5249)
463a90f1df [wpilib, hal] Add function to read the RSL state (#5312)
7a90475eec [wpilib] Update RobotBase documentation (NFC) (#5320)
218cfea16b [wpilib] DutyCycleEncoder: Fix reset behavior (#5287)
91392823ff [build] Update to gradle 8.1 (#5303)
258b7cc48b [wpilibj] Filesystem.getDeployDirectory(): Strip JNI path from user.dir (#5317)
26cc43bee1 [wpilib] Add documentation to SPI mode enum (NFC) (#5324)
ac4da9b1cb [hal] Add HAL docs for Addressable LED (NFC) (#5304)
21d4244cf7 [wpimath] Fix DCMotor docs (NFC) (#5309)
1dff81bea7 [hal] Miscellaneous HAL doc fixes (NFC) (#5306)
7ce75574bf [wpimath] Upgrade to Drake v1.15.0 (#5310)
576bd646ae [hal] Add CANManufacturer for Redux Robotics (#5305)
ee3b4621e5 [commands] Add onlyWhile and onlyIf (#5291)
40ca094686 [commands] Fix RepeatCommand calling end() twice (#5261)
9cbeb841f5 [rtns] Match imaging tool capitalization (#5265)
a63d06ff77 [examples] Add constants to java gearsbot example (#5248)
b6c43322a3 [wpilibc] XboxController: Add return tag to docs (NFC) (#5246)
5162d0001c [hal] Fix and document addressable LED timings (#5272)
90fabe9651 [wpilibj] Use method references in drive class initSendable() (#5251)
24828afd11 [wpimath] Fix desaturateWheelSpeeds to account for negative speeds (#5269)
e099948a77 [wpimath] Clean up rank notation in docs (NFC) (#5274)
fd2d8cb9c1 [hal] Use std::log2() for base-2 logarithm (#5278)
ba8c64bcff [wpimath] Fix misspelled Javadoc parameters in pose estimators (NFC) (#5292)
f53c6813d5 [wpimath] Patch Eigen warnings (#5290)
663703d370 [gitattributes] Mark json files as lf text files (#5256)
aa34aacf6e [wpilib] Shuffleboard: Keep duplicates on SelectTab() (#5198)
63512bbbb8 [wpimath] Fix potential divide-by-zero in RKDP (#5242)
9227b2166e [wpilibj] DriverStation: Fix joystick data logs (#5240)
fbf92e9190 [wpinet] ParallelTcpConnector: don't connect to duplicate addresses (#5169)
2108a61362 [ntcore] NT4 client: close timed-out connections (#5175)
0a66479693 [ntcore] Optimize scan of outgoing messages (#5227)
b510c17ef6 [hal] Fix RobotController.getComments() mishandling quotes inside the comments string (#5197)
e7a7eb2e93 [commands] WaitCommand: Remove subclass doc note (NFC) (#5200)
a465f2d8f0 [examples] Shuffleboard: Correct parameter order (#5204)
a3364422fa LICENSE.md: Bump year to 2023 (#5195)
df3242a40a [wpimath] Fix NaN in C++ MakeCostMatrix() that takes an array (#5194)
00abb8c1e0 [commands] RamseteCommand: default-initialize m_prevSpeeds (#5188)
c886273fd7 [wpilibj] DutyCycleEncoder.setDistancePerRotation(): fix simulation (#5147)
53b5fd2ace [ntcore] Use int64 for datalog type string (#5186)
56b758320f [wpilib] DataLogManager: increase time for datetime to be valid (#5185)
08f298e4cd [wpimath] Fix Pose3d log returning Twist3d NaN for theta between 1E-8 and 1E-7 (#5168)
6d0c5b19db [commands] CommandScheduler.isComposed: Remove incorrect throws clause (NFC) (#5183)
0d22cf5ff7 [wpilib] Fix enableLiveWindowInTest crashing in disabled (#5173)
32ec5b3f75 [wpilib] Add isTestEnabled and minor docs cleanup (#5172)
e5c4c6b1a7 [wpimath] Fix invalid iterator access in TimeInterpolatableBuffer (#5138)
099d048d9e [wpimath] Fix Pose3d log returning Twist3d NaN for theta between 1E-9 and 1E-8 (#5143)
4af84a1c12 Fix Typos (NFC) (#5137)
ce3686b80d [wpimath] Check LTV controller max velocity precondition (#5142)
4b0eecaee0 [commands] Subsystem: Add default command removal method (#5064)
edf4ded412 [wpilib] PH: Revert to 5V rail being fixed 5V (#5122)
4c46b6aff9 [wpilibc] Fix DataLogManager crash on exit in sim (#5125)
490ca4a68a [wpilibc] Fix XboxController::GetBackButton doc (NFC) (#5131)
cbb5b0b802 [hal] Simulation: Fix REV PH solenoids 8+ (#5132)
bb7053d9ee [hal] Fix HAL_GetRuntimeType being slow on the roboRIO (#5130)
9efed9a533 Update .clang-format to c++20 (#5121)
dbbfe1aed2 [wpilib] Use PH voltage to calc Analog pressure switch threshold (#5115)
de65a135c3 [wpilib] DutyCycleEncoderSim: Add channel number constructor (#5118)
3e9788cdff [docs] Strip path from generated NT docs (#5119)
ecb072724d [ntcore] Client::Disconnect(): actually close connection (#5113)
0d462a4561 [glass] NT view: Change string/string array to quoted (#5111)
ba37986561 [ntcore] NetworkClient::Disconnect: Add null check (#5112)
25ab9cda92 [glass,ov] Provide menu item to create topic from root (#5110)
2f6251d4a6 [glass] Set default value when publishing new topic (#5109)
e9a7bed988 [wpimath] Add timestamp getter to MathShared (#5091)
9cc14bbb43 [ntcore] Add stress test to dev executable (#5107)
8068369542 [wpinet] uv: Stop creating handles when closing loop (#5102)
805c837a42 [ntcore] Fix use-after-free in server (#5101)
fd18577ba0 [commands] Improve documentation of addRequirements (NFC) (#5103)
74dea9f05e [wpimath] Fix exception for empty pose buffer in pose estimators (#5106)
9eef79d638 [wpilib] PneumaticHub: Document range of enableCompressorAnalog (NFC) (#5099)
843574a810 [ntcore] Use wpi::Now instead of loop time for transmit time
226ef35212 [wpinet] WebSocket: Reduce server send frame overhead
b30664d630 [ntcore] Reduce initial connection overhead
804e5ce236 [examples] MecanumDrive: Fix axis comment in C++ example (NFC) (#5096)
49af88f2bb [examples] ArmSimulation: Fix flaky test (#5093)
d56314f866 [wpiutil] Disable mock time on the Rio (#5092)
43975ac7cc [examples] ArmSimulation, ElevatorSimulation: Extract mechanism to class (#5052)
5483464158 [examples, templates] Improve descriptions (NFC) (#5051)
785e7dd85c [wpilibc] SendableChooser: static_assert copy- and default-constructibility (#5078)
e57ded8c39 [ntcore] Improve disconnect error reporting (#5085)
01f0394419 [wpinet] Revert WebSocket: When Close() is called, call closed immediately (#5084)
59be120982 [wpimath] Fix Pose3d exp()/log() and add rotation vector constructor to Rotation3d (#5072)
37f065032f [wpilib] Refactor TimedRobot tests (#5068)
22a170bee7 [wpilib] Add Notifier test (#5070)
2f310a748c [wpimath] Fix DCMotor.getSpeed() (#5061)
b43ec87f57 [wpilib] ElevatorSim: Fix WouldHitLimit methods (#5057)
19267bef0c [ntcore] Output warning on property set on unpublished topic (#5059)
84cbd48d84 [ntcore] Handle excludeSelf on SetDefault (#5058)
1f35750865 [cameraserver] Add GetInstance() to all functions (#5054)
8230fc631d [wpilib] Revert throw on nonexistent SimDevice name in SimDeviceSim (#5053)
b879a6f8c6 [wpinet] WebSocket: When Close() is called, call closed immediately (#5047)
49459d3e45 [ntcore] Change wire timeout to fixed 1 second (#5048)
4079eabe9b [wpimath] Discard stale pose estimates (#5045)
fe5d226a19 [glass] Fix option for debug-level NT logging (#5049)
b7535252c2 [ntcore] Don't leak buffers in rare WS shutdown case (#5046)
b61ac6db33 [ntcore] Add client disconnect function (#5022)
7b828ce84f [wpimath] Add nearest to Pose2d and Translation2d (#4882)
08a536291b [examples] Improvements to Elevator Simulation Example (#4937)
193a10d020 [wpigui] Limit frame rate to 120 fps by default (#5030)
7867bbde0e [wpilib] Clarify DS functions provided by FMS (NFC) (#5043)
fa7c01b598 [glass] Add option for debug-level NT logging (#5007)
2b81610248 [wpiutil] Add msgpack to datalog Python example (#5032)
a4a369b8da CONTRIBUTING.md: Add unicodeit CLI to math docs guidelines (#5031)
d991f6e435 [wpilib] Throw on nonexistent SimDevice name in SimDeviceSim constructor (#5041)
a27a047ae8 [hal] Check for null in getSimDeviceName JNI (#5038)
2f96cae31a [examples] Hatchbots: Add telemetry (#5011)
83ef8f9658 [simulation] GUI: Fix buffer overflow in joystick axes copy (#5036)
4054893669 [commands] Fix C++ Select() factory (#5024)
f75acd11ce [commands] Use Timer.restart() (#5023)
8bf67b1b33 [wpimath] PIDController::Calculate(double, double): update setpoint flag (#5021)
49bb1358d8 [wpiutil] MemoryBuffer: Fix GetMemoryBufferForStream (#5017)
9c4c07c0f9 [wpiutil] Remove NDEBUG check for debug-level logging (#5018)
1a47cc2e86 [ntcore] Use full handle when subscribing (#5013)
7cd30cffbc Ignore networktables.json (#5006)
92aecab2ef [commands] Command controllers are not subclasses (NFC) (#5000)
8785bba080 [ntcore] Special-case default timestamps (#5003)
9e5b7b8040 [ntcore] Handle topicsonly followed by value subscribe (#4991)
917906530a [wpilib] Add Timer::Restart() (#4963)
00aa66e4fd [wpimath] Remove extraneous assignments from DiscretizeAB() (#4967)
893320544a [examples] C++ RamseteCommand: Fix units (#4954)
b95d0e060d [wpilib] XboxController: Fix docs discrepancy (NFC) (#4993)
008232b43c [ntcore] Write empty persistent file if none found (#4996)
522be348f4 [examples] Rewrite tags (NFC) (#4961)
d48a83dee2 [wpimath] Update Wikipedia links for quaternion to Euler angle conversion (NFC) (#4995)
504fa22143 [wpimath] Workaround intellisense Eigen issue (#4992)
b2b25bf09f [commands] Fix docs inconsistency for toggleOnFalse(Command) (NFC) (#4978)
ce3dc4eb3b [hal] Properly use control word that is in sync with DS data (#4989)
1ea48caa7d [wpilib] Fix C++ ADXRS450 and Java SPI gyro defs (#4988)
fb101925a7 [build] Include wpimathjni in commands binaries (#4981)
657951f6dd [starter] Add a process starter for use by the installer for launching tools (#4931)
a60ca9d71c [examples] Update AprilTag field load API usage (#4975)
f8a45f1558 [wpimath] Remove print statements from tests (#4977)
ecba8b99a8 [examples] Fix swapped arguments in MecanumControllerCommand example (#4976)
e95e88fdf9 [examples] Add comment to drivedistanceoffboard example (#4877)
371d15dec3 [examples] Add Computer Vision Pose Estimation and Latency Compensation Example (#4901)
cb9b8938af [sim] Enable docking in the GUI (#4960)
3b084ecbe0 [apriltag] AprilTagFieldLayout: Improve API shape for loading builtin JSONs (#4949)
27ba096ea1 [wpilib] Fix MOI calculation error in SingleJointedArmSim (#4968)
42c997a3c4 [wpimath] Fix Pose3d exponential and clean up Pose3d logarithm (#4970)
5f1a025f27 [wpilibj] Fix typo in MecanumDrive docs (NFC) (#4969)
0ebf79b54c [wpimath] Fix typo in Pose3d::Exp() docs (NFC) (#4966)
a8c465f3fb [wpimath] HolonomicDriveController: Add getters for the controllers (#4948)
a7b1ab683d [wpilibc] Add unit test for fast deconstruction of GenericHID (#4953)
bd6479dc29 [build] Add Spotless for JSON (#4956)
5cb0340a8c [hal, wpilib] Load joystick values upon code initialization (#4950)
ab0e8c37a7 [readme] Update build requirements (NFC) (#4947)
b74ac1c645 [build] Add apriltag to C++ cmake example builds (#4944)
cf1a411acf [examples] Add example programs for AprilTags detection (#4932)
1e05b21ab5 [wpimath] Fix PID atSetpoint to not return true prematurely (#4906)
e5a6197633 [wpimath] Fix SwerveDriveKinematics not initializing a new array each time (#4942)
039edcc23f [ntcore] Queue current value on subscriber creation (#4938)
f7f19207e0 [wpimath] Allow multiple vision measurements from same timestamp (#4917)
befd12911c [commands] Delete UB-causing rvalue variants of CommandPtr methods (#4923)
34519de60a [commands] Fix spacing in command composition exception (#4924)
dc4355c031 [hal] Add handle constructor and name getters for sim devices (#4925)
53d8d33bca [hal, wpilibj] Add missing distance per pulse functions to EncoderSim (#4928)
530ae40614 [apriltag] Explain what April tag poses represent (NFC) (#4930)
79f565191e [examples] DigitalCommunication, I2CCommunication: Add tests (#4865)
2cd9be413f [wpilib, examples] Cleanup PotentiometerPID, Ultrasonic, UltrasonicPID examples (#4893)
babb0c1fcf [apriltag] Add 2023 field layout JSON (#4912)
330ba45f9c [wpimath] Fix swerve kinematics util classes equals function (#4907)
51272ef6b3 [fieldImages] Add 2023 field (#4915)
0d105ab771 [commands] Deduplicate command test utils (#4897)
cf4235ea36 [wpiutil] Guard MSVC pragma in SymbolExports.h (#4911)
2d4b7b9147 [build] Update opencv version in opencv.gradle (#4909)
aec6f3d506 [ntcore] Fix client flush behavior (#4903)
bfe346c76a [build] Fix cmake java resources (#4898)
Change-Id: Ia1dd90fe42c6cd5df281b8a5b710e136f54355f4
git-subtree-dir: third_party/allwpilib
git-subtree-split: f1a82828fed8950f9a3f1586c44327027627a0c8
Signed-off-by: James Kuszmaul <jabukuszmaul+collab@gmail.com>
diff --git a/wpilibcExamples/src/main/cpp/examples/examples.json b/wpilibcExamples/src/main/cpp/examples/examples.json
index aaec45d..8032909 100644
--- a/wpilibcExamples/src/main/cpp/examples/examples.json
+++ b/wpilibcExamples/src/main/cpp/examples/examples.json
@@ -1,14 +1,12 @@
[
{
"name": "Motor Control",
- "description": "Demonstrate controlling a single motor with a Joystick and displaying the net movement of the motor using an encoder.",
+ "description": "Control a single motor with a joystick, displaying the movement of the motor using an encoder.",
"tags": [
- "Robot and Motor",
- "Digital",
- "Sensors",
- "Actuators",
- "Joystick",
- "Complete List"
+ "Basic Robot",
+ "Encoder",
+ "SmartDashboard",
+ "Joystick"
],
"foldername": "MotorControl",
"gradlebase": "cpp",
@@ -16,11 +14,11 @@
},
{
"name": "Relay",
- "description": "Demonstrate controlling a Relay from Joystick buttons.",
+ "description": "Control a relay from joystick buttons.",
"tags": [
- "Actuators",
- "Joystick",
- "Complete List"
+ "Hardware",
+ "Relay",
+ "Joystick"
],
"foldername": "Relay",
"gradlebase": "cpp",
@@ -28,32 +26,40 @@
},
{
"name": "PDP CAN Monitoring",
- "description": "Demonstrate using CAN to monitor the voltage, current, and temperature in the Power Distribution Panel.",
+ "description": "Monitor Power Distribution data such as voltage, current, temperature, etc.",
"tags": [
- "Complete List",
- "CAN",
- "Sensors"
+ "Hardware",
+ "PDP",
+ "SmartDashboard"
],
"foldername": "CANPDP",
"gradlebase": "cpp",
"commandversion": 2
},
{
- "name":"Mechanism2d",
- "foldername":"Mechanism2d",
- "gradlebase":"cpp",
- "description":"An example usage of Mechanism2d to display mechanism states on a dashboard.",
- "tags":["Mechanism2d"],
+ "name": "Mechanism2d",
+ "foldername": "Mechanism2d",
+ "gradlebase": "cpp",
+ "description": "Display mechanism states on a dashboard with Mechanism2d.",
+ "tags": [
+ "Basic Robot",
+ "Elevator",
+ "Arm",
+ "Analog",
+ "Joystick",
+ "SmartDashboard",
+ "Mechanism2d"
+ ],
"commandversion": 2
},
{
"name": "Solenoids",
- "description": "Demonstrate controlling a single and double solenoid from Joystick buttons.",
+ "description": "Control a single and double solenoid from joystick buttons.",
"tags": [
- "Actuators",
+ "Hardware",
"Joystick",
- "Pneumatics",
- "Complete List"
+ "Shuffleboard",
+ "Pneumatics"
],
"foldername": "Solenoid",
"gradlebase": "cpp",
@@ -61,11 +67,11 @@
},
{
"name": "Encoder",
- "description": "Demonstrate displaying the value of a quadrature encoder on the SmartDashboard.",
+ "description": "View values from a quadrature encoder.",
"tags": [
- "Complete List",
- "Digital",
- "Sensors"
+ "Hardware",
+ "Encoder",
+ "SmartDashboard"
],
"foldername": "Encoder",
"gradlebase": "cpp",
@@ -73,8 +79,10 @@
},
{
"name": "EventLoop",
- "description": "Demonstrate managing a ball system using EventLoop and BooleanEvent.",
+ "description": "Manage a ball system using EventLoop and BooleanEvent.",
"tags": [
+ "Basic Robot",
+ "Flywheel",
"EventLoop"
],
"foldername": "EventLoop",
@@ -83,12 +91,11 @@
},
{
"name": "Arcade Drive",
- "description": "An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class",
+ "description": "Control a differential drivetrain with single-joystick arcade drive in teleop.",
"tags": [
- "Getting Started with C++",
- "Robot and Motor",
- "Joystick",
- "Complete List"
+ "Basic Robot",
+ "Differential Drive",
+ "Joystick"
],
"foldername": "ArcadeDrive",
"gradlebase": "cpp",
@@ -96,12 +103,11 @@
},
{
"name": "Tank Drive",
- "description": "An example program which demonstrates the use of Tank Drive with the DifferentialDrive class",
+ "description": "Control a differential drive with twin-joystick tank drive in teleop.",
"tags": [
- "Getting Started with C++",
- "Robot and Motor",
- "Joystick",
- "Complete List"
+ "Basic Robot",
+ "Differential Drive",
+ "Joystick"
],
"foldername": "TankDrive",
"gradlebase": "cpp",
@@ -109,12 +115,11 @@
},
{
"name": "Mecanum Drive",
- "description": "An example program which demonstrates the use of Mecanum Drive with the MecanumDrive class",
+ "description": "Control a mecanum drivetrain with a joystick in teleop.",
"tags": [
- "Getting Started with C++",
- "Robot and Motor",
- "Joystick",
- "Complete List"
+ "Basic Robot",
+ "Mecanum Drive",
+ "Joystick"
],
"foldername": "MecanumDrive",
"gradlebase": "cpp",
@@ -122,12 +127,12 @@
},
{
"name": "Ultrasonic",
- "description": "Demonstrate maintaining a set distance using an ultrasonic sensor.",
+ "description": "View values from a ping-response ultrasonic sensor.",
"tags": [
- "Robot and Motor",
- "Complete List",
- "Sensors",
- "Analog"
+ "Hardware",
+ "Ultrasonic",
+ "SmartDashboard",
+ "Shuffleboard"
],
"foldername": "Ultrasonic",
"gradlebase": "cpp",
@@ -135,12 +140,12 @@
},
{
"name": "UltrasonicPID",
- "description": "Demonstrate maintaining a set distance using an ultrasonic sensor and PID control.",
+ "description": "Maintain a set distance from an obstacle with an ultrasonic sensor and PID control.",
"tags": [
- "Robot and Motor",
- "Complete List",
- "Sensors",
- "Analog"
+ "Basic Robot",
+ "Ultrasonic",
+ "PID",
+ "Differential Drive"
],
"foldername": "UltrasonicPID",
"gradlebase": "cpp",
@@ -148,11 +153,12 @@
},
{
"name": "Gyro",
- "description": "An example program showing how to drive straight with using a gyro sensor.",
+ "description": "Drive a differential drive straight with a gyro sensor.",
"tags": [
- "Robot and Motor",
- "Complete List",
- "Sensors",
+ "Basic Robot",
+ "Differential Drive",
+ "PID",
+ "Gyro",
"Analog",
"Joystick"
],
@@ -162,11 +168,11 @@
},
{
"name": "Gyro Mecanum",
- "description": "An example program showing how to perform mecanum drive with field oriented controls.",
+ "description": "Drive a mecanum drivetrain using field-oriented controls with a joystick.",
"tags": [
- "Robot and Motor",
- "Complete List",
- "Sensors",
+ "Basic Robot",
+ "Mecanum Drive",
+ "Gyro",
"Analog",
"Joystick"
],
@@ -176,9 +182,10 @@
},
{
"name": "HID Rumble",
- "description": "An example program showing how to make human interface devices rumble.",
+ "description": "Make human interface devices (HID) rumble.",
"tags": [
- "Joystick"
+ "Hardware",
+ "XboxController"
],
"foldername": "HidRumble",
"gradlebase": "cpp",
@@ -186,25 +193,40 @@
},
{
"name": "PotentiometerPID",
- "description": "An example to demonstrate the use of a potentiometer and PID control to reach elevator position setpoints.",
+ "description": "Maintain elevator position setpoints with a potentiometer and PID control.",
"tags": [
- "Joystick",
- "Actuators",
- "Complete List",
- "Sensors",
- "Analog"
+ "Basic Robot",
+ "Analog",
+ "Elevator",
+ "PID",
+ "Joystick"
],
"foldername": "PotentiometerPID",
"gradlebase": "cpp",
"commandversion": 2
},
{
- "name": "Elevator with trapezoid profiled PID",
- "description": "An example to demonstrate the use of an encoder and trapezoid profiled PID control to reach elevator position setpoints.",
+ "name": "Elevator with exponential profiled PID",
+ "description": "Reach elevator position setpoints with exponential profiles and smart motor controller PID.",
"tags": [
- "Digital",
- "Sensors",
- "Actuators",
+ "Basic Robot",
+ "Elevator",
+ "Exponential Profile",
+ "Smart Motor Controller",
+ "Joystick"
+ ],
+ "foldername": "ElevatorExponentialProfile",
+ "gradlebase": "cpp",
+ "commandversion": 2
+ },
+ {
+ "name": "Elevator with trapezoid profiled PID",
+ "description": "Reach elevator position setpoints with trapezoid profiles and smart motor controller PID.",
+ "tags": [
+ "Basic Robot",
+ "Elevator",
+ "Trapezoid Profile",
+ "Smart Motor Controller",
"Joystick"
],
"foldername": "ElevatorTrapezoidProfile",
@@ -213,11 +235,11 @@
},
{
"name": "Elevator with profiled PID controller",
- "description": "An example to demonstrate the use of an encoder and trapezoid profiled PID control to reach elevator position setpoints.",
+ "description": "Reach elevator position setpoints with an encoder and profiled PID control.",
"tags": [
- "Digital",
- "Sensors",
- "Actuators",
+ "Basic Robot",
+ "Elevator",
+ "Profiled PID",
"Joystick"
],
"foldername": "ElevatorProfiledPID",
@@ -226,10 +248,9 @@
},
{
"name": "Getting Started",
- "description": "An example program which demonstrates the simplest autonomous and teleoperated routines.",
+ "description": "A differential-drive robot with split-stick Xbox arcade drive with a simple time-based autonomous.",
"tags": [
- "Getting Started with C++",
- "Complete List"
+ "Basic Robot"
],
"foldername": "GettingStarted",
"gradlebase": "cpp",
@@ -237,10 +258,9 @@
},
{
"name": "Simple Vision",
- "description": "The minimal program to acquire images from an attached USB camera on the robot and send them to the dashboard.",
+ "description": "Use the CameraServer class to stream from a USB Webcam without processing the images.",
"tags": [
- "Vision",
- "Complete List"
+ "Vision"
],
"foldername": "QuickVision",
"gradlebase": "cpp",
@@ -248,19 +268,30 @@
},
{
"name": "Intermediate Vision",
- "description": "An example program that acquires images from an attached USB camera and adds some annotation to the image as you might do for showing operators the result of some image recognition, and sends it to the dashboard for display.",
+ "description": "Acquire images from an attached USB camera and add some annotation to the image (as you might do for showing operators the result of some image recognition) and send it to the dashboard for display.",
"tags": [
- "Vision",
- "Complete List"
+ "Vision"
],
"foldername": "IntermediateVision",
"gradlebase": "cpp",
"commandversion": 2
},
{
- "name": "I2C Communication",
- "description": "An example program that communicates with external devices (such as an Arduino) using the roboRIO's I2C port",
+ "name": "AprilTags Vision",
+ "description": "On-roboRIO detection of AprilTags using an attached USB camera.",
"tags": [
+ "Vision",
+ "AprilTags"
+ ],
+ "foldername": "AprilTagsVision",
+ "gradlebase": "cpp",
+ "commandversion": 2
+ },
+ {
+ "name": "I2C Communication",
+ "description": "Communicate with external devices (such as an Arduino) using the roboRIO's I2C port.",
+ "tags": [
+ "Hardware",
"I2C"
],
"foldername": "I2CCommunication",
@@ -269,21 +300,20 @@
},
{
"name": "Digital Communication Sample",
- "description": "An example program that communicates with external devices (such as an Arduino) using the roboRIO's DIO",
+ "description": "Communicates with external devices (such as an Arduino) using the roboRIO's DIO.",
"tags": [
- "Digital"
+ "Hardware",
+ "Digital Output"
],
"foldername": "DigitalCommunication",
"gradlebase": "cpp",
"commandversion": 2
},
-
{
"name": "Axis Camera Sample",
- "description": "An example program that acquires images from an Axis network camera and adds some annotation to the image as you might do for showing operators the result of some image recognition, and sends it to the dashboard for display. This demonstrates the use of the AxisCamera class.",
+ "description": "Acquire images from an Axis network camera and adds some annotation to the image (as you might do for showing operators the result of some image recognition), and sends it to the dashboard for display.",
"tags": [
- "Vision",
- "Complete List"
+ "Vision"
],
"foldername": "AxisCameraSample",
"gradlebase": "cpp",
@@ -291,10 +321,17 @@
},
{
"name": "GearsBot",
- "description": "A fully functional example CommandBased program for WPIs GearsBot robot, using the new command-based framework. This code can run on your computer if it supports simulation.",
+ "description": "A fully functional Command-Based program for WPI's GearsBot robot.",
"tags": [
- "CommandBased Robot",
- "Complete List"
+ "Complete Robot",
+ "Command-based",
+ "Differential Drive",
+ "Elevator",
+ "Arm",
+ "Analog",
+ "Digital Input",
+ "SmartDashboard",
+ "XboxController"
],
"foldername": "GearsBot",
"gradlebase": "cpp",
@@ -302,8 +339,9 @@
},
{
"name": "HAL",
- "description": "A program created using the HAL exclusively. This example is for advanced users",
+ "description": "Use the low-level HAL C functions. This example is for advanced users.",
"tags": [
+ "Basic Robot",
"HAL"
],
"foldername": "HAL",
@@ -311,10 +349,15 @@
"commandversion": 2
},
{
- "name": "ShuffleBoard",
- "description": "An example program that uses ShuffleBoard with its Widgets and Tabs.",
+ "name": "Shuffleboard",
+ "description": "Present various data via the Shuffleboard API.",
"tags": [
- "ShuffleBoard"
+ "Basic Robot",
+ "Differential Drive",
+ "Elevator",
+ "Analog",
+ "Encoder",
+ "Shuffleboard"
],
"foldername": "ShuffleBoard",
"gradlebase": "cpp",
@@ -322,10 +365,17 @@
},
{
"name": "'Traditional' Hatchbot",
- "description": "A fully-functional command-based hatchbot for the 2019 game using the new command framework. Written in the 'traditional' style, i.e. commands are given their own classes.",
+ "description": "A fully-functional command-based hatchbot for the 2019 game, written in the 'traditional' style, i.e. commands are given their own classes.",
"tags": [
- "Complete robot",
- "Command-based"
+ "Complete Robot",
+ "Command-based",
+ "Differential Drive",
+ "Encoder",
+ "Shuffleboard",
+ "Sendable",
+ "DataLog",
+ "Pneumatics",
+ "XboxController"
],
"foldername": "HatchbotTraditional",
"gradlebase": "cpp",
@@ -333,11 +383,17 @@
},
{
"name": "'Inlined' Hatchbot",
- "description": "A fully-functional command-based hatchbot for the 2019 game using the new command framework. Written in the 'inlined' style, i.e. many commands are defined inline with lambdas.",
+ "description": "A fully-functional command-based hatchbot for the 2019 game, written in the 'inlined' style, i.e. many commands are defined inline with lambdas.",
"tags": [
- "Complete robot",
+ "Complete Robot",
"Command-based",
- "Lambdas"
+ "Differential Drive",
+ "Encoder",
+ "Shuffleboard",
+ "Sendable",
+ "DataLog",
+ "Pneumatics",
+ "PS4Controller"
],
"foldername": "HatchbotInlined",
"gradlebase": "cpp",
@@ -345,11 +401,18 @@
},
{
"name": "Rapid React Command Bot",
- "description": "A fully-functional command-based fender bot for the 2022 game using the new command framework.",
+ "description": "A fully-functional command-based fender bot for the 2022 game, written in the 'inlined' style, i.e. many commands are defined inline with lambdas.",
"tags": [
- "Complete robot",
+ "Complete Robot",
"Command-based",
- "Lambdas"
+ "Differential Drive",
+ "Intake",
+ "Flywheel",
+ "Encoder",
+ "Pneumatics",
+ "Digital Input",
+ "PID",
+ "XboxController"
],
"foldername": "RapidReactCommandBot",
"gradlebase": "cpp",
@@ -357,7 +420,7 @@
},
{
"name": "Select Command Example",
- "description": "An example showing how to use the SelectCommand class from the new command framework.",
+ "description": "Use SelectCommand to select an autonomous routine.",
"tags": [
"Command-based"
],
@@ -366,21 +429,15 @@
"commandversion": 2
},
{
- "name": "Scheduler Event Logging",
- "description": "An example showing how to use Shuffleboard to log Command events from the CommandScheduler in the new command framework",
- "tags": [
- "Command-based",
- "Shuffleboard"
- ],
- "foldername": "SchedulerEventLogging",
- "gradlebase": "cpp",
- "commandversion": 2
- },
- {
"name": "Frisbeebot",
- "description": "An example robot project for a simple frisbee shooter for the 2013 FRC game, Ultimate Ascent, demonstrating use of PID functionality in the command framework",
+ "description": "A simple frisbee shooter for the 2013 game, demonstrating use of PIDSubsystem.",
"tags": [
+ "Complete Robot",
"Command-based",
+ "Differential Drive",
+ "Flywheel",
+ "Encoder",
+ "XboxController",
"PID"
],
"foldername": "Frisbeebot",
@@ -389,10 +446,14 @@
},
{
"name": "Gyro Drive Commands",
- "description": "An example command-based robot project demonstrating simple PID functionality utilizing a gyroscope to keep a robot driving straight and to turn to specified angles.",
+ "description": "Control a robot's angle with PID and a gyro, in command-based.",
"tags": [
"Command-based",
+ "Differential Drive",
+ "Encoder",
+ "PS4Controller",
"PID",
+ "Profiled PID",
"Gyro"
],
"foldername": "GyroDriveCommands",
@@ -401,9 +462,13 @@
},
{
"name": "SwerveBot",
- "description": "An example program for a swerve drive that uses swerve drive kinematics and odometry.",
+ "description": "Use kinematics and odometry with a swerve drive.",
"tags": [
- "SwerveBot"
+ "Swerve Drive",
+ "Odometry",
+ "XboxController",
+ "Gyro",
+ "Encoder"
],
"foldername": "SwerveBot",
"gradlebase": "cpp",
@@ -411,9 +476,13 @@
},
{
"name": "MecanumBot",
- "description": "An example program for a mecanum drive that uses mecanum drive kinematics and odometry.",
+ "description": "Use kinematics and odometry with a mecanum drive.",
"tags": [
- "MecanumBot"
+ "Mecanum Drive",
+ "Odometry",
+ "Encoder",
+ "Gyro",
+ "XboxController"
],
"foldername": "MecanumBot",
"gradlebase": "cpp",
@@ -421,9 +490,13 @@
},
{
"name": "DifferentialDriveBot",
- "description": "An example program for a differential drive that uses differential drive kinematics and odometry.",
+ "description": "Use kinematics and odometry with a differential drive.",
"tags": [
- "DifferentialDriveBot"
+ "Differential Drive",
+ "Odometry",
+ "Encoder",
+ "Gyro",
+ "XboxController"
],
"foldername": "DifferentialDriveBot",
"gradlebase": "cpp",
@@ -431,13 +504,17 @@
},
{
"name": "RamseteCommand",
- "description": "An example command-based robot demonstrating the use of a RamseteCommand to follow a pregenerated trajectory.",
+ "description": "Follow a pre-generated trajectory with a differential drive using RamseteCommand.",
"tags": [
- "RamseteCommand",
- "PID",
+ "Differential Drive",
+ "Command-based",
"Ramsete",
"Trajectory",
- "Path following"
+ "Path Following",
+ "Odometry",
+ "Encoder",
+ "Gyro",
+ "XboxController"
],
"foldername": "RamseteCommand",
"gradlebase": "cpp",
@@ -445,12 +522,11 @@
},
{
"name": "Arcade Drive Xbox Controller",
- "description": "An example program which demonstrates the use of Arcade Drive with the DifferentialDrive class and an Xbox Controller.",
+ "description": "Control a differential drive with split-stick arcade drive in teleop.",
"tags": [
- "Getting Started with C++",
- "Robot and Motor",
- "XboxController",
- "Complete List"
+ "Basic Robot",
+ "Differential Drive",
+ "XboxController"
],
"foldername": "ArcadeDriveXboxController",
"gradlebase": "cpp",
@@ -458,12 +534,11 @@
},
{
"name": "Tank Drive Xbox Controller",
- "description": "An example program which demonstrates the use of Tank Drive with the DifferentialDrive class and an Xbox Controller.",
+ "description": "Control a differential drive with Xbox tank drive in teleop.",
"tags": [
- "Getting Started with C++",
- "Robot and Motor",
- "XboxController",
- "Complete List"
+ "Basic Robot",
+ "Differential Drive",
+ "XboxController"
],
"foldername": "TankDriveXboxController",
"gradlebase": "cpp",
@@ -471,9 +546,12 @@
},
{
"name": "Duty Cycle Encoder",
- "description": "Demonstrates the use of the Duty Cycle Encoder class",
+ "description": "View values from a duty-cycle encoder.",
"tags": [
- "Getting Started with C++"
+ "Hardware",
+ "Duty Cycle",
+ "Encoder",
+ "SmartDashboard"
],
"foldername": "DutyCycleEncoder",
"gradlebase": "cpp",
@@ -481,9 +559,11 @@
},
{
"name": "Duty Cycle Input",
- "description": "Demonstrates the use of the Duty Cycle class",
+ "description": "View duty-cycle input.",
"tags": [
- "Getting Started with C++"
+ "Hardware",
+ "Duty Cycle",
+ "SmartDashboard"
],
"foldername": "DutyCycleInput",
"gradlebase": "cpp",
@@ -491,9 +571,11 @@
},
{
"name": "Addressable LED",
- "description": "Demonstrates the use of the Addressable LED class",
+ "description": "Display a rainbow pattern on an addressable LED strip.",
"tags": [
- "Getting Started with C++"
+ "Hardware",
+ "Basic Robot",
+ "AddressableLEDs"
],
"foldername": "AddressableLED",
"gradlebase": "cpp",
@@ -501,9 +583,11 @@
},
{
"name": "DMA",
- "description": "Demonstrates the use of the DMA class",
+ "description": "Read various sensors using DMA.",
"tags": [
- "Advanced C++"
+ "Hardware",
+ "DMA",
+ "SmartDashboard"
],
"foldername": "DMA",
"gradlebase": "cpp",
@@ -511,13 +595,16 @@
},
{
"name": "MecanumControllerCommand",
- "description": "An example command-based robot demonstrating the use of a MecanumControllerCommand to follow a pregenerated trajectory.",
+ "description": "Follow a pre-generated trajectory with a mecanum drive using MecanumControllerCommand.",
"tags": [
- "MecanumControllerCommand",
- "Mecanum",
- "PID",
+ "Command-based",
+ "Mecanum Drive",
+ "Gyro",
+ "Encoder",
+ "Odometry",
"Trajectory",
- "Path following"
+ "Path Following",
+ "XboxController"
],
"foldername": "MecanumControllerCommand",
"gradlebase": "cpp",
@@ -525,13 +612,16 @@
},
{
"name": "SwerveControllerCommand",
- "description": "An example command-based robot demonstrating the use of a SwerveControllerCommand to follow a pregenerated trajectory.",
+ "description": "Follow a pre-generated trajectory with a swerve drive using SwerveControllerCommand.",
"tags": [
- "SwerveControllerCommand",
- "Swerve",
- "PID",
+ "Command-based",
+ "Swerve Drive",
+ "Gyro",
+ "Encoder",
+ "Odometry",
"Trajectory",
- "Path following"
+ "Path Following",
+ "XboxController"
],
"foldername": "SwerveControllerCommand",
"gradlebase": "cpp",
@@ -539,11 +629,14 @@
},
{
"name": "ArmBot",
- "description": "An example command-based robot demonstrating the use of a ProfiledPIDSubsystem to control an arm.",
+ "description": "Control an arm with ProfiledPIDSubsystem.",
"tags": [
- "ArmBot",
- "PID",
- "Motion Profile"
+ "Command-based",
+ "Arm",
+ "Encoder",
+ "Profiled PID",
+ "XboxController",
+ "Differential Drive"
],
"foldername": "ArmBot",
"gradlebase": "cpp",
@@ -551,11 +644,14 @@
},
{
"name": "ArmBotOffboard",
- "description": "An example command-based robot demonstrating the use of a TrapezoidProfileSubsystem to control an arm with an offboard PID.",
+ "description": "Control an arm with TrapezoidProfileSubsystem and smart motor controller PID.",
"tags": [
- "ArmBotOffboard",
- "PID",
- "Motion Profile"
+ "Command-based",
+ "Arm",
+ "Smart Motor Controller",
+ "Trapezoid Profile",
+ "XboxController",
+ "Differential Drive"
],
"foldername": "ArmBotOffboard",
"gradlebase": "cpp",
@@ -563,11 +659,13 @@
},
{
"name": "DriveDistanceOffboard",
- "description": "An example command-based robot demonstrating the use of a TrapezoidProfileCommand to drive a robot a set distance with offboard PID on the drive.",
+ "description": "Drive a differential drivetrain a set distance using TrapezoidProfileCommand and smart motor controller PID.",
"tags": [
- "DriveDistance",
- "PID",
- "Motion Profile"
+ "Command-based",
+ "Differential Drive",
+ "Trapezoid Profile",
+ "Smart Motor Controller",
+ "XboxController"
],
"foldername": "DriveDistanceOffboard",
"gradlebase": "cpp",
@@ -575,9 +673,16 @@
},
{
"name": "RamseteController",
- "description": "An example robot demonstrating the use of RamseteController.",
+ "description": "Follow a pre-generated trajectory with a differential drive using RamseteController.",
"tags": [
- "RamseteController"
+ "Basic Robot",
+ "Differential Drive",
+ "Ramsete",
+ "PID",
+ "Odometry",
+ "Path Following",
+ "Trajectory",
+ "XboxController"
],
"foldername": "RamseteController",
"gradlebase": "cpp",
@@ -587,24 +692,45 @@
"name": "RomiReference",
"description": "An example command-based robot program that can be used with the Romi reference robot design.",
"tags": [
- "Drivetrain",
- "Romi"
+ "Romi",
+ "Command-based",
+ "Differential Drive",
+ "Digital Input",
+ "Joystick"
],
"foldername": "RomiReference",
"gradlebase": "cppromi",
- "commandversion": 2
+ "commandversion": 2,
+ "extravendordeps": [
+ "romi"
+ ]
+ },
+ {
+ "name": "XRP Reference",
+ "description": "An example command-based robot program that can be used with the XRP reference robot design.",
+ "tags": [
+ "XRP",
+ "Command-based",
+ "Differential Drive",
+ "Digital Input",
+ "Joystick"
+ ],
+ "foldername": "XRPReference",
+ "gradlebase": "cppxrp",
+ "commandversion": 2,
+ "extravendordeps": [
+ "xrp"
+ ]
},
{
"name": "StateSpaceFlywheel",
- "description": "An example state-space controller for a flywheel.",
+ "description": "Control a flywheel using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
"tags": [
- "StateSpaceFlywheel",
+ "Basic Robot",
"Flywheel",
- "State Space",
- "Model",
- "Digital",
- "Sensors",
- "Actuators",
+ "State-Space",
+ "LQR",
+ "Encoder",
"Joystick"
],
"foldername": "StateSpaceFlywheel",
@@ -613,16 +739,14 @@
},
{
"name": "StateSpaceFlywheelSysId",
- "description": "An example state-space controller demonstrating the use of FRC Characterization's System Identification for controlling a flywheel.",
+ "description": "Control a flywheel using a state-space model (based on values from SysId), with a Kalman Filter and LQR.",
"tags": [
- "StateSpaceFlywheelSysId",
- "FRC Characterization",
+ "Basic Robot",
"Flywheel",
- "Characterization",
- "State space",
- "Digital",
- "Sensors",
- "Actuators",
+ "SysId",
+ "State-Space",
+ "LQR",
+ "Encoder",
"Joystick"
],
"foldername": "StateSpaceFlywheelSysId",
@@ -631,13 +755,13 @@
},
{
"name": "StateSpaceElevator",
- "description": "An example state-space controller for controlling an elevator.",
+ "description": "Control an elevator using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
"tags": [
+ "Basic Robot",
"Elevator",
- "State Space",
- "Digital",
- "Sensors",
- "Actuators",
+ "State-Space",
+ "LQR",
+ "Encoder",
"Joystick"
],
"foldername": "StateSpaceElevator",
@@ -646,13 +770,13 @@
},
{
"name": "StateSpaceArm",
- "description": "An example state-space controller for controlling an arm.",
+ "description": "Control an arm using a state-space model (based on values from CAD), with a Kalman Filter and LQR.",
"tags": [
+ "Basic Robot",
"Arm",
- "State space",
- "Digital",
- "Sensors",
- "Actuators",
+ "State-Space",
+ "LQR",
+ "Encoder",
"Joystick"
],
"foldername": "StateSpaceArm",
@@ -661,30 +785,44 @@
},
{
"name": "ElevatorSimulation",
- "description": "Demonstrates the use of physics simulation with a simple elevator.",
+ "description": "Simulate an elevator.",
"tags": [
+ "Basic Robot",
"Elevator",
- "State space",
- "Digital",
- "Sensors",
+ "State-Space",
"Simulation",
- "Physics",
- "Mechanism2d"
+ "Mechanism2d",
+ "Profiled PID"
],
"foldername": "ElevatorSimulation",
"gradlebase": "cpp",
"commandversion": 2
},
{
- "name": "DifferentialDrivePoseEstimator",
- "description": "Demonstrates the use of the DifferentialDrivePoseEstimator as a replacement for differential drive odometry.",
+ "name": "Elevator Exponential Profile Simulation",
+ "description": "Simulate an elevator.",
"tags": [
- "Drivetrain",
- "State space",
+ "Basic Robot",
+ "Elevator",
+ "State-Space",
+ "Simulation",
+ "Mechanism2d",
+ "Profiled PID"
+ ],
+ "foldername": "ElevatorExponentialSimulation",
+ "gradlebase": "cpp",
+ "commandversion": 2
+ },
+ {
+ "name": "DifferentialDrivePoseEstimator",
+ "description": "Combine differential-drive odometry with vision data using DifferentialDrivePoseEstimator.",
+ "tags": [
+ "Differential Drive",
+ "State-Space",
+ "Pose Estimator",
"Vision",
- "Filter",
- "Odometry",
- "Pose"
+ "PID",
+ "XboxController"
],
"foldername": "DifferentialDrivePoseEstimator",
"gradlebase": "cpp",
@@ -692,14 +830,14 @@
},
{
"name": "MecanumDrivePoseEstimator",
- "description": "Demonstrates the use of the MecanumDrivePoseEstimator as a replacement for mecanum odometry.",
+ "description": "Combine mecanum-drive odometry with vision data using MecanumDrivePoseEstimator.",
"tags": [
- "Drivetrain",
- "State space",
+ "Mecanum Drive",
+ "State-Space",
+ "Pose Estimator",
"Vision",
- "Filter",
- "Odometry",
- "Pose"
+ "PID",
+ "XboxController"
],
"foldername": "MecanumDrivePoseEstimator",
"gradlebase": "cpp",
@@ -707,14 +845,12 @@
},
{
"name": "ArmSimulation",
- "description": "Demonstrates the use of physics simulation with a simple single-jointed arm.",
+ "description": "Simulate a single-jointed arm.",
"tags": [
+ "Basic Robot",
"Arm",
- "State space",
- "Digital",
- "Sensors",
+ "State-Space",
"Simulation",
- "Physics",
"Mechanism2d",
"Preferences"
],
@@ -724,26 +860,28 @@
},
{
"name": "UnitTesting",
- "description": "Demonstrates basic unit testing for a robot project.",
+ "description": "Test a robot project with basic unit tests in simulation.",
"tags": [
- "Testing"
+ "Intake",
+ "Pneumatics"
],
"foldername": "UnitTest",
"gradlebase": "cpp",
- "commandversion": 2
+ "commandversion": 2,
+ "hasunittests": true
},
{
"name": "SimpleDifferentialDriveSimulation",
- "description": "An example of a minimal drivetrain simulation project without the command-based library.",
+ "description": "Simulate a differential drivetrain and follow trajectories with RamseteController (non-command-based).",
"tags": [
"Differential Drive",
- "State space",
- "Digital",
- "Sensors",
- "Simulation",
- "Physics",
- "Drivetrain",
- "Field2d"
+ "State-Space",
+ "Ramsete",
+ "Path Following",
+ "Trajectory",
+ "Encoder",
+ "XboxController",
+ "Simulation"
],
"foldername": "SimpleDifferentialDriveSimulation",
"gradlebase": "cpp",
@@ -751,16 +889,13 @@
},
{
"name": "StateSpaceDriveSimulation",
- "description": "Demonstrates the use of physics simulation with a differential drivetrain and the Field2d class.",
+ "description": "Simulate a differential drivetrain and follow trajectories with RamseteCommand (command-based).",
"tags": [
+ "Command-based",
"Differential Drive",
- "State space",
- "Digital",
- "Sensors",
- "Simulation",
- "Physics",
- "Drivetrain",
- "Field2d"
+ "State-Space",
+ "XboxController",
+ "Simulation"
],
"foldername": "StateSpaceDifferentialDriveSimulation",
"gradlebase": "cpp",
@@ -768,18 +903,29 @@
},
{
"name": "SwerveDrivePoseEstimator",
- "description": "Demonstrates the use of the SwerveDrivePoseEstimator as a replacement for mecanum drive odometry.",
+ "description": "Combine swerve-drive odometry with vision data using SwerveDrivePoseEstimator.",
"tags": [
- "Drivetrain",
- "State space",
+ "Swerve Drive",
+ "State-Space",
+ "Pose Estimator",
"Vision",
- "Filter",
- "Odometry",
- "State",
- "Swerve"
+ "PID",
+ "XboxController"
],
"foldername": "SwerveDrivePoseEstimator",
"gradlebase": "cpp",
"commandversion": 2
+ },
+ {
+ "name": "Flywheel BangBangController",
+ "description": "A sample program to demonstrate the use of a BangBangController with a flywheel to control RPM",
+ "tags": [
+ "Flywheel",
+ "Simulation",
+ "Joystick"
+ ],
+ "foldername": "FlywheelBangBangController",
+ "gradlebase": "cpp",
+ "commandversion": 2
}
]