Skip to main content

j5

Tests Test Coverage Maintainability Documentation Status PyPI version MIT license Bees

j5 Framework - Creating consistent APIs for robotics

What is j5?

j5 is a Python 3 framework that aims to make building consistent APIs for robotics easier. It was created to reduce the replication of effort into developing the separate, yet very similar APIs for several robotics competitions. Combining the common elements into a single library with support for various hardware gives a consistent feel for students and volunteers. This means more time to work on building robots!

How do I use j5?

j5 is designed to never be visible to students. It sits behind the scenes and works magic.

from robot import Robot

r = Robot()
r.motor_boards[0].motors[1] = 0.5

The above code is likely to be familiar to any student who has competed in one of the below competitions. However, it is not a trivial problem to make this code portable across the platforms. For example, the motor board for Student Robotics is a separate board to the brain board, but is built into the same board for HR RoboCon.

j5 lets competition vendors define how the basic parts of the apis are accessed. A robot can thus be constructed from any combination of parts from various organisations.

from j5 import BaseRobot
from j5.backends.hardware.sr.v4 import (
    SRV4MotorBoardHardwareBackend,
    SRV4PowerBoardHardwareBackend,
    SRV4ServoBoardHardwareBackend,
)
from j5.boards import BoardGroup
from j5.boards.sr.v4 import MotorBoard, PowerBoard, ServoBoard


class Robot(BaseRobot):
    """My Competition Robot."""

    def __init__(self) -> None:
        self._power_boards = BoardGroup.get_board_group(
            PowerBoard, SRV4PowerBoardHardwareBackend,
        )
        self.power_board = self._power_boards.singular()

        self.motor_boards = BoardGroup.get_board_group(
            MotorBoard, SRV4MotorBoardHardwareBackend,
        )
        self.motor_board = self.motor_boards.singular()

        self.servo_boards = BoardGroup.get_board_group(
            ServoBoard, SRV4ServoBoardHardwareBackend,
        )
        self.servo_board = self.servo_boards.singular()

Competitions

We intend to support the kits of the following robotics competitions:

Whilst j5 isn't officially endorsed by Student Robotics or RoboCon, we are working closely with Student Robotics to ensure perfect compatibility. Many j5 contributors are members of Student Robotics and SourceBots.

sbot, a j5 based API, was successfully deployed to over 100 users in August 2019. This is the first known case of a real-world deployment of a j5 based API.

If you are interested in adding support for your hardware or building your own API, please get in touch.

Contributions

This project is released under the MIT Licence. For more information, please see LICENSE.

j5 contributors refers to the people listed in the CONTRIBUTORS file.

The CONTRIBUTORS file can be generated by executing CONTRIBUTORS.gen. This generated file contains a list of people who have contributed to the j5 project.

More information about contributing, and how to contact contributors can be found in our docs

Metadata

Release files for j5 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for j5 1.1.2
File Size Uploaded Provenance
j5-1.1.2.tar.gz 45.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for j5 1.1.2
File Interpreter ABI Platform
j5-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 117.4 kB

Release files / j5-1.1.2.tar.gz

Download URL j5-1.1.2.tar.gz
Size 45.1 kB
Tags Source
SHA-256 checksum
How to use checksums
1e7c74ce97a976f7489464daefa59e8791679c88223f7b1e7c351155763dc0bc
BLAKE2b-256 checksum
How to use checksums
db72c1a0e7628dfe816dca8706428cc49471932a46b6e448e9d111d3c1f71e52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.7.14 Linux/5.15.0-1020-azure

Release files / j5-1.1.2-py3-none-any.whl

Download URL j5-1.1.2-py3-none-any.whl
Size 72.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6d48865e4a702326b637e02444dfc66700c34dbcf2167d28de751acb481242bb
BLAKE2b-256 checksum
How to use checksums
ab336855e760a8897beb3952ec32ad3ed23c41aff1ef1a14cb93e6ba40d5dbaa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.2 CPython/3.7.14 Linux/5.15.0-1020-azure

Security for j5 1.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page