Skip to main content

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
drivesubsystem A base subsystem for a drivetrain (focus on swerve initially)
-
build-part-1 [automation] Support automated release via Makefile
-
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
-
2027 [guidance] Review what is changing in 2027 with new systemcore and create a plan to get rid of any deprecated items (Dashboard, ...)
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
--- ----------
2026.0.0.3 constants Do constants better so initial value are in lib_6107 but easy to override by developers
2026.0.0.3 robot base Base class for the robot that is responsible for at least the initial logging setup and determining if this is a replay
2026.0.0.3 simulation base A base class for simulation (physics.py)
2026.0.0.3 subsystem base Base subsystem class that supports pykit, simulation, and sysId overridable methods

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lib_6107-2026.0.0.3.tar.gz (120.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lib_6107-2026.0.0.3-py3-none-any.whl (178.0 kB view details)

Uploaded Python 3

File details

Details for the file lib_6107-2026.0.0.3.tar.gz.

File metadata

  • Download URL: lib_6107-2026.0.0.3.tar.gz
  • Upload date:
  • Size: 120.6 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

Hashes for lib_6107-2026.0.0.3.tar.gz
Algorithm Hash digest
SHA256 4717f1e5e4254a22f287ad14c3709b46c84faab9905015db5998d56fd006e41d
MD5 340220fb085705ffd4e9db48a535bd63
BLAKE2b-256 22c7cbeda6351b7844ccc1eb0a030a1a4c91160fdf8b9ead123af19667234bbf

See more details on using hashes here.

File details

Details for the file lib_6107-2026.0.0.3-py3-none-any.whl.

File metadata

  • Download URL: lib_6107-2026.0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 178.0 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

Hashes for lib_6107-2026.0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 19fa9d256fd5dc1cec64c50f673371b4c145ba13aa76161d07e66f34afc02ecc
MD5 6d07f761c8f862b8bf76f961ddd80190
BLAKE2b-256 b752a2df3058a984dbf191e0e9dbcefe82e4f00ef274317e227ae56c967108ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page