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.96-cp313-cp313-win_amd64.whl (5.5 MB view details)

Uploaded CPython 3.13Windows x86-64

raccoon_library-1.0.96-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.8 MB view details)

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

raccoon_library-1.0.96-cp313-cp313-macosx_14_0_universal2.whl (8.5 MB view details)

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

raccoon_library-1.0.96-cp312-cp312-win_amd64.whl (5.5 MB view details)

Uploaded CPython 3.12Windows x86-64

raccoon_library-1.0.96-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.8 MB view details)

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

raccoon_library-1.0.96-cp312-cp312-macosx_14_0_universal2.whl (8.5 MB view details)

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

File details

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

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f4e24d62436d018448fb56c1f51f9f6297bd0c92b36e4e94499a105407f7fa46
MD5 24d34425b116a7091fc3ee76b9d3d6b4
BLAKE2b-256 45315f68599db3f2356f6f300020a0baa3b428af05384e6520c8a20798b4e643

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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.96-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69dec6030919f5df0ba100c93a6fd1d71ad363d9e9eeb6ddb52b4add282aba85
MD5 d896515dcb4d566049adbece581eb01f
BLAKE2b-256 4dde7ebb1c187f8729849355dd2be7cd0551910c1f2550e8c05cc6f61d3c911e

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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.96-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 e178106e7a3e41551eb7bd360e3b1f1ca68fdca8f11d6d50f8e3ed2120c6dc5e
MD5 5d99e02f5a8b6fa9e9d32c085239baaa
BLAKE2b-256 f3f481a102d33aa90a92a2e14655cc52cbd662aceb16fa8aabde82e1f4b1ae81

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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.96-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 7971477a62842960ae78a354e0b35b03c519524a463286c96872be745bc813fc
MD5 80d3d738a44986be8cd2e31520a9d7ad
BLAKE2b-256 379edd8f781cde63f6f8355ce6e7af2e3d8640e059b858a55f36d2b885d0774d

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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.96-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 27ac9948f2fa7a742482cb69354aebf9a3ef7fb46f0ffc4e4bad141aa6d673c3
MD5 daeb2a8f2916e3a60df57246e5b23eeb
BLAKE2b-256 56bf312a37cecaefd80c9c809ca92f3e1c5ecbfaac56a81570a19b76dc737104

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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.96-cp312-cp312-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for raccoon_library-1.0.96-cp312-cp312-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 c8f7647c72c8dcece2f453750c222d13da6e90c3cfff03650a1ea271db2b638f
MD5 8d644c1f7ac42f4f45e21e134a16c025
BLAKE2b-256 49396d06434e4abc49b19cd4895b3cd2ba3407c30e45288527b717d1a005cb58

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_library-1.0.96-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