Commit Graph

3586 Commits

Author SHA1 Message Date
Peter Johnson
decfd858b8 Correctly report -1 for POV on disconnected joystick (#1852) 2019-08-25 22:51:54 -07:00
Oblarg
076ed7770c Add new C++ Command framework (#1785)
This is the C++ version of #1682.

The old command framework is still available, but will be deprecated.

Due to name conflicts, the new framework is in the frc2 namespace.
Eventually (after the old command framework is removed in a future year)
it will be moved into the main frc namespace.
2019-08-25 20:55:59 -07:00
Peter Johnson
a0be07c370 Refactor HAL handle move construction/assignment (#1845)
A templated hal::Handle class is used to wrap handles to make them move-only.
This eliminates a lot of boilerplate move constructor/assignment code
in the main WPILib classes.  HAL_SPIPort and HAL_I2CPort are also wrapped.

The wrapper class does not implement destruction.  This would require the
wrapper class to be handle-specific (rather than generic) and would result
in more code added than it removed, plus would add header dependencies on
more HAL headers.  In addition, some HAL handle release functions are more
complex (e.g. have return values) and can't be easily mapped to a destructor.
2019-08-25 18:42:00 -07:00
Oblarg
558c383088 Add new Java Command framework (#1682)
The old command framework is still available, but will be deprecated.

Due to name conflicts, the new framework is in the wpilibj2 package.
Eventually (after the old command framework is removed in a future year)
it will be moved into the main wpilibj package.
2019-08-25 14:47:07 -07:00
Peter Johnson
1379735aff Delete RobotState and SensorUtil constructors (#1847) 2019-08-24 22:28:39 -07:00
Tyler Veness
e3d86fee46 Move circular buffer class from wpilib to wpiutil (#1840) 2019-08-24 21:35:19 -07:00
Peter Johnson
4cd8a56672 TimedRobot.cpp: Fix deprecation warning (#1846)
For both TimedRobot and IterativeRobotBase, use delegating constructors
to reduce code duplication.
2019-08-24 21:13:29 -07:00
Thad House
b2861f8948 Use 2020 artifacts and artifactory server (#1838)
Uses 2020 artifacts and artifactory server, and new versioning and repository plugins.
2019-08-22 21:48:43 -07:00
Thad House
98cc32703c Update to use artifactory to publish artifacts (#1833)
* Update to use artifactory to publish artifacts
2019-08-21 07:28:24 -07:00
Tyler Veness
fa06403000 Move drive integration tests into wpilibj/src/test (#1836)
Also move drive and controller tests into subfolders.
2019-08-20 21:05:38 -07:00
Thad House
e716c36b89 Fix Nat.java generation to be incremental (#1831)
Also generate the imports.
2019-08-20 21:03:44 -07:00
Thad House
9fd2b5e3fa Fix MSVC builds on cmake windows in vcpkg (#1835) 2019-08-19 20:28:48 -07:00
Redrield
7e95010a29 Add compile-time EJML matrix wrapper to wpiutil (#1804)
This adds a wrapper over EJML's SimpleMatrix that uses generated classes representing numbers to encode the dimensions of each matrix at compile time, and to check operations between matrices for validity at compile time, rather than failing with an exception at runtime. This is required for the Java implementation of state-space control.

Additions to the wpiutil gradle script, and a python script at the wpiutil root are used to generate numeric types from a template at build time for both gradle and cmake. Users will be able to access types through functions on the Nat class.
2019-08-18 15:00:40 -07:00
Tyler Veness
3ebc5a6d3a Add ProfiledPIDController 2019-08-16 23:47:02 -07:00
Tyler Veness
fc98a79dbb Clean up PIDController interface in preparation for ProfiledPIDController 2019-08-16 23:47:02 -07:00
Tyler Veness
fdc098267e Fix compilation error in elevator trapezoid profile example (#1826)
Merging #1815 broke it, then #1814 was merged before fixing the failure.
2019-08-16 23:04:12 -07:00
Oblarg
a3dd84e854 Make XBoxController Button enum public (#1823)
This allows using the raw button number in places where that is useful.
2019-08-16 22:21:49 -07:00
Tyler Veness
a216b9e9ee Add TrapezoidProfile example (#1814) 2019-08-16 22:03:44 -07:00
Prateek Machiraju
8f386f6bb3 wpilibc: Add unit-safety to C++ geometry classes (#1811) 2019-08-16 22:00:32 -07:00
Prateek Machiraju
c07ac23532 wpilibc: Add overloads for units (#1815)
Add unit-taking overloads to the following classes:
- IterativeRobotBase
- LinearFilter
- Notifier
- TimedRobot
- Timer (HasPeriodPassed only)
- frc2::PIDController

The corresponding non-units-taking functions have been deprecated.

The return value of TimedRobot::GetPeriod() was updated.
This is a breaking change, users should use to<double> to get the value in seconds.

Other return values, e.g. Timer::Get(), have NOT been updated due to much wider use.
2019-08-16 21:56:48 -07:00
Peter Johnson
f1d71da8a9 Move GetStackTrace and Demangle to wpiutil, add Windows support (#1819)
For Windows, import the StackWalker source (https://github.com/JochenKalmbach/StackWalker)
plus PR 35 in that repo, with a few simplifications to StackWalker.h.
2019-08-12 23:45:45 -07:00
Tyler Veness
ef037457e5 Make LinearFilter copyable and moveable (#1789) 2019-08-09 22:29:23 -07:00
Thad House
76930250c0 Remove objective-cpp support (#1816)
Was only there for mac usb cam support, but we likely won't get to it this summer anyway,
and its causing a breakage in the backing libraries with cross builds
2019-08-09 16:28:53 -07:00
Tyler Veness
1c246418f8 Move TrapezoidProfileTest to trajectory folder (#1812)
The newer controls stuff is using subfolders, so it makes sense for
consistency and reduced clutter.
2019-08-09 16:27:41 -07:00
Matt
95a54a0f29 Add java arcade drive example (#1810) 2019-08-09 16:19:33 -07:00
Thad House
a4530243e1 HAL sim: Fix incorrectly setting dio port to initialized on cleanup (#1813) 2019-08-09 16:14:46 -07:00
Austin Shalit
09d00a6227 Update Java examples to use new PIDController (#1809)
This also allows us to re-enable Werror.
2019-08-04 20:35:33 -07:00
Abiel Fernandez
ba9b517427 Add missing Java examples (#841) 2019-08-04 20:34:02 -07:00
Thad House
6411bd79c6 InterruptableSensorBase: Fix callback function deletion (#1807)
Save the callback function into a unique_ptr member instead.
2019-08-04 20:25:25 -07:00
Austin Shalit
810e58ea85 I2C: Add tip about writeBulk() to transaction() (#1806) 2019-08-04 01:16:38 -07:00
Peter Johnson
607d6c148a Fix wpilibj integration tests jar name (#1808) 2019-08-04 00:06:07 -07:00
Oblarg
c9873e81b2 Remove PIDControllerRunner and mutex from new PIDController (#1795)
Teams that wish to use it asynchronously may still do so - they simply need to handle the thread safety themselves (it is not that difficult, and can be done more cleanly in the calling code anyway).
2019-08-04 00:01:11 -07:00
Tyler Veness
98d0706de8 Fix cscore build with OpenCV 4 (#1803)
The main change in OpenCV 4 was removing its C APIs from OpenCV 1. If
the user has OpenCV 4, they have no way of obtaining the correct
arguments for cscore functions that require the C API. Therefore, we can
fix the build by just not compiling in functions reliant on the C API if
OpenCV 4 is being used.

OpenCV 3 builds should continue to work with this change.
2019-08-03 16:10:39 -07:00
Oblarg
fbe67c90c8 Make Sendable setters synchronous (#1799)
Instead of being called asynchronously by NetworkTables, they are now called by updateValues() synchronously with the main loop, just like the getters.
2019-08-03 15:08:06 -07:00
Oblarg
c67a488a09 Format SendableBuilderImpl javadocs (#1802) 2019-08-03 15:00:43 -07:00
Tyler Veness
8e93ce8929 Fix PIDControllerRunner member destruction order (#1801)
The mutexes in PIDControllerRunner are declared after the Notifier, and
when the PIDControllerRunner object is destructed, the member object
destructors are called in the reverse order in which they are declared.
The mutexes are destructed first, then the Notifier destructor is called
which stops the Notifier.

There's a window between those destructor calls during which the
Notifier can run the callable and attempt to lock a mutex that no longer
exists.

Declaring the Notifier after all the variables its callable uses fixes
this issue, as it ensures the Notifier is destructed first.
2019-08-03 14:58:10 -07:00
Redrield
c98ca7310f Add EJML dependency to wpiutil (#1769)
Add EJML as the Java library for linear algebra for use in wpilib. This is equivalent to Eigen for C++.

The EJML dependency is downloaded in cmake and pulled in via maven in the gradle build.
2019-08-03 14:24:14 -07:00
Oblarg
3b12276bc3 SendableBase: remove unnecessary synchronization (#1797)
Also fixes the move constructor to update LiveWindow to follow the move.
2019-08-02 23:47:17 -07:00
Oblarg
e6d348f382 Fix missing default name in Java PIDController (#1792) 2019-08-02 23:38:35 -07:00
Austin Shalit
df12fc2a86 Java cleanups (#1776)
* Remove extra ';'s
* Remove unnecessary conversions to String
* Use StandardCharsets object
* Replace infinite while with check for interrupted thread
* Remove redundant local vars
* Remove redundant throws clause
* Remove redundant primitive wrapping
* Fix malformed Nested class test
* Remove unnecessary unboxing
* Remove unnecessary explicit type argument
* Replace lambdas with method references
* Replace statement lambdas with expression lambdas
* Replace null check with method call
* Replace number comparison with method call
* Fix broken javadoc comments
* Replace Arrays.asList with singletonLists
* Remove excessive lambda usage
* Remove redundant string operation
* Remove redundant type casts
* Remove unnecessary returns
* Remove redundant suppressions
* Fix unresolved file reference
* static analysis fixes
2019-07-31 22:19:48 -07:00
Thad House
39561751fc Update GradleVSCode version (#1786)
Fixes compile_commands
2019-07-31 22:15:48 -07:00
Tyler Veness
37d316aa09 Add C++20 std::math constants shim (#1788)
Based on http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0631r7.pdf
2019-07-31 22:15:22 -07:00
Tyler Veness
dd43109596 Deprecate frc/WPILib.h (#1779)
It drastically increases compile times and is bad style. C++ users
should be including what they use. We don't necessarily have to remove
WPILib.h, but it should at least be deprecated.
2019-07-30 00:41:14 -07:00
Thad House
823174f30a Update native utils to 2020.0.4 (#1783)
Adds -latomic by default to all linux builds
2019-07-30 00:40:23 -07:00
Tyler Veness
37c6952663 Squelch -Wdeprecated-copy for Eigen with GCC >= 9 2019-07-30 00:39:47 -07:00
Tyler Veness
04c9b000ff Revert "Fix build of Eigen 3.3.7 with GCC 9"
-Wextra adds -Wdeprecated-copy, which Eigen emits. We're going to
squelch the warning instead to minimize changes to Eigen's upstream
sources.
2019-07-30 00:39:47 -07:00
Peter Johnson
ca3e71e214 wpiutil: Fix Process::Spawn() (#1778)
Was broken due to removal of ArrayRef initializer_list constructor.
2019-07-26 11:22:23 -07:00
Prateek Machiraju
d946d5a2bb Fix Eigen compilation errors and add tests (#1777) 2019-07-24 20:51:33 -07:00
Tyler Veness
8b1b9ac75a Fix build of Eigen 3.3.7 with GCC 9 2019-07-24 00:03:18 -07:00
Tyler Veness
2f680ba990 Add Eigen linear algebra library
This imports Eigen 3.3.7, which will be used by the wpilibc implementation of
state-space control and mecanum/swerve forward kinematics (the forward
kinematics requires least-squares solutions via a matrix pseudoinverse).

While Eigen has parts licensed under BSD, MINPACK, and MPL2, the files we need
are only MPL2.
2019-07-24 00:03:18 -07:00