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.

Impovement Task Description
lib_2026 move 2026.0.1 - Successful move into an installable module. Little or no added functionality.
lint-part-1 [automation] Support lint via Makefile
bandit-part-1 [automation] Support bandit via Makefile
build-part-1 [automation] Support automated release via Makefile
-
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)
-
period Support an easy way to set/manipulate the period with the default being the 20 mS standard value
-
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.
-
-
DONE ------------- ---------------------------------------------
Placeholder As items are completed, the will be moved below this lineDo we want to support pitch and roll in our logged gyro outputs
with the version that they first became available in

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.1.tar.gz (103.8 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.1-py3-none-any.whl (155.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

Hashes for lib_6107-2026.0.0.1.tar.gz
Algorithm Hash digest
SHA256 52a7fffa1f744e4dd0c533b7ae94bab022eb41b9ec62f97429a93e050f10a26e
MD5 422b291a87fd1912eb0154ba24ad7ab4
BLAKE2b-256 cd29102d5720e0b16c74b688c649798244da229c9611d9597f78528e03db21f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lib_6107-2026.0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 155.6 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b91af9cbfe159414cec1502f7531019a3c6559e7c2faa0b62ce2eb9788a4205e
MD5 b51321ad22213c8397f2ab92cc32e093
BLAKE2b-256 a98cf489551ff9d42cebd58ba0ffce26d4fe3b7aa2e4f7ed91028cb3624947b0

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