Skip to main content

marinholab-sas-core

Python bindings for the ROS-free SmartArmStack C++ core.

This repository wraps MarinhoLab/sas_cpp (the pure-C++ part of SmartArmStack/sas_core) with pybind11, exposing it to Python as the marinholab.sas.core package.

More information about SmartArmStack is available in smartarmstack.github.io.

Contents

  • marinholab/sas/core/ — the Python package.
    • _core.* — compiled pybind11 extension (the C++ bindings live in src/).
    • example_*.py — example scripts (also installed as commands).
  • src/ — the C++ binding sources (ported from SmartArmStack/sas_core).
  • submodules/sas_cpp — the C++ core (git submodule, consumed via CMake).
  • submodules/pybind11 — pybind11 (git submodule, pinned to v3.0.4).
  • docker/ — ubuntu:noble build environment and full test pipeline.

The C++ core depends on Eigen3 and dqrobotics (the latter is located by CMake at build time; on Debian/Ubuntu it comes from the DQ Robotics PPA).

Installation

From source:

git clone --recursive https://github.com/MarinhoLab/sas_py.git
cd sas_py
pip install . --no-build-isolation

Building requires cmake (>= 3.16), ninja, a C++17 compiler, Eigen3, and dqrobotics. On Debian/Ubuntu:

sudo apt install build-essential g++ cmake ninja-build python3-dev libeigen3-dev
# dqrobotics from the DQ Robotics PPA:
sudo add-apt-repository -y ppa:dqrobotics-dev/development
sudo apt install libdqrobotics

Usage

from marinholab.sas.core import (
    Clock,
    Statistics,
    RobotDriver,
    ShutdownSignaler,
)

# High-resolution sampling clock
clock = Clock(0.01)          # 10 ms sampling period
clock.init()
for _ in range(100):
    clock.update_and_sleep()
print(clock.get_statistics(Statistics.Mean, Clock.TimeType.Computational))

# Subclass RobotDriver to drive hardware
class MyDriver(RobotDriver):
    def __init__(self, ss):
        super().__init__(ss)
    def get_joint_positions(self):
        return np.zeros(6)
    def set_target_joint_positions(self, target):
        ...
    def connect(self):
        ...
    def disconnect(self):
        ...
    def initialize(self):
        ...
    def deinitialize(self):
        ...

The examples are installed as commands:

  • sas_core_clock_example — a 10 ms Clock with timing statistics.
  • sas_core_clock_sched_fifo_example — a 1 ms Clock under SCHED_FIFO.
  • sas_core_robot_driver_subclass_example — subclass RobotDriver in Python and exercise the trampoline (connect / initialize / targets / limits).

Versioning

The version is computed from git tags at build time by setuptools-git-versioning. A monthly version tag of the form YY.MM (e.g. 26.09) plus the number of commits since that tag yields a rolling YY.MM.NN version (e.g. 26.09.3), mirroring MarinhoLab/sas_cpp. An untagged checkout builds as 0.0.1 (a development version).

Testing

A full build + test pipeline runs in an ubuntu:noble container:

cd docker
docker compose run --rm marinholab_sas_core

License

See LICENSE for details (LGPLv3).

Metadata

Release files for marinholab-sas-core 26.9.5

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

Built distributions (wheels)

Table of built distributions (wheels) for marinholab-sas-core 26.9.5
File
marinholab_sas_core-26.9.5-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ x86-64 Details
marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ ARM64 Details
marinholab_sas_core-26.9.5-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.39+ x86-64 Details
marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.39+ ARM64 Details
marinholab_sas_core-26.9.5-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.39+ x86-64 Details
marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.39+ ARM64 Details

Total release size: 1.5 MB

Release files / marinholab_sas_core-26.9.5-cp312-cp312-win_amd64.whl

Download URL marinholab_sas_core-26.9.5-cp312-cp312-win_amd64.whl
Size 155.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
797dd5e13660b74c13d4c8184fc652dc224632ed06d12b09094ecc647e216f4e
BLAKE2b-256 checksum
How to use checksums
c353696ddf36e8d6ce2e80f16386d08b3d8b0a2e54e23a6471070bfa233c4153
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_x86_64.whl

Download URL marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_x86_64.whl
Size 175.1 kB
Tags CPython 3.12 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
aa80eced6c5f341cf19ef7f442069ed70140e4018ba169f75b103628dd5c3fa2
BLAKE2b-256 checksum
How to use checksums
ba5f513deef2bb2e3c76979dcd870491c3b93de7a61cb81605fed828b69c3138
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_aarch64.whl

Download URL marinholab_sas_core-26.9.5-cp312-cp312-manylinux_2_39_aarch64.whl
Size 159.7 kB
Tags CPython 3.12 Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
a116fc60445cf3fb0a2ef25ad65efd292225df72170476bb0af8c4ee0c9b7f6c
BLAKE2b-256 checksum
How to use checksums
f382d9157564ff43156673c865c6dd3c5ab893f354a52430f53a95bed089c04a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp311-cp311-win_amd64.whl

Download URL marinholab_sas_core-26.9.5-cp311-cp311-win_amd64.whl
Size 152.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ad6a9ff28a354b86fc0f79fce22293588e85146b71b3d283890c1a2ac0797f47
BLAKE2b-256 checksum
How to use checksums
712fb398a0e7a823cb131ead4b6e1979a173f882273cab66e46375fd937c5fc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_x86_64.whl

Download URL marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_x86_64.whl
Size 174.2 kB
Tags CPython 3.11 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
06baaf48e70a3544ec9aaa18c7e63b241962480677fc24428ec4df17b61a07f6
BLAKE2b-256 checksum
How to use checksums
65c2400f5a0ba195f66382b2b7d73d387d924176e685d2d43dbb882fa74ef611
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_aarch64.whl

Download URL marinholab_sas_core-26.9.5-cp311-cp311-manylinux_2_39_aarch64.whl
Size 158.7 kB
Tags CPython 3.11 Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
00b0183f36bc7cd09f3c92e1a5c5acc0b84a829c2464768bbfd254c37d8efa9e
BLAKE2b-256 checksum
How to use checksums
3f19032c5d30281efd4926f0a68f8ad641b8a28741458de26ee61403d11aec20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp310-cp310-win_amd64.whl

Download URL marinholab_sas_core-26.9.5-cp310-cp310-win_amd64.whl
Size 149.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
79292ba7c1ac08e1b28c31ad33c1c5d05698ac776ff43e54e3857c624023095c
BLAKE2b-256 checksum
How to use checksums
fe217959698a4e3414abac90636ec01701ca5a4166998f92fa774cf4ec2a770d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_x86_64.whl

Download URL marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_x86_64.whl
Size 173.2 kB
Tags CPython 3.10 Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
b2e44c2e8fe2b9afde1b362fc59190193c20f6a195cb084e54ccd9479bc1870b
BLAKE2b-256 checksum
How to use checksums
1b88179fef57bdd24c1dd22511fc8110ae048b0d56f69c5d3261e90c639654bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release files / marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_aarch64.whl

Download URL marinholab_sas_core-26.9.5-cp310-cp310-manylinux_2_39_aarch64.whl
Size 158.1 kB
Tags CPython 3.10 Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
2a170f129b2fa643102f6c5c5b0e8e2b2d54859817a6e7f24f198b1a27375752
BLAKE2b-256 checksum
How to use checksums
bd96ce557ccd953c61b344f1c0e4114e9b324dd61bc1cef980a88ba072dcaf1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.

Transparency log

Release history Release notifications | RSS feed

26.9.8

9 release files

26.9.6

9 release files

This release

26.9.5 This release

9 release files

26.9.4

6 release files

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