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.4

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.4
File
marinholab_sas_core-26.9.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
marinholab_sas_core-26.9.4-cp312-cp312-manylinux_2_39_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.39+ ARM64 Details
marinholab_sas_core-26.9.4-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
marinholab_sas_core-26.9.4-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.4-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
marinholab_sas_core-26.9.4-cp310-cp310-manylinux_2_39_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.39+ x86-64 Details

Total release size: 964.6 kB

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

Download URL marinholab_sas_core-26.9.4-cp312-cp312-win_amd64.whl
Size 155.4 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
651beb51a373c3db1c2eaad8bb0eade09c84d3fd2d96b6601abc35befa5ba993
BLAKE2b-256 checksum
How to use checksums
a8e1b09772fd078b520bc595c2777f0e6f7ad28b46bb60c2e7097f0acacb22e5
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.4-cp312-cp312-manylinux_2_39_aarch64.whl

Download URL marinholab_sas_core-26.9.4-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
6f618910f0fca33872910ea64657edbeaac64ef7cb0c5b10a912f28075f307bd
BLAKE2b-256 checksum
How to use checksums
b03a9c73584c2a5ca84508b9f1984ac1b7d49d30434123c3a1abc8e1c847d0e0
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.4-cp311-cp311-win_amd64.whl

Download URL marinholab_sas_core-26.9.4-cp311-cp311-win_amd64.whl
Size 152.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
7aa4568c71201eac5321a281f3571b8463686d6969ec0fe846d515f1b66fe869
BLAKE2b-256 checksum
How to use checksums
61282e37c45d0bbc0d7fedf0fee5882dddd5d3ef95dfb43bd05207f0bc54aeab
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.4-cp311-cp311-manylinux_2_39_x86_64.whl

Download URL marinholab_sas_core-26.9.4-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
2db03835f72256e353bb1b77aa12390fef3130b78e9b56510262f3a73cc8c261
BLAKE2b-256 checksum
How to use checksums
3e9e1d3859cd00beefce051a54f2dc70739ee13f7d8424fd26968c6f1c8e6e59
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.4-cp310-cp310-win_amd64.whl

Download URL marinholab_sas_core-26.9.4-cp310-cp310-win_amd64.whl
Size 149.7 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b17142f87e8f434d23de3ae3bd16b1dbbcba1eae805149af83f771eafde2cc86
BLAKE2b-256 checksum
How to use checksums
97ecc8f9576fe0103d91614a914394a70181c3788c00d7274e93f71c4b031807
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.4-cp310-cp310-manylinux_2_39_x86_64.whl

Download URL marinholab_sas_core-26.9.4-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
66e25f485956d6bf547a3a7122ab73641b1fcd4d9956845aad5340cfd8a87cd2
BLAKE2b-256 checksum
How to use checksums
4de02688c5d14342b8f60411516e3cd96a15f95074747de3b6f60b21bd75630b
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

26.9.5

9 release files

This release

26.9.4 This release

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