Python helper library focused on the CyberJagzz FRC Team 6107 robot requirements
Project description
frclib-6107
Python helper library focused on the CyberJagzz FRC Team 6107 robot requirements
Table of Contents
Background and Intended Direction
During the initial FRC python effort for the 2026 Rebuilt build-season, several useful utilities were identified along with much common functionality between some subsystems. On top of this, the pykit module had a few bugs identified and were brought into the Team's product.
All of this work was performed under the lib_6107 subdirectory of our 2026 Rebuilt project, and now that build season is over, it sure would be nice to pull this into a loadable module, clean up and document the interfaces, and get under some sort of unit tests.
If this is successful, the hope is that the main robot-loadable source for 2026 and our future robots is greatly reduced.
Another key focus is to speed the periodic code by at least 25%. The current loop is taking about 23 mS, and we need this under 20. While the new controller for 2027 will probably be significantly faster, saving time to run new functionality (vision w/ dynamic collision avoidance) will most likely take this time up.
Key Interfaces
Below are the main areas (often subdirectories) contained in this project.
commands
drivetrain
vision
pykit
subsystems
gyro
pykit
rpm
vision
util
Planned Releases and Improvements
The first 'beta' release will be 2026.0.1 and will primarily be a move of the current 2026-Rebuilt project into an installable module. Following that release, the start of several improvements based on the prioritized list below. Note that priorities may change without notice.
| Improvement | Task | Description |
|---|---|---|
| - | ||
| constants | Do constants better so initial value are in lib_6107 but easy to override by developers | |
| drivesubsystem | A base subsystem for a drivetrain (focus on swerve initially) | |
| - | ||
| build-part-1 | [automation] Support automated release via Makefile | |
| - | ||
| robot base | Base class for the robot that is responsible for at least the initial logging setup and determining if this is a replay | |
| subsystem base | Base subsystem class that supports pykit, simulation, and sysId overridable methods | |
| - | ||
| lint-part-2 | [automation] Support lint via GitHub actions | |
| bandit-part-2 | [automation] Support bandit via GitHub actions | |
| build-part-2 | [automation] Support automated release via GitHub actions | |
| - | ||
| performance | [performance] Review existing code so far and address and areas for increasing code efficiency. Create items for the improvement | |
| fault handling | [fault handling] Review existing code so far and address and areas for increasing code stability and recovery.C reate items for the improvement | |
| - | ||
| pykit unit-test | [fault handling] Get to >70% unit test coverage of pykit logging functionality Focus on performance measurements. Keep track of results |
|
| - | ||
| ut-part-1 | [automation] Support unit-tests via makefile | |
| - | ||
| CTRE/REV | Provide customized/customizable subsystem support for CTRE and Rev Robotics based subsystems | |
| - | ||
| pykit slots | [performance] Support @DataClass(slots=True) for pykit logging if it can help with performance | |
| - | ||
| pykit meta | Support subsystem metadata. Auto-save firmware versions, model numbers, vendor info, and other status we can scrap from devices and their APIs. | |
| pykit asyncio | [performance] Support asyncio in pykit to improve performance | |
| canbus logging | [performance] Support Canbus logging to pykit (option to disable via logged chooser) | |
| - | ||
| github copilot | Investigate what github copilot may help us with | |
| - | ||
| ut-part-2 | [automation] Support unit-tests via GitHub actions | |
| unit-test-10% | Reach at least 10% or better unit-test coverage | |
| - | ||
| vision sim 1 | Support vision simulation (PhotonVision) | |
| - | ||
| example | Create an example project that can be used by other to examine how to use this module. Also may be able to use it in some automated unit-tests. |
|
| - | ||
| vision sim 2 | Support vision simulation (Limelight) | |
| - | ||
| unit-test-30% | Reach at least 30% or better unit-test coverage. Supports github action/workflow. | |
| unit-test-50% | Reach at least 50% or better unit-test coverage. | |
| unit-test-70% | Reach at least 70% or better unit-test coverage | |
| unit-test-80% | Reach at least 80% or better unit-test coverage | |
| - | ||
| tools | Generate a list of possible tools to improve or automate some of the steps we go through | |
| - | ||
| log exporter | [tools] Auto-log export into a database (mongodb?) Include additional match/circumstance type metadata and have settable via UI. |
|
| otel | [tools] [performance] OpenTelemetry support investigation | |
| elastic | [example] In the 'example' robot project. Include an elastic JSON layout file that shows how some of the module NT4 data can be displayed/manipulated. |
|
| - | ||
| - |
**Completed Tasks **
| Complete | Release | Task | Description |
|---|---|---|---|
| 2026.0.0.1 | lib_2026 move | Successful move into an installable module. Little or no added functionality | |
| --- | ---------- | ||
| 2026.0.0.2 | lint-part-1 | [automation] Support lint via Makefile | |
| 2026.0.0.2 | bandit-part-1 | [automation] Support bandit via Makefile | |
| 2026.0.0.2 | period | Support an easy way to set/manipulate the period with the default being the 20 mS standard value |
NOTICE
As with many frc projects, the code in this module draws from many other repositories belonging to different teams. As I begin to extract code and move it into this repo, I hope to provide credit below. If I miss anyone, my apologies, it is not intentional.
Also, we use: - both Rev and CTRE motors - pathplanner - pykit - PhotonVision (and maybe Limelight soon)
So those modules will be downloaded if you install this module as well. Maybe a little code bloat, but it should not be much of an impact in 2027 where this is being targeted.
Westwood Robotics - 1757
- The original work on pykit and of course their robots tha provide good examples of how to use pykit
Team 714
- Gene Panov's (Team 714) CommandRevSwerve project and so many good videos of how to use robotpy...
- Misc vision videos by other team members
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lib_6107-2026.0.0.2.tar.gz.
File metadata
- Download URL: lib_6107-2026.0.0.2.tar.gz
- Upload date:
- Size: 105.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad20591fcc5cf7b6b3b70a5b0298ec6fb6143bf8b4fb47b47b0598c89703166e
|
|
| MD5 |
25bcc6c595bf0f39ab22f58b3ffc15ad
|
|
| BLAKE2b-256 |
850f2354361cba5b5ed0b7c59914426b5da35e2eeb28585994c0fa36d8d2b4ed
|
File details
Details for the file lib_6107-2026.0.0.2-py3-none-any.whl.
File metadata
- Download URL: lib_6107-2026.0.0.2-py3-none-any.whl
- Upload date:
- Size: 157.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6171feceb98c716b3d2a9e575d385a3c86471e83e2d9410e5c5006eeb3e4b90
|
|
| MD5 |
29bbd9f52889cde1b1c52ede9f68fbb1
|
|
| BLAKE2b-256 |
347682a0d0bae19cb19459a35799265fd17a1ba830f21bad2f8a84b564a4f659
|