Commit Graph

4202 Commits

Author SHA1 Message Date
Prateek Machiraju
9725aff83b [wpilib] Clean up DifferentialDrivetrainSim API (#2747)
Co-authored-by: Tyler Veness <calcmogul@gmail.com>
2020-09-27 13:25:17 -07:00
Tyler Veness
1320691eb4 [wpilib] Shorten differential drive simulation stability test (#2745)
If the model is unstable, it will almost always diverge within 10
seconds, and the results are rather dramatic. We're also reducing the
threshold to 100 meters because the drivetrain is moving in a small
circle. The translation norm is also used for this reason; the X
component alone regularly crosses zero since the drivetrain moves in a
circle.
2020-09-27 09:31:29 -07:00
Peter Johnson
451f67c63d [hal] SimDevice class: remove HAL_SimDeviceHandle constructor (#2744)
This isn't appropriate for a RAII class.  In particular, it can cause
foot-shooting in simulation mode if the result of
HALSIM_GetSimDeviceHandle is passed instead of HAL_CreateSimDevice.
2020-09-27 09:28:52 -07:00
Prateek Machiraju
43b1b128b1 Improve README-CMAKE.md (#2737) 2020-09-27 09:18:49 -07:00
Tyler Veness
fc991cb59c [wpilib] Clean up simulation physics API (#2739)
Some vestigial functions were never removed, and C++ single-jointed arm
sim was missing a flag for disabling gravity simulation. This is useful
for mechanisms like turrets.

Fixes #2738.
2020-09-27 00:13:59 -07:00
Prateek Machiraju
17d3d2f754 [wpilibc] Add ScopedTracer class (#2724)
This makes it easier for C++ teams to log a certain piece of code using RAII.
2020-09-27 00:10:11 -07:00
Starlight220
73950b9857 [wpilibc] RobotBase::IsReal, IsSimulation: Add doxygen comments (#2735) 2020-09-27 00:08:53 -07:00
Tyler Veness
61ee331f11 [build] Double gradle build max heap size to 2G (#2689)
The Gradle heap size is currently set to 1G, and that's becoming too
small for our Linux build.

Developers who want to override this without editing the project's
build.gradle can override these settings with gradle.properties in
GRADLE_USER_HOME (see
https://docs.gradle.org/current/userguide/build_environment.html for
details).
2020-09-27 00:07:40 -07:00
Tyler Veness
651319589c [wpilibc] Fix a use-after-free in DifferentialDrivetrainSim (#2741)
In the second constructor, a new LinearSystem is created and set to
m_plant. This takes a const ref though, so it's storing a reference to a
temporary object. After the constructor finishes, m_plant points to an
invalid object. When Update() is called, it will crash with a
segmentation fault.

This patch fixes the use-after-free by making m_plant a LinearSystem
value type. The first constructor will generate a copy, but that only
happens once.
2020-09-27 00:02:04 -07:00
Tyler Veness
5479948bd4 Update filepaths in thirdparty notices (#2713) 2020-09-24 20:51:23 -07:00
Kaitlyn Kenwell
1ec145ec87 [imgui] Add IMGUI_IMPL_OPENGL_LOADER_GL3W to cmake compile defs (#2728)
If compiled on a system with a glew header installed, it would autodetect that first and fail to link.
2020-09-24 20:21:44 -07:00
Prateek Machiraju
8ab47cb075 [wpilib] Add C++ diff-drive sim tests and fix Java test name (#2729) 2020-09-24 20:05:27 -07:00
Tyler Veness
b7b3dcf3ea Reorganize build documentation (#2712)
FasterBuilds.md was merged into README.md since it's so useful.
2020-09-24 20:03:47 -07:00
Tyler Veness
f7da0b4525 Improve list of build requirements in README (#2709)
The bulleted list was reworded to address excessive wordiness, and links
are now provided for Windows C++ compiler options.
2020-09-24 20:02:52 -07:00
Austin Shalit
f9a3380184 [build] Add macOS CMake CI (#2711) 2020-09-20 15:15:27 -07:00
Matt
b61f08d3fa [wpilib] Add physics simulation support with state-space (#2615)
This includes physics simulation support for arms/elevator models, as well as differential drivetrains.

Swerve might be added at a later date.

Co-authored-by: Claudius Tewari <cttewari@gmail.com>
Co-authored-by: Prateek Machiraju <prateek.machiraju@gmail.com>
Co-authored-by: Tyler Veness <calcmogul@gmail.com>
2020-09-20 09:39:52 -07:00
Prateek Machiraju
0503225928 [build] CMake: Fix Metal linking on macOS (#2725) 2020-09-20 09:31:20 -07:00
Peter Johnson
d4d0b5501b [wpilib] Use more inclusive terminology (NFC) (#2723) 2020-09-19 10:35:38 -07:00
Austin Shalit
6c5726c96f Add CODE_OF_CONDUCT (#2716)
This uses the contributor covenant but with an additional line about Gracious Professionalism
2020-09-17 07:47:51 -04:00
Peter Johnson
56972447b2 [wpigui] Only build static for both gradle and cmake (#2703)
Final use of wpigui is essentially always the static library.
2020-09-13 00:34:28 -07:00
Peter Johnson
67e1796ef6 [wpimath] Fix Eigen rule-of-three violations (#2707)
This avoids deprecated-copy warnings on recent clang and GCC compilers.

Applied from https://gitlab.com/libeigen/eigen/-/merge_requests/29/diffs
2020-09-12 23:01:15 -07:00
Peter Johnson
1ae8da3b3f [wpigui] Move portable-file-dialogs.h to wpigui and upgrade it (#2704)
Also split source and implementation to avoid platform headers in header.
2020-09-12 21:15:02 -07:00
Peter Johnson
3ed97f45fb [cscore] Properly init variable in usbviewer (#2702) 2020-09-12 13:48:04 -07:00
Tyler Veness
ae2809cad4 [wpimath] Update KalmanFilter C++ class docs based on Java (NFC) (#2699) 2020-09-10 14:21:04 -07:00
Tyler Veness
b0a296477e [wpimath] Use newer link to controls book in comments (NFC) (#2700) 2020-09-10 14:20:06 -07:00
Peter Johnson
629a4574db [wpimath] Include Eigen headers in cppHeadersZip (#2696) 2020-09-06 20:53:57 -07:00
Tyler Veness
4be809499d [wpimath] Use more specific Eigen includes in headers (#2693)
This helps reduce compilation overhead. I tried slimming down includes
of <Eigen/QR>, but the householderQr() function we use from there
requires including dependency headers from Eigen that don't fit with
lexographic ordering. It didn't seem worth the effort to work around.

This won't affect user code at all since all the Eigen feature usage
here is internal only; users generally only need <Eigen/Core>.
2020-09-04 20:52:03 -07:00
Peter Johnson
b10063da9a [sim] Set Encoder reset to false when count set (#2692) 2020-09-04 20:51:08 -07:00
Peter Johnson
5e54e13140 [sim] Ignore incoming websocket DS/Joystick when real DS connected 2020-09-04 16:26:46 -07:00
Peter Johnson
8f87c56312 [sim] Automatically turn off GUI DS when real DS connected 2020-09-04 16:26:46 -07:00
Peter Johnson
1b18560e90 [sim] ds_socket: Remove iostream 2020-09-04 16:26:46 -07:00
Peter Johnson
f86a5f9b09 [sim] WebSockets: don't override HAL_Main
Also clean up some other implementation aspects for cleaner shutdown and
reduce peak memory allocation.
2020-09-04 16:26:09 -07:00
Peter Johnson
f1b1bdb121 [hal] Add HAL_Shutdown and simulation shutdown callbacks
This is useful for clean shutdown of simulation extensions.
2020-09-04 16:26:09 -07:00
Peter Johnson
0365557b25 [sim] Make extension registry thread-safe 2020-09-04 16:26:09 -07:00
Peter Johnson
883d962838 [wpiutil] SimpleBufferPool: Deallocate on destruction 2020-09-04 16:26:09 -07:00
Tyler Veness
35790a8990 [wpimath] Remove rho overload from LinearQuadraticRegulator constructors (#2687)
It was added as part of Bryson's rule described in
https://file.tavsys.net/control/controls-engineering-in-frc.pdf. It
doesn't really simplify usage though, and the same thing can be
replicated by multiplying the elements of Q by rho manually. It's easier
to do it that way, it's how 3512 has been doing controller debugging for
a while, and it's probably what other teams will do as well instead of
using the "more structured" way.

Removing these unhelpful overloads also simplifies the LQR interface.
2020-09-03 20:53:17 -07:00
Matt
8edc17dac9 [wpimath] Add Vector overload for times and div (#2686) 2020-09-03 20:48:43 -07:00
Matt
502f5c8b5f [wpimath] Make LinearPlantInversionFeedforward's A and B matrices final (#2688) 2020-09-03 19:07:36 -07:00
Matt
bc28fb187c [wpimath] Remove print from LinearSystemIDTest (#2684) 2020-09-03 19:06:52 -07:00
Peter Johnson
de0277713b [sim] Add API for extensions to discover each other (#2681) 2020-09-03 10:09:01 -07:00
Peter Johnson
1593eb4d47 [sim] Add plotting to simulation GUI 2020-09-02 21:13:38 -07:00
Peter Johnson
70ba92f917 [sim] GUI: Show DS info even when GUI DS disabled 2020-09-02 21:13:38 -07:00
Peter Johnson
47cc71ea01 [hal] Add HALSIM_GetJoystickCounts 2020-09-02 21:13:38 -07:00
Peter Johnson
9453d67273 [sim] Output more error details on extension load failure (#2680) 2020-09-02 20:07:03 -07:00
sciencewhiz
f758af826d [wpilib] Use misspell to find more spelling errors (NFC) (#2679) 2020-09-02 19:41:05 -07:00
Peter Johnson
6a1e5385e5 [sim] WS: Don't call virtual function from destructor 2020-09-01 22:54:05 -07:00
Peter Johnson
63487dca76 [sim] Fix WS blank device messages (e.g. DriverStation) 2020-09-01 22:54:05 -07:00
Peter Johnson
7d6f09f5c7 [sim] SimDataValue: Fix cancellation
The uid was getting incremented by 1 during registration but not decremented
by 1 during cancellation, so cancellation didn't work correctly.

As the underlying registration ensures a non-zero result, don't increment
the result.
2020-09-01 21:32:21 -07:00
Peter Johnson
148eed3cdc [sim] Make sure NotifyListener members are initialized 2020-09-01 21:32:21 -07:00
Thad House
05701317b4 [build] Make loading sim extensions from MyRobot easier (#2671) 2020-08-31 00:34:34 -07:00