Skip to main content

Raccoon robotics library (formerly libstp)

Project description

RaccoonLib

RaccoonLib

The core robotics library powering RaccoonOS for Botball.

PID motion control · Kinematics · Odometry · Step-based missions · Python bindings

Build & Release Latest Release License: GPL v3 C++20 Python Raspberry Pi Platform

📖 Full documentation at raccoon-docs.pages.dev


RaccoonLib is the heart of RaccoonOS — a full robotics platform built for Botball competition. It gives your robot a solid foundation: reliable motion, clean sensor abstractions, and a step-based mission system that makes autonomous code readable and maintainable.

Built from years of competition experience at HTL St. Pölten, it's designed so that new teams don't have to start from zero.


What's Inside

Module What it does
Motion Control PID-controlled drive_forward, turn_right, drive_strafe with feedforward compensation
Calibration Auto-tune feedforward (kS, kV, kA) and PID via relay-feedback — no guessing
Kinematics Differential and mecanum drivetrains — forward & inverse
Odometry Real-time position and heading from wheel encoders + IMU fusion
Step Framework seq(), parallel(), .until() — write missions like a readable recipe
Sensors & Actuators IR sensors, buttons, servos — clean, consistent API
Python Bindings Full Python API via pybind11 — same power, less boilerplate

Getting Started

RaccoonLib runs on the KIPR Wombat controller (Raspberry Pi, ARM64). Local installs without a mock platform are not supported — deploy directly to the Pi.

1. Clone

git clone https://github.com/htl-stp-ecer/raccoon-lib.git --recurse-submodules
cd raccoon-lib

2. Build & deploy to your Pi in one step

RPI_HOST=<your-pi-ip> bash deploy.sh

This cross-compiles for ARM64 via Docker and installs the wheel on your Pi over SSH. No local toolchain setup needed.

Variable Default Description
RPI_HOST (required) Raspberry Pi IP address
RPI_USER pi SSH username
RPI_DIR /home/pi/python-libs Install directory
BUILD_TYPE Release CMake build type

Starting a new robot project? Use raccoon-cliraccoon create project MyRobot runs a hardware wizard and generates your robot config, project structure, and deploy scripts automatically.


How It Works

You write missions. RaccoonLib handles the math.

Missions are Python classes with a sequence() method — describe what the robot does step by step:

from libstp import *

class M01NavigateToZone(Mission):
    def sequence(self) -> Sequential:
        return seq([
            mark_heading_reference(),       # lock current heading as 0°

            parallel(
                drive_forward(cm=40),       # drive while lowering arm
                seq([
                    wait_until_distance(7),
                    Defs.arm_servo.hold(),
                ]),
            ),

            turn_right(degrees=90),

            # drive until both IR sensors see black tape
            drive_forward().until(
                on_black(Defs.front.left) & on_black(Defs.front.right)
            ),

            drive_backward(cm=3),
        ])

The robot hardware config (motors, sensors, PID gains) is generated by raccoon-cli's hardware wizard — see raccoon-example for a fully commented reference.


Architecture

RaccoonLib Architecture

Requirements

  • CMake >= 3.15
  • C++20 compatible compiler
  • Python >= 3.11
  • Docker (for ARM64 cross-compilation)

C++ dependencies: Eigen3 3.4.0 · LCM 1.5.0 · spdlog 1.14.1 · pybind11 2.13.6
Python dependencies: pyyaml · aiosqlite


Testing

# C++ tests
cmake -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

# Python tests
pytest tests/

Part of RaccoonOS

RaccoonLib is one piece of the full platform:

Repository What it is
raccoon-cli Dev toolchain — scaffolding, hardware wizard, raccoon run
raccoon-example Reference robot — start here if you're new
raccoon-transport LCM messaging layer (C++, Python, Dart)
documentation Full platform docs

Contributing

See CONTRIBUTING.md for how to add modules, steps, run tests, and follow code style.


License

Copyright (C) 2026 Tobias Madlberger
Licensed under the GNU General Public License v3.0 — see LICENSE for details.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

raccoon_library-1.0.98-cp313-cp313-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.13Windows x86-64

raccoon_library-1.0.98-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

raccoon_library-1.0.98-cp313-cp313-macosx_14_0_universal2.whl (8.3 MB view details)

Uploaded CPython 3.13macOS 14.0+ universal2 (ARM64, x86-64)

raccoon_library-1.0.98-cp312-cp312-win_amd64.whl (5.3 MB view details)

Uploaded CPython 3.12Windows x86-64

raccoon_library-1.0.98-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

raccoon_library-1.0.98-cp312-cp312-macosx_14_0_universal2.whl (8.3 MB view details)

Uploaded CPython 3.12macOS 14.0+ universal2 (ARM64, x86-64)

File details

Details for the file raccoon_library-1.0.98-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b7f28fb7ab710a5b9c0c851f66d0b44fae410dbcdd915d5e6723792acafbdce7
MD5 a94783b576574e128cd6091ab4d01bf5
BLAKE2b-256 3ba786709409407bd7f93ad81b0cac6599b169892fdfb7167b0d06abea1a6c6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp313-cp313-win_amd64.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raccoon_library-1.0.98-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f87669635869dfbf381366d74ecf684f34a706c9bb04120f86b1e9248d13c98
MD5 24c1885f163293d3146175aff0ce85c9
BLAKE2b-256 f90b9a00b550c214323e42fc003e9dd5cab24b0394fd049206cd44568c18f1a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raccoon_library-1.0.98-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 9f4e99e9450eb4b4e7b1b4ef8e5ebd111f11d2a89d080420b226b6b8ed51831c
MD5 7577cedbda7c115dea00d56bd27f450a
BLAKE2b-256 1d8454371ad6abe4b3464e063209997145555ed497d0bd7bdc53d280a99e10b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp313-cp313-macosx_14_0_universal2.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raccoon_library-1.0.98-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8c711964811790c64216464c5f7a375e56de31ed2999b13780d1ec4e0040b39f
MD5 ef1c1f48791f9b73e949792774e24d5f
BLAKE2b-256 cf0239090026689c3255e7f11ce7f07a62f11d252abf4f6e64bbac9c3932fc00

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp312-cp312-win_amd64.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raccoon_library-1.0.98-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5b833a958f776e65c1162f5c34b1de5a167cdfea5210070a363c10ebbac032a5
MD5 e95ad93876a8025beaf28ef0bdc07c3f
BLAKE2b-256 c98b471921f632e4bc47dbcad8d729aab4fc6b54088f2993384c3854d281a066

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file raccoon_library-1.0.98-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.98-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 0676de4ee1a53f67f2bf119835434ea561d5193630fd2cecb7b3b3dd08ed0e51
MD5 657aa6136658680f6e81541b76455d9c
BLAKE2b-256 03308e99bd2b2a12ebf93b588d2b23c398cfd1bbcd3681c806cc8ca4bec63550

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.98-cp312-cp312-macosx_14_0_universal2.whl:

Publisher: ci.yml on htl-stp-ecer/raccoon-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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