Skip to main content

Native FK, Jacobian, IK, and runtime-state acceleration for WRS JLChain

Project description

WRS JLChain Native

Native FK, Jacobian, IK, and runtime-state acceleration for WRS JLChain.

The package keeps the WRS Python API intact while moving the hot kinematics work into a C++ backend. The first backend is implemented with Orocos KDL; the Python adapter is structured so additional backends such as Pinocchio or RBDL can be added later without changing robot code.

Package Names

  • GitHub repository: wrs-jlchain-native
  • PyPI package: wrs-jlchain-native
  • Python import package: wrs_jlchain_native
  • Native extension: _wrs_jlchain_native_kdl

Requirements

  • Python 3.10 or newer
  • NumPy
  • A WRS checkout when using the accelerated drop-in JLChain
  • A C++17 compiler for source builds
  • CMake and pybind11 for source builds

Wheel builds use includeigen to provide Eigen headers and build the bundled Orocos KDL source from third_party/orocos_kinematics_dynamics.

Repository Layout

src/
  CMakeLists.txt
  python/wrs_jlchain_native/
    __init__.py
    backends.py
    jlchain.py
  wrs_jlchain_native/
    kdl_backend.cpp
    python_bindings.cpp
    include/wrs_jlchain_native/
      backend.hpp
      kdl_backend.hpp

Install From PyPI

After publishing:

python -m pip install wrs-jlchain-native

Then use the native-backed chain directly:

from wrs_jlchain_native import JLChain

jlc = JLChain(n_dof=6, backend_name="kdl")
jlc.finalize()

This package is intentionally kept outside the WRS source tree. To integrate it with a WRS robot class, import wrs_jlchain_native.JLChain in the WRS-side module that constructs the robot's kinematic chain, or add a small compatibility shim in your WRS checkout that aliases this class.

from wrs_jlchain_native import JLChain as NativeJLChain

chain = NativeJLChain(n_dof=6, backend_name="kdl")

Runtime Selection

Per chain:

chain = JLChain(n_dof=6, backend_name="kdl")

Globally:

$env:WRS_JLCHAIN_BACKEND="kdl"

Supported values:

  • auto: try the native backend and fall back to Python
  • kdl, orocos, orocos_kdl: require the Orocos KDL backend
  • python, none, off: force the original Python implementation

Build From Source

Initialize submodules first:

git submodule update --init --recursive

Build a wheel:

python -m pip install build
python -m build --sdist --wheel

Manual CMake build:

cmake -S src -B build\jlchain_native `
  -DCMAKE_PREFIX_PATH=D:\code\venv312\.venv\Lib\site-packages\pybind11\share\cmake\pybind11 `
  -DPYTHON_EXECUTABLE=D:\code\venv312\.venv\Scripts\python.exe

cmake --build build\jlchain_native --config Release

If Eigen is not discovered through includeigen, pass it explicitly:

-DEIGEN3_INCLUDE_DIR=D:\code\vcpkg\packages\eigen3_x64-windows\include\eigen3

For local WRS testing without installing a wheel, put the build output on PYTHONPATH:

$env:PYTHONPATH="D:\code\c_implementation_backend\build\jlchain_native\Release;$env:PYTHONPATH"

Benchmark

The benchmark used during development lives in the separate WRS checkout and is not committed to this standalone package repository. From a WRS workspace that contains that benchmark, add the native build output or installed wheel to PYTHONPATH and run:

D:\code\venv312\.venv\Scripts\python.exe wrs\0000_test_programs\jlchain_speed_benchmark.py

It reports FK, FK plus Jacobian, direct Jacobian, FK state update, update plus Jacobian, and IK timings, along with numerical error checks.

CI And Publishing

GitHub Actions workflows are in .github/workflows:

  • ci.yml: builds source distribution and wheels on pull requests and pushes
  • publish.yml: builds distributions and publishes to PyPI on GitHub releases

PyPI publishing uses Trusted Publishing. Configure the PyPI publisher with:

  • repository: <owner>/wrs-jlchain-native
  • workflow: publish.yml
  • environment: pypi

License

This package links against/builds Orocos KDL, which is LGPL-2.1-or-later. The package metadata therefore uses LGPL-2.1-or-later.

Project details


Download files

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

Source Distribution

wrs_jlchain_native-0.1.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distributions

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

wrs_jlchain_native-0.1.0-cp314-cp314-win_amd64.whl (338.2 kB view details)

Uploaded CPython 3.14Windows x86-64

wrs_jlchain_native-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (169.3 kB view details)

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

wrs_jlchain_native-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (138.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

wrs_jlchain_native-0.1.0-cp313-cp313-win_amd64.whl (327.1 kB view details)

Uploaded CPython 3.13Windows x86-64

wrs_jlchain_native-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (169.3 kB view details)

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

wrs_jlchain_native-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (137.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

wrs_jlchain_native-0.1.0-cp312-cp312-win_amd64.whl (327.1 kB view details)

Uploaded CPython 3.12Windows x86-64

wrs_jlchain_native-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (169.4 kB view details)

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

wrs_jlchain_native-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (137.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

wrs_jlchain_native-0.1.0-cp311-cp311-win_amd64.whl (325.4 kB view details)

Uploaded CPython 3.11Windows x86-64

wrs_jlchain_native-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (168.2 kB view details)

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

wrs_jlchain_native-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (136.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

wrs_jlchain_native-0.1.0-cp310-cp310-win_amd64.whl (324.3 kB view details)

Uploaded CPython 3.10Windows x86-64

wrs_jlchain_native-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (167.3 kB view details)

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

wrs_jlchain_native-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (135.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file wrs_jlchain_native-0.1.0.tar.gz.

File metadata

  • Download URL: wrs_jlchain_native-0.1.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wrs_jlchain_native-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2aaae06a6bfc7930df4dec8747cc508d4ff42d26ecff025fd08a57039a1aac4e
MD5 c2a24d81f8af28fe124ce3e80526c81b
BLAKE2b-256 6b08f8ca2c21edcaa26ebce42a92a2aebf56fb6bdb3676d0d9576242aa63741d

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0.tar.gz:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 215a4f9a9b3dfd8ae1e680ea895ccce594272587eeaa767174a3f98f0b6dfe73
MD5 79635d7758ef2e0a9f56b13b043bc281
BLAKE2b-256 d4f53e2179cc2aca029d2d241bd7c0d2dd5575ab2adaa1161a2bad9d4d7d2fad

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8e1c086663bab80df50f9b59461bbc417e0db87a865a6b1ad1183bdc29cb93cc
MD5 de6add973e9dd53c6c3ff2215d04be6e
BLAKE2b-256 410cd9dc68fdaa7916871d7143168c3aa5ac46c1c7a0431dbf1ab068aabb06dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 74669ed4e6384fa80011b479dcada7c185624eeca79d92fb308c86b93fd45713
MD5 50bba6e48a195908aa6cd92228972f05
BLAKE2b-256 faf394f941f569559f6bc502433542c606ec402c90fd85d98ef086f02340b4ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 74a7f5ff3905848bfd897acef5331129f39aa4b31bb577cc71350a05a3e2258c
MD5 7c5b60ae86ed94d6036b51c8a0db54f1
BLAKE2b-256 11785d493ab1b4e392fa8273e9f4dad25ec1c69c21895db3d90702f3c49b90a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1d248b33349d99881bfee84799b0dd075df91ca03139f977165b335a03c717af
MD5 76b272c9eca06081d3920010b1fb590e
BLAKE2b-256 5bad3aeb43b6a7dd3fd711167578d6cd95e602b6e1d35536fbb814ba14545844

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11b8f6eaaf7f9af8a03ee10cbeb0d29491006fcf81d97e0bfa8971388686667e
MD5 6bb0359849143230e7a77a7a34c5bfaf
BLAKE2b-256 c79b77529918c8abb027606a98a7ce19ff58a3a6fe57a9e0e657f2e7837e8b01

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4d1c14a4a9efdc3f2f0c3ab63ea75b278414f3cc94409c8d4a3ad74179fc8125
MD5 c833150567bf7af3c55c0e26503c3af1
BLAKE2b-256 ac65f6eec30293cccbb63c3403fc84bbbfc53334578bfd8eafb283ee37b658c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4be7c6857f249b46cb131f8b16cdc07c391861e06db5290fb412e59955272ce
MD5 67606af1711e21b2950aec4ec28e8340
BLAKE2b-256 e9f93834f76eb94b75d2370d83fa27dbb251609fb773770348671bfcbe86e490

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d85739cfcd18491299ce75c078043033a17b7374784b99ca91a31cbf54e7cca2
MD5 74c9f73a15bfc9841165819a597f1b06
BLAKE2b-256 d2e7d49d4dafe839457ce1135b7d4106a5afe4515c8ba06739ff91a4e3d32823

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3242e72ffbb2b840981e36556589d94e6277f472728db588083cd13514098c6e
MD5 ef2c3b47956b0613bf1d34ed60463971
BLAKE2b-256 59827aee6dad3759866fe1b6a82b95028f824bdd4625f20a15b1eb6394ee1110

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c51d14380619692455d373f134fe3a0cf2c99d7ebe53e211ce7d35b696e3bd72
MD5 01af658a446b024e349f03e896f44dec
BLAKE2b-256 3bfe76c55f06a9c81d862250380e2073bc35b0af9f54d95d447ede50d52e5105

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 906229d51e449e308a330073fd716183b53140a10b1cc32b5842213a3a85b565
MD5 e789e0b1c3258f44182c06bc5773f47d
BLAKE2b-256 ad9cc9bd9de59de11c69ae80da7261ff244d866cfafdef5e0c1b2ac44c80f647

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f452ae10658184a071516e3757bb27d485011cb65152db5cb530836a9b7b5e64
MD5 df95b9abe7a0d545ff6953c3a8bdcb4f
BLAKE2b-256 bd453a3ec33bb5c000c429a903b53d67407a492f57d9b0b56b411faac98a6ff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 148a382f4e36cb23fda10ae941a292e927b6a15604aa72435ddb93b018d0ab88
MD5 a1e630ab6f7b82d8e1518c5d51e3ade4
BLAKE2b-256 0070bfb9e629efca196c34881ee0af0c33bc255d63201acd28b727f2a8fd6c5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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

File details

Details for the file wrs_jlchain_native-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for wrs_jlchain_native-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 668000c84d134ce4453aa86518171b9d940d860ab08ae4931b2cf60077b2cc77
MD5 cea332b5f575874c02505cab4273d8b4
BLAKE2b-256 a69dc3225742d75e83f508dd7a5616b4efbc6c15b60a99fcd45c386475d6059b

See more details on using hashes here.

Provenance

The following attestation bundles were made for wrs_jlchain_native-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on chenhaox/wrs-jlchain-native

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