Skip to main content

A Python wrapper for the rs-opw-kinematics library

Project description

py-opw-kinematics

py-opw-kinematics is a Python wrapper for the rs-opw-kinematics library, providing an interface for solving inverse and forward kinematics of six-axis industrial robots with a parallel base and spherical wrist. Designed for convenience and performance, this wrapper is suitable for robotics simulation, control, and trajectory planning directly from Python.

Key Features

  • Ease of Use: Fully customizable end-effector rotation using Euler angles. Configurable to use degrees or radians.
  • High Performance: Capable of batch operations using Polars DataFrames for maximum efficiency. For example, 100,000 inverse kinematic solutions can be computed in just 0.4 seconds.
  • Full Rust Integration: Uses Rust for the core kinematic calculations, offering speed and robustness while allowing access through Python.
  • Singularity Handling: Manages kinematic singularities such as J5 = 0° or ±180°.

Installation

Install using pip:

pip install py-opw-kinematics

Note: Rust is required to compile the underlying Rust library if not using pre-built binaries.

Usage Example

Parameters

This library uses seven kinematic parameters (a1, a2, b, c1, c2, c3, and c4). This solver assumes that the arm is at zero when all joints stick straight up in the air, as seen in the image below. It also assumes that all rotations are positive about the base axis of the robot. No other setup is required.

OPW Diagram

To use the library, create a KinematicModel instance with the appropriate values for the 7 kinematic parameters and any joint offsets required to bring the paper's zero position (arm up in Z) to the manufacturer's position. The direction of each of the axes can be flipped with the flip_axes parameter if your robot's axes do not match the convention in the paper.

Additionally, you can specify the Euler convention to use for the end-effector rotation. The EulerConvention class allows you to specify the order of the rotations and whether they are extrinsic or intrinsic. The degrees parameter can be set to True to use degrees instead of radians.

If the robot has a parallelogram between joints 2 and 3, set has_parallelogram to True to link these axes.

Below is a basic example demonstrating how to define a robot, configure Euler conventions, and compute forward kinematics.

Single Operation Example

from py_opw_kinematics import KinematicModel, Robot, EulerConvention
import numpy as np

kinematic_model = KinematicModel(
    a1=400,
    a2=-250,
    b=0,
    c1=830,
    c2=1175,
    c3=1444,
    c4=230,
    offsets=(0,0,0,0,0,0),
    flip_axes=(True, False, True, True, False, True),
    has_parallelogram=True,
)
euler_convention = EulerConvention("XYZ", extrinsic=False, degrees=True)
robot = Robot(kinematic_model, euler_convention, ee_rotation=(0, -90, 0))

# Compute forward kinematics for a given set of joint angles
angles = (10, 0, -90, 0, 0, 0)
position, rotation = robot.forward(angles)
print(f"Position: {np.round(position,2)}, Rotation: {np.round(rotation,2)}")

# Compute inverse kinematics for a given position and rotation
for solution in robot.inverse((position, rotation)):
    print(f"Solution: {np.round(solution, 2)}")

This example prints:

Position: [2042.49 -360.15 2255.  ], Rotation: [  0.   0. -10.]
Solution: [ 10.   0. -90.  -0.   0.   0.]
Solution: [ 10.    90.76 -20.4   -0.    69.6    0.  ]
Solution: [  10.    0.  -90. -180.    0.  180.]
Solution: [  10.     90.76  -20.4  -180.    -69.6   180.  ]

Acknowledgements

This project builds on the Rust library rs-opw-kinematics by Bourumir Wyngs, which itself draws inspiration from:

  • The 2014 research paper: An Analytical Solution of the Inverse Kinematics Problem of Industrial Serial Manipulators with an Ortho-parallel Basis and a Spherical Wrist, authored by Mathias Brandstötter, Arthur Angerer, and Michael Hofbaur (ResearchGate link).
  • The C++ project opw_kinematics, which provided valuable insights for validation and testing.

Licensing

The py-opw-kinematics library itself is licensed under MIT.

The image opw.png, used for documentation purposes, is sourced from opw_kinematics and is licensed under the Apache License 2.0.

Contributing

We welcome contributions! Please see our Contributing Guidelines for more details on how to get started.

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

py_opw_kinematics-0.1.5.tar.gz (84.1 kB view details)

Uploaded Source

Built Distributions

py_opw_kinematics-0.1.5-cp312-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.12 Windows x86-64

py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

py_opw_kinematics-0.1.5-cp312-cp312-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

py_opw_kinematics-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

py_opw_kinematics-0.1.5-cp311-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

py_opw_kinematics-0.1.5-cp311-cp311-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

py_opw_kinematics-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

py_opw_kinematics-0.1.5-cp310-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

py_opw_kinematics-0.1.5-cp310-cp310-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

py_opw_kinematics-0.1.5-cp39-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

py_opw_kinematics-0.1.5-cp39-cp39-macosx_11_0_arm64.whl (3.3 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

py_opw_kinematics-0.1.5-cp38-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.8 Windows x86-64

py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

File details

Details for the file py_opw_kinematics-0.1.5.tar.gz.

File metadata

  • Download URL: py_opw_kinematics-0.1.5.tar.gz
  • Upload date:
  • Size: 84.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for py_opw_kinematics-0.1.5.tar.gz
Algorithm Hash digest
SHA256 682141b09cfd397054df9376814f24f8ebc75414a8bf930f2a1a359824b2c1fc
MD5 095c355a1a4f3537e6e94d58a3c1ff47
BLAKE2b-256 9c316e0615039bed5d33c0f96432319192d81495eb56b9d7b429ab7c65b5becb

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f4a581f7c3cd82082db1e75994079f0788b6749e1c701ab380bccbac6506b06f
MD5 529f168272bf682aa9bcfabe6ecfb94c
BLAKE2b-256 05f71a423e034a4975d28d791b2e55280bd7f9062a225fe2ee4ea66469000580

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3ee8b0bc233b249198fc66e907682ed4092063f8d935aebca80d551140bd96e6
MD5 b02bb0073e4111af58258465050c45a2
BLAKE2b-256 38ec8aa9340246658cac72ea0688ea1c92309f338427ee9e6351681c5bac1d9c

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58711f3ffda4c29d0c93e5fdc8ed3549db4e78f9a76e903deb0bb2f617633194
MD5 9bf2adc71caf1f4ab44b4eebe5f5af40
BLAKE2b-256 ead5a742c7ebf0837ea0f998f1b5d8b3cfd13313bac53e5815c099fb290813af

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ad813f3fd0fab16e78a506eeb7eb2e20d1030f49510793741a5915b06433968
MD5 ee5658ae579a9de4ea0f5880cd3366fd
BLAKE2b-256 38e1293d7159b2807cc452740e8294970e7440283cf66f98ab7d1f199dd2201c

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 151235c8d280fe52f495bc449b8331a6f073aa64f60c4453defde2e069cd5f23
MD5 8448f5105d0c596f3a5b89963256604d
BLAKE2b-256 2076109857241b4544f7636f02abd9e5371c0388f0143d22db9c81aa84ba701c

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 943542f03176a02eb60a6f31fe62eacc1db48e62350d0d332d9acf100b43e306
MD5 8f0f2c2d0b974c34def5597b55274e80
BLAKE2b-256 332bf3b1e4fe1e270a88e0948c8c6b88aeed98971777b620c46dab688ef472fd

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10e888b376cf3c6283e15c1b8507049de03eb76821147357ccaeb9196a3441a8
MD5 867a7fb9089a0c60aa7c1282397c2f1c
BLAKE2b-256 8a9e0bfa24e6c80112fff3b58e4f933c3c12946d9c24647bd69386936e50d22c

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 58df1d69d85c4bc79bba31d91442e6eb0576951b98cf9f9434122855041a0707
MD5 1df9b956e85c0fa50c491985618bddd0
BLAKE2b-256 8c6030e26a733a59413ec9fd992fb2843e14f83603f58b396bf42828f968d62b

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 af8da5692eee52e1bc8836ddcf4c5b2090367c856c0f184be689b225d9a024a8
MD5 d81f66336fbab894cdda8bc2543fc03c
BLAKE2b-256 2d13a2c2c89d9252753a2c0c7813b351110d6bb32101c8bfd5d117896ef1bf9d

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6525ef48c591c1434fd5f89838887e928d0afd1024d2f765db89e21d01e14da2
MD5 5bf1b7ca5009fa0a7099ccad3cca85df
BLAKE2b-256 9bc98060158bb1ad27b0fb6000b736939312b59a5d053cdcc807db6f2975d72c

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 40c4eae9686d9218745d158cded0a4b31c7028a78dc77c395cf5c678f2f63529
MD5 33c60f00af8aa16ed28ed9a691e9df6c
BLAKE2b-256 b72741681c60e5cbe6c40d13ea00568f4b3da86a812d48d353eb55bbc8fcc4b2

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 55272091e6a84249bb4f56bf0d52e23a9cf70930bdd01a64bcba51afe3fcffa5
MD5 13338776f58306592313eb448f75e989
BLAKE2b-256 7a11af4e99fd9146f3d206e2137fcbf1bb8c1bd0b8a601b225d76cd7c726d446

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c3e6b306314c73eace9a1689b8a93a2d7a6633d0ea96eb44fa80e78a7ff132cd
MD5 5fbc89d71a2deb67d0deeacb1f3adeb2
BLAKE2b-256 cdf2265adb7c1b915d7bf96e2ecb40a3ecadc21861312a44097f704a95075fcd

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d148102d2ddd873e21b2ce4e5eed15aec1d7603e26c6eefa6441d6bf63e8326d
MD5 f53dfa59082820fb71a6e6cdb7e55547
BLAKE2b-256 5e590d0ba724086499666956c2feb7405c228f056eedfaa5afe63cefa0f4a664

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4692674377e19c6a403a63d31c9cc5e46cbc66e417dc42def9799df19346de2e
MD5 efa02ad936b309b3a2af47228d679f69
BLAKE2b-256 8f72775482e82c5a50a239db2922259149139dc46a4cd6bb6cc5068862156ead

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 313bcbb8a28c173a409af0991a7e642827301f1c01476306584b277966ef9868
MD5 2aa0004d479d09d098eacd950889d7e5
BLAKE2b-256 dca672899472a4a0c55244c2507bc9d332e9cc6d866a5e76059d7035492811f4

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ef2752127a6a794b25989c7b43769058e17e1df44f2b166029f81fd08cbb004c
MD5 d32bb50e4ee9be2ae743043a268013b9
BLAKE2b-256 996aded5932d75b950f52db8e6efe86a4171e740ab669c81808265807e5edccb

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9d3da6a3f334fb88a1472c61c6046927f525c9b85bebfb0db27548a2dd4b624e
MD5 580014ec1c820ae2c6f49a738bedfbba
BLAKE2b-256 330dedc5d21a5d60eee69b95493f152bd018d90d369593812af6af5996eaf1f3

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ee9d0b82adb173fdf7d17c312f380398dca8ef190e89f0aef703e00f5fc5d72
MD5 10d80745a72c39bba1956ed621a899a2
BLAKE2b-256 fdad9ef5ea742fbccf3f449a9163644011e15c1189b56fab4c9f3e18b5e36d66

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 7f0e573ba997d15d61650fe4707647909102937bb0c29782228ef0535cd78205
MD5 a39cfe4c228ef83bbd78f4de8cfb8119
BLAKE2b-256 6188639eb7a1e71b04c4126dddb56359b9e80ef83e94dba4d72e20313e63c203

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dd5bb023522187aa7ebc4d299e10d6733ca8de29e4897207ad53153232897da7
MD5 03be116469400ba5b0cf488e85fbfe97
BLAKE2b-256 885058956e5d70be9255c5cf275f85bf8f544c6bcf375c44615616b586cd51cd

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9e1cec1597e10e34affc0683339aab89d5dbd733c79435e053ae09996dad0511
MD5 90d06e1faef644bbe8c4ab7f831143b1
BLAKE2b-256 ddb389e34255b8c7357c446520ec661e189f3356739996607064167a8dc098fe

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7d3e4de86025552eb36851d31b389fb36a477af33b01ae588b95b406ca5d0c8
MD5 7b62d67c999509e80db060cded9f38f2
BLAKE2b-256 a89ea3839eabc8cb715b8dfb3acbab421696250786f09a696aed144e380cf756

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp38-none-win_amd64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 87b19d5accb984de56989492eefd09c8b678b6d9df19862de9fc4eb21b9131d5
MD5 c17c2c7678009f7d2cebd303aa074b05
BLAKE2b-256 1ca37cfad3dd545ff4f667823cea6fb7e9046fda23a3de309cb296887609138b

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4cf68006bdf0f0d8c7b9b678ebf11157a28e87248c12bb662ed1dc766a3bb2e3
MD5 40d81324a60c92c757d65eb112129298
BLAKE2b-256 c2dfdab776e3b897aa0d4cda3799be761255ebdbcea73eda2c3b885c4dba8406

See more details on using hashes here.

File details

Details for the file py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 99dacd4e4acdf6c33e950764e2062d7beb603090e894220efc8c98b97f7043ca
MD5 8637778aed8de74488f12548d386f3f3
BLAKE2b-256 dc636a9fd832c9907257ae2a1154d1947e73bcd63daba6258c41a92c91b5fb72

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page