Tyler Veness
91002ae3cc
[wpimath] Upgrade to Drake 1.6.0 ( #4361 )
2022-08-18 14:03:28 -07:00
Tyler Veness
ac9be78e27
Use stricter C++ type conversions ( #4357 )
...
Now, implicit narrowing conversions are only used with wpi::Now(). This
also fixes clang-tidy warnings about C-style casts. For example:
```
== clang-tidy /__w/allwpilib/allwpilib/wpilibNewCommands/src/main/native/include/frc2/command/SwerveControllerCommand.inc ==
/__w/allwpilib/allwpilib/wpilibNewCommands/src/main/native/include/frc2/command/SwerveControllerCommand.inc:95:18: warning: C-style casts are discouraged; use static_cast/const_cast/reinterpret_cast [google-readability-casting]
auto curTime = units::second_t(m_timer.Get());
^
```
In that case at least, the cast was removed entirely since Get() already
returns a units::second_t.
2022-08-17 13:42:36 -07:00
Tyler Veness
151dabb2af
[wpiutil] Upgrade to fmt 9.0.0 ( #4337 )
...
fmt removed fmt::make_args_checked since it's no longer needed for
constexpr format string checks.
fmt deprecated implicit conversions from enums to integers in format
arguments, so I added explicit static casts.
2022-08-16 15:35:26 -07:00
Tyler Veness
c5db23f296
[wpimath] Add Eigen sparse matrix and iterative solver support ( #4349 )
...
These are useful for efficiently solving huge, but sparse systems of
equations that occur often in optimization problems.
2022-08-13 18:32:02 -07:00
Tyler Veness
3fdb2f767d
[wpimath] Add comments with Ramsete equations ( #4348 )
2022-08-11 07:09:16 -07:00
Tyler Veness
3ccf806064
[wpimath] Remove redundant LinearFilter.finiteDifference() argument ( #4335 )
...
The number of samples is already determined by the length of the stencil
list.
2022-07-22 12:50:30 -05:00
Tyler Veness
6f1e01f8bd
[wpimath] Document example of online filtering for LinearFilter.finiteDifference() ( #4336 )
2022-07-22 12:46:33 -05:00
Tyler Veness
add00a96ed
[wpimath] Improve DifferentialDriveAccelerationLimiter docs (NFC) ( #4323 )
...
Defined trackwidth, added skipped steps to the algorithm's internal
proof, and grouped the algorithm steps more logically with blank lines.
2022-07-01 06:43:57 -07:00
Tyler Veness
82fac41244
[wpimath] Better document trackwidth parameters (NFC) ( #4324 )
2022-07-01 06:42:49 -07:00
Tyler Veness
9b1bf5c7f1
[wpimath] Move Drake and Eigen to thirdparty folders ( #4307 )
2022-06-11 21:07:15 -07:00
Connor Worley
a99c11c14c
[wpimath] Replace UKF implementation with square root form ( #4168 )
...
Co-authored-by: Tyler Veness <calcmogul@gmail.com >
2022-06-08 22:19:01 -07:00
Starlight220
f2d243fa68
[build] Change defaults for Java lints ( #4300 )
...
Removes the need to individually suppress the "serial" warning.
2022-06-06 17:06:43 -07:00
Prateek Machiraju
fc37265da5
[wpimath] Add angle measurement convention to ArmFeedforward docs (NFC) ( #4285 )
2022-06-02 21:22:47 -07:00
Prateek Machiraju
d9f9cd1140
[wpimath] Reset prev_time on pose estimator reset ( #4283 )
2022-06-02 21:21:42 -07:00
Tyler Veness
be2fedfe50
[wpimath] Add stdexcept include for std::invalid_argument (IWYU) ( #4274 )
2022-05-29 15:33:19 -07:00
Tyler Veness
96ebdcaf16
[wpimath] Remove unused Eigen AutoDiff module ( #4267 )
...
Drake's tests used to include it, but it's commented out since it's not
used.
2022-05-26 09:01:45 -07:00
PJ Reiniger
c3b223ce60
[wpiutil] Vendor llvm and update to 13.0.0 ( #4224 )
2022-05-20 15:59:53 -07:00
Tyler Veness
5aa67f56e6
[wpimath] Clean up math comments ( #4252 )
2022-05-20 15:16:56 -07:00
Tyler Veness
fff4d1f44e
[wpimath] Extend Eigen warning suppression to GCC 12 ( #4251 )
...
It originally only applied to GCC 11. The CMake build passed without
this change, but not the Gradle build.
2022-05-19 18:50:29 -07:00
Tyler Veness
0d9956273c
[wpimath] Add CoordinateSystem.convert() translation and rotation overloads ( #4227 )
2022-05-18 20:41:15 -07:00
Tyler Veness
6a4752dcdc
Fix GCC 12.1 warning false positives ( #4246 )
2022-05-18 12:22:10 -07:00
Tyler Veness
5876b40f08
[wpimath] Memoize CoordinateSystem and CoordinateAxis statics ( #4241 )
2022-05-18 10:47:46 -07:00
Max Gordon
a3d44a1e69
[wpimath] Add Translation2d.getAngle() ( #4217 )
...
Co-authored-by: Max Gordon <tonald.drump2.0@gamil.com >
Co-authored-by: Tyler Veness <calcmogul@gmail.com >
2022-05-14 21:22:00 -07:00
Tyler Veness
f341e1b2be
[wpimath] Document standard coordinate systems better (NFC) ( #4228 )
2022-05-14 15:31:06 -07:00
Tyler Veness
b33715db15
[wpimath] Add CoordinateSystem class ( #4214 )
2022-05-07 10:25:19 -07:00
Tommy Beadle
dc6f641fd2
[wpimath] PIDController: Reset position and velocity error when reset() is called. ( #4064 )
...
In addition to m_prevError and m_totalError, m_positionError and
m_velocityError need to be reset to 0 when reset() is called.
Otherwise, the next time calculate() is called, the old values will be
used as the previous error, but this is inaccurate since the caller
wanted to reset the state of the PID controller.
2022-05-06 08:44:08 -07:00
Tyler Veness
f20a20f3f1
[wpimath] Add 3D geometry classes ( #4175 )
...
Also clean up 2D geometry documentation.
2022-05-06 08:41:23 -07:00
Kaitlyn Kenwell
708a4bc3bc
[wpimath] Conserve previously calculated swerve module angles when updating states for stationary ChassisSpeeds ( #4208 )
...
* Calculated swerve module states now stored in a member variable
* If ChassisSpeeds(0, 0, 0) is converted to module speeds, the
previously calculated module angle will be conserved, with forward speed
set to 0
* New tests added
2022-05-06 08:38:20 -07:00
chen perach
ef7ed21a9d
[wpimath] Improve accuracy of ComputerVisionUtil.calculateDistanceToTarget() ( #4215 )
2022-05-06 08:36:58 -07:00
Tyler Veness
b1abf455c1
[wpimath] LTVUnicycleController: Use LUT, provide default hyperparameters ( #4213 )
2022-05-04 22:04:08 -07:00
Tyler Veness
d5456cf278
[wpimath] LTVDifferentialDriveController: Remove unused variable ( #4212 )
2022-05-04 22:03:15 -07:00
Tyler Veness
ee03a7ad3b
Remove most 2022 deprecations ( #4205 )
...
Excludes "old" commands and SimDevice functions.
2022-05-04 20:37:27 -07:00
Tyler Veness
ce1a7d698a
[wpimath] Refactor WheelVoltages inner class to a separate file ( #4203 )
2022-05-01 11:01:20 -07:00
Tyler Veness
87bf70fa8e
[wpimath] Add LTV controllers ( #4094 )
...
This adds a unicycle controller that's a drop-in replacement for Ramsete
and a differential drive controller that controls the full pose and
outputs voltages. The main benefit is LQR-like tuning knobs using a
system model.
2022-04-30 22:54:22 -07:00
Tyler Veness
ebd2a303bf
[wpimath] Remove deprecated MakeMatrix() function ( #4202 )
2022-04-30 22:52:05 -07:00
Peter Johnson
e28776d361
[wpimath] LinearSystemLoop: Add extern templates for common cases
2022-04-30 20:38:55 -07:00
Peter Johnson
dac1429aa9
[wpimath] LQR: Use extern template instead of Impl class
2022-04-30 20:38:55 -07:00
Peter Johnson
e767605e94
[wpimath] Add typedefs for common types
...
This makes complex code significantly easier to read.
frc::Vectord<Size> = Eigen::Vector<double, Size>
frc::Matrixd<Rows, Cols> = Eigen::Matrix<double, Rows, Cols>
2022-04-30 20:38:55 -07:00
Peter Johnson
97c493241f
[wpimath] UnscentedKalmanFilter: Move implementation out-of-line
2022-04-30 20:38:55 -07:00
Peter Johnson
8ea90d8bc9
[wpimath] ExtendedKalmanFilter: Move implementation out-of-line
2022-04-30 20:38:55 -07:00
Peter Johnson
ae7b1851ec
[wpimath] KalmanFilter: Use extern template instead of Impl class
2022-04-30 20:38:55 -07:00
Peter Johnson
e3d62c22d3
[wpimath] Add extern templates for common cases
...
This helps reduce compile times and memory usage.
2022-04-30 20:38:55 -07:00
Oblarg
09cf6eeecb
[wpimath] ApplyDeadband: add a scale param ( #3865 )
...
Also templates it in C++ so it can work with both doubles and units.
2022-04-30 20:29:48 -07:00
Starlight220
18ff694f02
[wpimath] Add Rotation2d.fromRadians factory ( #4178 )
2022-04-30 00:19:29 -07:00
Tyler Veness
d926dd1610
[wpimath] Fix pose estimator performance ( #4111 )
...
Fixes #4087 .
2022-04-26 18:43:59 -07:00
Tyler Veness
5ebe911933
[wpimath] Add DifferentialDriveAccelerationLimiter ( #4091 )
2022-04-24 07:21:40 -07:00
Tyler Veness
355a11a414
Update Java linters and fix new PMD errors ( #4157 )
...
PMD requires that variables only initialized in the constructor be
final. The compiler errors if those final variables aren't guaranteed to
be initialized, so extra else branches were added to ensure that.
PMD also requires that classes with only private constructors be final.
The equivalent C++ classes were finalized as well, except for
TimeInterpolatableBuffer because it doesn't expose factory functions.
2022-04-24 07:18:05 -07:00
camaj
922d50079a
[wpimath] Units: fix comment in degreesToRotations (NFC) ( #4159 )
2022-04-13 22:32:55 -07:00
Jonah Snider
dd163b62ae
[wpimath] Rotation2d: Add factory method that uses rotations ( #4166 )
...
Rotation2d.fromRotations(1).equals(new Rotation2d(2 * Math.PI)); // true
Also adds a member method to get the value of the Rotation2d in rotations.
2022-04-13 22:31:43 -07:00
Tyler Veness
aef4b16d4c
[wpimath] Remove unnecessary NOLINT in LinearPlantInversionFeedforward (NFC) ( #4155 )
2022-04-08 21:31:42 -07:00