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.3.tar.gz (80.4 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

py_opw_kinematics-0.1.3-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.3-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.3-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.3-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.3-cp311-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

py_opw_kinematics-0.1.3-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.3-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.3-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.3-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.3-cp310-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

py_opw_kinematics-0.1.3-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.3-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.3-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.3-cp39-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

py_opw_kinematics-0.1.3-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.3-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.3-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.3-cp38-none-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.8 Windows x86-64

py_opw_kinematics-0.1.3-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.3-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.3.tar.gz.

File metadata

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

File hashes

Hashes for py_opw_kinematics-0.1.3.tar.gz
Algorithm Hash digest
SHA256 25ca2fcfe38eecb75b84535484c3b2b09bc7837af96ce1aee0c772b5ed6005b5
MD5 b19e017444b12c0f3f5ec7775a5a9327
BLAKE2b-256 22eb40fd96d1a20c56f5dac1a026d52f993798c73480f1beca16c5f664f40778

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90feba47f91cf2c27ed2974544c68967b9c62e4c89503f3b2ce7c1fe4350dad9
MD5 bce591bb96a6898e0a673ef4fad812e9
BLAKE2b-256 5047648694f8d25fec9eae227c189f49336df78401843a6a7825862881af8923

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 88f625adb5e7514b69a76fd1b8c99d0b587c5e45c687eb46da06d8374544ed6b
MD5 f60e484e800faebe5f2b362ed1c95898
BLAKE2b-256 bec584d313441bef4a8b23f0e00794f16048df56f2b5c93a110c6e3432431716

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fe139868630a03e3fbfea075904b9fc7fac32eba6ddce1600e17c9694619e856
MD5 5068a4fd02f8e0df114042bceb3075c0
BLAKE2b-256 42c52cda249171b0014cb610d1c04d36f40d894c8d8d36a989b7407923fba877

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d5b2cd20b11655f08bd8337ad3ea731aad1ff29442a5ccce50b0dad2f138eebd
MD5 4425fa2e0b9c0766862076605e65f1ab
BLAKE2b-256 63da3d4b64e6132c6ef2df646eb532a00d7f1a8df95fd68743293144f41527bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b79ff83c2decfb81c16c114eb7980792ea7c19925462b6be21e7a5a4157a0759
MD5 4211560197d86ca433500573a0b0d7cd
BLAKE2b-256 4aeac16de567b2f144a7907b218ef7d8c8b04306b69c1e5f8f6234fd36a04fa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 0e5fb64dcafcafdf554e462fe3dccdc4c67a1680d274a1839d1bf10782d1b509
MD5 26454c2f202d63ee1c2c0106a59f26b1
BLAKE2b-256 bf235e2108bbe70e90ec620a23e31e10b929b92e3acda049d106524b1ef57f7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2305eb4d439b2d46ddde9f09c6b9badd08d6056a1d84d6f4d61f240af94a549e
MD5 0bac4edac5ba30f20c30ca056c416f15
BLAKE2b-256 b1bbc46de0d91ff0c6899c27fefafd8f6aaa18cef8bab9b1cbe3718902fc15f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dbf2fff34891b6508a80b6ae6fabe3bb7dd9122793589ae54da2f5f363f71770
MD5 b6968988ea7ab3e9b1eb33faca8c4191
BLAKE2b-256 5a4e198d8a3e46f283dabae4be2f27f31fbfe93745f196360aaab1044b37dcc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bf414cf0400a6578f784515a4ee6b00d2d1fc9887016491566302a7ec59c77a
MD5 8dda939c5ffac4303366b399a96fd23b
BLAKE2b-256 39ad8466983732f465853728efadd5f3dbddd6e8718cc7ab356267b83868c430

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d58bbea3c9d909e2826ff95f653e8339296e484cf03f037b53d318698d1695a3
MD5 247987c9e7f2fa33cf9e3431d3a7edb0
BLAKE2b-256 0aee61af49c27543d7258815ac2f2c8bb80a6f5c083c1ed1e2a62f1e0ed65831

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 5a6974d748341d447c41b6f0ee9c40765bf262654f9cdf95ccba0e06f0377497
MD5 c420b234e7fb223202b3931ec8625fc3
BLAKE2b-256 2f1f02c70987ee7bf29cd1d498a869302aec6d143c3a5c6f4326db7cb01b1551

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b3a41eefd4847290b226e5dea9bdc7c7e1a82ac2a9e0a78bb1b35683b8cca179
MD5 13efc30a474ef4a67290c3d91c6fa3f1
BLAKE2b-256 bbf17d3b15d456a8eafb7a8a513753e2f88c75227f4dd0196207fdea4579a622

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 299358f4f198c72577830c411ad1e0a9869e55037c16c275c23e411dfdaf2b02
MD5 59aed96712ad59a0972756d035a75809
BLAKE2b-256 1b48ee5f341309ef29288d37c752dca8643cbb97698800f83c826096cfbf70eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f8da25ad7dd93b813c6d72efd2a2bb3c7544a97f6b0ffed07e20aedd41af23d
MD5 f1e55feca00460458086af7f90c6895e
BLAKE2b-256 e36d18775af5500597f8e0766838e2a3fa6eb915e370623d38e7677b2699bafa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8d23be81274303b39c9061181df2a84933200445584f1493e0fc1e6a2b6e8500
MD5 62e33c76ffe78194116a471ae7d7da1d
BLAKE2b-256 68a1db6070d587ab27ccdba556ddb95b18485690929464fbaaaa158e9e310526

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 215c1fe52840eb3bf6d229737ee6c119fb3fa4b20fe61653525f454f6b3e54dd
MD5 85604c362b5ca80a00a574764e1370e0
BLAKE2b-256 fd612c74763f579d4297d910a6a1a0d17028b6299399ef5b944f14a31e464c12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8667525f7c8032c7c9e82ea42925905fd9f5655677699743ca2f5ff6fe322bba
MD5 cd378cca3ffe028b8df81cdef5923663
BLAKE2b-256 b62c4b3203503bb440431e4aa515a3717b11bbc111b6fcd9a6afea2488009a4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0d44adfcfa2e9affde9cac69ba77a0c02b227ec1051d86ddc36882d2929a34a1
MD5 a33be42c13bd6ec589c9cdb209b7995b
BLAKE2b-256 aab8cb34e5db1f69356e8f7ae9fbebf0570ecc150df664b2289e3bef0c71f67c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4f28306a574d67ed3991068f7483290f0842a1b0e30cf7dc3ec816f1a8a4c79
MD5 3d71d6b704bf94c87ef4fbce3a917862
BLAKE2b-256 f9dbcc2456ad6e027c96f504adb33027a4b27a78b84ed8b50a6f87ada54192cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 d55bc664d5edf61ea448e71aac8230ffc94fe0bfd5cde42faa1a059239b0469a
MD5 108347773d272f1dff6f043958053a1c
BLAKE2b-256 1edee1aa5faab1e847c8d89be4a3f980e55f83b05f17fe6d10d0ac5e2214a17e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 22091a9b10d0d829fd24ef4fe1ed5c75fe789b0d52035755d320ea857f4b0b62
MD5 0fb3ca9015f276383a1b7b1c4d8a39fc
BLAKE2b-256 e8ee20b60229f7806826a814b5c551e9896e352a063e99642f912a1b598695b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3be0021718944e69c1aae7001aab69454b52c7195b9a369a2f3a750db49dfc42
MD5 96209ecc0034d8d47057543d8cae9824
BLAKE2b-256 203b0a377c2d82229153ac8c03db83939d937aa4a8ecf6728dd10fe615697578

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0a6ca951ed5f67f7c1e4bd032ede6cbb2096811148c5f0a8111e308c52c092e
MD5 c221d5267d343392f2541e99b6495625
BLAKE2b-256 e0c81c30e4d14bef6a2198f8304778cbf964868f600bf93e76f16e37f4dbefef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 fd322a76ba5043295daf694bdf716438ece7c3b2f32f7eca0a57d30fc0fe43ca
MD5 1321df4beb6dfa1ba790494be4701085
BLAKE2b-256 b0aaf977a0b455087526d1170fc9d6fb7f303975f26090c9d3021cb0b5e7c16f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 49ca4b6f67337b8fdfbde00145116a622e7d0637f2609de22c212c7809fbdfda
MD5 0d8793a6ccfccbf3ce0c219af9a740cd
BLAKE2b-256 f6f16fb25b31a9e86f75d255423953c57ef77bb0f4ce4ee4afb8e56a034b48fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0e2188675ea82d95b3c2d88230cc3c133a6c201cbebb113033d6b6a9902b6c6b
MD5 eb1715609dd4747184482284e46b5d8b
BLAKE2b-256 c6952e3623e189a4621e6f8fe7f5f93944b4c3543b281cd56d8035fa0b2d46e8

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