Tyler Veness
13626063dc
[wpimath] Fix units typo ( #7789 )
2025-02-13 23:22:44 -08:00
Peter Johnson
7e6077c546
[wpimath] Fix up order and docs for Feedforward gain setters ( #7788 )
2025-02-13 23:20:08 -08:00
Jade
4d126b158c
[wpimath] Add setters to Feedforward gains ( #7784 )
...
Signed-off-by: Jade Turner <spacey-sooty@proton.me >
2025-02-13 21:09:28 -08:00
Joseph Eng
296986397b
[wpimath] Document drift from desaturating discretized chassis speeds (NFC) ( #7741 )
2025-02-03 11:46:18 -07:00
Tyler Veness
b31fd17d05
[wpimath] Fix infinite loop in ArmFeedforward::Calculate(xₖ, vₖ, vₖ₊₁) ( #7745 )
...
Small values of kₐ make the iterative solver ill-conditioned. This
change reverts to the constant-acceleration feedforward in that case. It
gives _very_ bad results (hence why we added the iterative solver in the
first place), but it's better than hanging.
```
TEST(ArmFeedforwardTest, CalculateIllConditioned) {
constexpr auto Ks = 0.5_V;
constexpr auto Kv = 20_V / 1_rad_per_s;
constexpr auto Ka = 1e-2_V / 1_rad_per_s_sq;
constexpr auto Kg = 0_V;
frc::ArmFeedforward armFF{Ks, Kg, Kv, Ka};
// Calculate(currentAngle, currentVelocity, nextAngle, dt)
CalculateAndSimulate(armFF, 0_rad, 0_rad_per_s, 2_rad_per_s, 20_ms);
}
```
This produces 1 V and doesn't accelerate the system at all. Using
nextVelocity instead of currentVelocity in the feedforward outputs 41 V
and still only accelerates to 0.4 rad/s of the requested 2 rad/s.
I picked the kₐ cutoff by increasing kₐ until the iterative solver
started converging.
Fixes #7743 .
2025-01-30 13:33:39 -07:00
Matthew Wozniak
8fc3767b30
[wpimath] Fix macro name typo ( #7707 )
2025-01-17 22:19:21 -08:00
David Racovan
a14545102f
[wpimath] DifferentialDriveWheelPositions: tag as Proto/StructSerializable ( #7622 )
2025-01-13 14:52:40 -07:00
Tyler Veness
25e6549398
[wpimath] Fix various constexpr support bugs ( #7676 )
2025-01-13 14:44:55 -07:00
ハイドラント
cd92b07321
[wpimath] Add Pose2d and Pose3d rotateAround() ( #7659 )
2025-01-13 12:55:26 -07:00
Tyler Veness
007526089e
[wpimath] Fix LinearSystemId return type and docs ( #7675 )
...
Fixes #7674 .
2025-01-13 12:22:53 -07:00
HarryXChen
e37c35746a
[wpimath] Implement Translation3d.RotateAround ( #7661 )
2025-01-09 20:31:34 -08:00
Tyler Veness
11a0c36737
[wpimath] Make Rotation2d member initialization order match declaration order ( #7632 )
2025-01-03 22:44:17 -08:00
sciencewhiz
203487a6aa
[wpimath] improve LTVUnicycleController docs (NFC) ( #7599 )
...
Document the states and inputs so it isn't necessary to look at the code
Fix max velocity throws doc
2024-12-28 16:03:47 -06:00
Tyler Veness
57344ef3b2
[wpimath] Use ct_matrix instead of Eigen/LU for determinant in headers ( #7600 )
...
This caught a bug in ct_matrix's 3x3 determinant.
2024-12-28 16:03:29 -06:00
Nicholas Armstrong
fe49cbe429
[wpimath] Remove Units class from Elevator and Arm Feedforwards ( #7570 )
2024-12-26 20:21:19 -06:00
Tyler Veness
02a0adc653
[wpimath] Add Rotation3d rotation vector getter ( #7564 )
...
The code churn in Java is just making the function order consistent
between languages.
2024-12-22 13:34:51 -08:00
Peter Johnson
4bca79b9af
[wpimath] Revert "ChassisSpeeds fromRelative and discretize methods made instance methods ( #7115 )" ( #7549 )
...
This reverts commit a3b12b3bd9 .
2024-12-14 10:42:49 -08:00
Joseph Eng
4225b732fd
Remove unnecessary boxing ( #7539 )
...
* Remove unnecessary boxing
Also remove unnecessary warning suppression
* Use more idiomatic functional interfaces in NumericalIntegration
2024-12-12 19:18:40 -08:00
Wispy
cc41a0ed24
[wpilib] Replace MecanumDriveMotorVoltages with a functional interface ( #6760 )
2024-12-08 17:05:06 -08:00
Tyler Veness
d5edb4060d
[upstream_utils] Upgrade Sleipnir ( #7512 )
...
It now uses SQP for problems without inequality constraints, which is
faster.
main:
```
[ RUN ] Ellipse2dTest.DistanceToPoint
0.203 ms
[ OK ] Ellipse2dTest.DistanceToPoint (0 ms)
[ RUN ] Ellipse2dTest.FindNearestPoint
0.019 ms
[ OK ] Ellipse2dTest.FindNearestPoint (0 ms)
```
upgrade:
```
[ RUN ] Ellipse2dTest.DistanceToPoint
0.197 ms
[ OK ] Ellipse2dTest.DistanceToPoint (0 ms)
[ RUN ] Ellipse2dTest.FindNearestPoint
0.015 ms
[ OK ] Ellipse2dTest.FindNearestPoint (0 ms)
```
2024-12-07 23:02:39 -08:00
Tyler Veness
e08fdeba21
[wpimath] Rename FindNearestPoint() to Nearest() ( #7513 )
...
This is easier to type and follows the naming of Pose2d::Nearest().
Since Ellipse2d and Rectangle2d were added for the 2025 season, we don't
need to add deprecation notices.
2024-12-07 23:01:18 -08:00
Tyler Veness
e222efaa01
[wpimath] Add affine transformation constructors and getters to geometry API ( #7430 )
...
Fixes #7429 .
2024-12-07 15:49:17 -08:00
Tyler Veness
278efa6384
[upstream_utils] Remove Sleipnir patches no longer needed with GCC 11 ( #7491 )
2024-12-07 12:36:25 -08:00
Tyler Veness
882233bede
[wpimath] Improve SimpleMotorFeedforward argument names and deprecation message ( #7489 )
...
Also roll back SimpleMotorFeedforward unit API until 2027.
2024-12-06 22:32:40 -08:00
sciencewhiz
892e062316
[hal,wpilib,wpimath] Add Usage Reporting for Choreo and PathWeaver ( #7464 )
2024-11-30 20:33:09 -08:00
Tyler Veness
a0af0fd572
[wpimath] Remove redundant internal DARE function ( #7442 )
2024-11-28 21:24:13 -08:00
Joseph Eng
59dbfc9c2d
[wpimath] Improve C++ SimpleMotorFeedforward unit type support ( #7440 )
...
Allow using non-base types
Allow using angles for serde
2024-11-27 23:02:31 -08:00
sciencewhiz
0a3ccf93c6
[wpimath] Add BangBangController Usage Reporting ( #7411 )
2024-11-20 17:00:54 -08:00
Peter Johnson
661c321fe2
[upstream_utils] Restore Eigen intellisense fix ( #7404 )
...
This reverts commit d1de7663d3 .
Intellisense is still broken on Windows Athena target with the error
`incomplete type "Eigen::Matrix<double, 3, 3, 0, 3, 3>" is not allowed`.
2024-11-17 19:11:25 -08:00
Tyler Veness
d1de7663d3
[upstream_utils] Remove Eigen intellisense fix ( #7397 )
...
FRC Code intellisense continued to work in developerRobot with a QR
decomposition.
2024-11-16 22:16:11 -08:00
Sam Carlberg
ded7c87d63
[wpimath] Remove units from trapezoid profile classes ( #7276 )
2024-11-16 07:57:38 -08:00
Joseph Eng
2acf111f56
[wpimath] Add 3D odometry and pose estimation ( #7119 )
2024-11-16 07:56:14 -08:00
Tyler Veness
aa7dd258c4
[wpimath] Replace constexpr coeff() and coeffRef() with operator() ( #7391 )
2024-11-16 07:44:20 -08:00
Jonah Bonner
ca51197486
[wpilib] Add timestamp getters with configurable time base ( #7378 )
2024-11-16 07:43:38 -08:00
Kavin Muralikrishnan
07345712dc
[wpimath] Document default tolerances of PIDController ( #7377 )
2024-11-12 18:19:55 -05:00
Joseph Eng
425bf83036
[wpimath] Add 2D to 3D geometry constructors ( #7380 )
2024-11-12 18:18:37 -05:00
Peter Johnson
f40bd3593d
[wpilib,wpimath] Don't use mutable units for return values ( #7369 )
...
It only saves a single allocation and can cause confusing behavior on the
caller (user) side.
2024-11-08 18:29:51 -08:00
Thad House
3cc541f261
Remove generated google protobuf support ( #7371 )
...
It's not used anymore, and cleans up the build.
2024-11-08 18:29:30 -08:00
Tyler Veness
661bae568f
[wpimath] Add time-varying RKDP ( #7362 )
...
This makes the ground truth for the Taylor series AQ discretization more
accurate.
2024-11-07 23:46:52 -08:00
Thad House
8b8b634f65
[wpiutil] Change C++ protobuf to nanopb ( #7309 )
...
The Google C++ protobuf implementation has issues with dynamic linkage across DLL boundaries because it uses global variables. It also has a compile-time dependency because the protoc version must exactly match the libprotobuf version. Using nanopb with a customized generator fixes both of these issues.
Co-authored-by: Gold856 <117957790+Gold856@users.noreply.github.com >
2024-11-07 22:42:50 -08:00
Tyler Veness
a66fa339dc
[wpimath] Make controllers and some trajectory classes constexpr ( #7343 )
2024-11-07 14:02:11 -07:00
Tyler Veness
3113627be6
[wpimath] Fix PIDController error tolerance getters ( #7341 )
2024-11-05 09:52:22 -07:00
Tyler Veness
63e623d70b
[wpimath] Fix case and order of HolonomicDriveController PID getters ( #7342 )
2024-11-05 09:50:17 -07:00
Tyler Veness
dfd1084526
[wpimath] Replace pi with symbol in docs ( #7322 )
2024-11-01 17:16:18 -07:00
Tyler Veness
9f6f267f5c
[wpimath] DARE: Use wpi::expected instead of exceptions ( #7312 )
2024-10-31 20:37:57 -07:00
Tyler Veness
defcc02806
[wpimath] Clean up LTV controller includes ( #7313 )
2024-10-29 23:03:17 -07:00
Nicholas Armstrong
a3b12b3bd9
[wpimath] ChassisSpeeds fromRelative and discretize methods made instance methods ( #7115 )
2024-10-22 17:23:17 -06:00
Tyler Veness
05c7fd929b
[wpimath] Make various classes constexpr ( #7237 )
2024-10-22 07:58:06 -06:00
Tyler Veness
0c824bd447
[wpimath] Take finite difference stencil points by const ref ( #7238 )
2024-10-21 22:33:56 -07:00
Tyler Veness
ed18b41198
[upstream_utils] Add Eigen geometry module ( #7242 )
...
WPICal needs it.
2024-10-21 22:29:35 -07:00