Skip to main content

Raccoon robotics library — compiled runtime + simulator (native bindings; 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.

Installing from PyPI

RaccoonLib ships as two coordinated distributions:

Command What you get Use it for
pip install raccoon-library Platform-independent Python/.pyi headers (py3-none-any). No compilation, no native code. IDE type hints, type-checking, and the raccoon-cli toolchain codegen. Does not run the robot on its own.
pip install "raccoon-library[sim]" The above plus the compiled raccoon-sim bindings + simulator + mock/wombat runtime bundle. Actually running missions in the simulator, or on the Pi/Wombat.

The [sim] extra pulls in raccoon-sim, pinned to the exact same version, so the headers and the native bindings can never drift apart. import raccoon requires [sim] (or a locally deployed raccoon-sim wheel — see deploy.sh above).


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_sim-1.0.141-cp313-cp313-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.13Windows x86-64

raccoon_sim-1.0.141-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (7.1 MB view details)

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

raccoon_sim-1.0.141-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl (6.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ ARM64manylinux: glibc 2.28+ ARM64

raccoon_sim-1.0.141-cp313-cp313-macosx_14_0_universal2.whl (9.0 MB view details)

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

File details

Details for the file raccoon_sim-1.0.141-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for raccoon_sim-1.0.141-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bafedd9bb6a108f3eedb5fa6789d026444db136a218629e4b4e1c167dccfabe9
MD5 5cdc1828eb79eb8f815f5ee64de563a2
BLAKE2b-256 e6897d55ac084f4eb63b07e908c67bb37e6f174d2987ef1f5a9345bd67343cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_sim-1.0.141-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_sim-1.0.141-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for raccoon_sim-1.0.141-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e03b411472e48ce7c63fc8ac4c9a7abfffea682e3d19ddfb81f8e87e6d774c23
MD5 9da1ba70d4f6c3d2fdd7ffacd3bf4879
BLAKE2b-256 3ed6ba7214ed866cf6cd9710e9b35f5e6784e4ef14648358a2b2fc80d7bffa88

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_sim-1.0.141-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_sim-1.0.141-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for raccoon_sim-1.0.141-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9866e580824cba73a58f565f72551b6e2a34047d7d3bfd92923bc0bd6c8ce0d3
MD5 d6b7572352d4697cf1433602f89bfe84
BLAKE2b-256 2b71c84b343863def20210322b9e762d24a64e710050e25fc26ae94ac74cc919

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_sim-1.0.141-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.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_sim-1.0.141-cp313-cp313-macosx_14_0_universal2.whl.

File metadata

File hashes

Hashes for raccoon_sim-1.0.141-cp313-cp313-macosx_14_0_universal2.whl
Algorithm Hash digest
SHA256 770b9e86fe061ca31dbac4626b462e1bfb3d29ff1522a9ba29f639925ab8b6bf
MD5 39bb908ba8ea3716242ceef837a13a41
BLAKE2b-256 b440e44ad8d4e358a4fc37f653f9176aa671acdf2ce6b1a651d1a204d7e2a024

See more details on using hashes here.

Provenance

The following attestation bundles were made for raccoon_sim-1.0.141-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.

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