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 parallellogram between joints 2 and 3, set has_parallellogram 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] * 6,
    flip_axes=[True, False, True, True, False, True],
    has_parallellogram=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.1.tar.gz (80.9 kB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

py_opw_kinematics-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11 Windows x86-64

py_opw_kinematics-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

py_opw_kinematics-0.1.1-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.1-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.1.tar.gz.

File metadata

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

File hashes

Hashes for py_opw_kinematics-0.1.1.tar.gz
Algorithm Hash digest
SHA256 cdf4951dc351fb8e92f904dc956dcb777992887047efd79882c760c277acc45f
MD5 451fbf0763a7d472b690dd308fd76696
BLAKE2b-256 54de4db43e40eedb6e05c12538adb0e03a15352ae9321b22265cbd43bed2fc65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9632e707f8a926570a3ddb92a619a6fa59056a6a5b4c1eb6e0d05c691b9dbb58
MD5 90130e676342826fcf246f6a88a41b90
BLAKE2b-256 7ad0e3c61a5f212f74cc39eff3fd76698809ed5d1a95029b49b8fd713352c3dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3796694b818887ee21d6641e67a0944d6ba2307f33c88a8cb437847eeaab6e7f
MD5 2e5c696ba84b6e9aa329aa6fffff14e1
BLAKE2b-256 8d7836040b45151d23f3b15777507053a5275957ec9853b2093865af4998cb8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc315b27573f47b885501209e97fab03aa94d0ba052ff9577f75ddeb9d04f2dd
MD5 ba5b6950af73a4ddf9ad9b6deb5087a0
BLAKE2b-256 6c18e4b4fa1fbd9a68b19da1a62aad953a4a31d145b0eff9ef33cda79c3d8d9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 885b7b1c20b76974bfac393080c873f351a3c5485c6e8390c35394fe9498b947
MD5 74c43b04a7f8c823c808083f355d8d34
BLAKE2b-256 3f14e4e0ceed9102ef4539dd723d74f9b1d9143d98d024c5b56f00cc74cc1c15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a571c855187a17fe2b5589380a85647ce1f2e88e3eaf732040def88e1c8bd4a0
MD5 9e924c56bf9cd3c93aac09a272a5af7a
BLAKE2b-256 5e64ba5062fa211cc209ff9e488d6ca8a40303376ad18f08a333173fe9792c67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 3c01d159fb14f7fd0a4a2ce47e79bea350fb515321a4b59388a27fb985c49aa2
MD5 bae6394ecc8658f095f0c7240b1b0bbe
BLAKE2b-256 b77494bf29cfbc40ad3b356600bdaa0824ba71c141c413c0826e176c0758e45b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82af40a7b2eabdf4b7b05751b3b561dc21146572245e84a8c41dfe61ec5ae5a3
MD5 32d83d20693943a259ed86c5c9d0a619
BLAKE2b-256 9f98e6e6716cb6be4533f7217cb08bed1d8e936cf2ba88ff1716bf2efac5a812

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6cb9bf4cc582319637abdcf82c265bad370e0980c22aba37c9bd534e6fec5f8e
MD5 b1113d15ac04f734e36acf5472a1538e
BLAKE2b-256 89606dae2ca0d3e76fdf88f596f70b2c9156db117872b52f7ef881d5078a9982

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff4389779959bf579d1d0addc97e1ab3954094471aebd7f794fb3fec56618328
MD5 eff193db69e2e6f65ce4108f7e3f2538
BLAKE2b-256 4fa08df68fe1df772a7058db5f521919eb009373ff752f64baf22cd7e517ea92

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2938028e9f8e1cd149cf3649d7ac46a7ec132242adaae3fab2a8fa3c6e4e27f8
MD5 cbed29b525f5293970d90aab6cfedb22
BLAKE2b-256 f8d7c1ca345432353583f08f9d174b2c52656420d9b29b441719757ae1e7e925

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 de93ee1d47ec816c7c98b2f779ba1cc9258d34506c26c0215fcab63e61eb52aa
MD5 ca378ad719bdb450b508b193346a5314
BLAKE2b-256 c12667a9774c40e72d42d5279b4618231c2b14ec438f5c150b45c63b4499ddac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a88ea6c61b2a5cd09fa30a03abe43f48487b73457fb9f2d8620b03258e9f8d29
MD5 865f219e6ec89dfed696c71025f59507
BLAKE2b-256 db0b51d197366cbbce7f99601bc87f12c3f8d04210d5f63f8beac9ab80f8e86b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fc1c9fcccd189317a8b18997099162b851b284a3c8771bfb3a73462767d0caf4
MD5 1c0637d1e329c6835c6480c6c835ce71
BLAKE2b-256 4385caa5b56765693ab2ecbe61dfb7178b9fd385cf6e7fcbd21588137b2286fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a290fa06cc8ff9d97045acdb9a87e827aaba9cb742f5087a208455d1a6b237c
MD5 4b82319bec7b32c34b6195430357db43
BLAKE2b-256 34bb26cfc2ea0db6abba14547105cc5edf48f9832381b8a03206ca7db9464f71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a28b67833b30b18bb3fe115764763cadb7f411d2a6b0783b2bb5d6bb959545be
MD5 50df65024a5e2fe7440392e2e93e4816
BLAKE2b-256 3ee5dbe8e278f9f2919bee869332ed64ecda846e2a272749ee3817eaf9344027

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 d81552ff6a46b608f5c0f08dfdbbe97aa11e217cf8042927237ca85253dcab6a
MD5 64f2908ca27a8a4468d1bf7a652f7843
BLAKE2b-256 76a014acfdd90faf2fa1897214d60681f9f971d5e0357339fdcb13e8422c5365

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65804587a2f06ae077708a1146d0f5d4597af6e6bec4be3aa9d4a0b0bd235f0b
MD5 5e7bc44b8742e1db7e83251881e7359d
BLAKE2b-256 00f5af10d8a728bbcaf57a3486ce76258bb1df82afc6a19771159b65f2c270db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 04c1f3541a8b890d7ba2315eea246f08c7d2091937aa2b865e9b776b69d8d637
MD5 92c0964b1f3a68671d16d158d0e0431d
BLAKE2b-256 7580051e128196047eb3c04b3cef3ab3bb43363b82390ff4c4df50efb6239a85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9f28cc65aeb84adaafeb0c928bd700ea3867dcc72a06462c8fc8b39d773a8e1
MD5 017e08f9d1d4de5b0f86c95ab7165928
BLAKE2b-256 6a9a3dbb35829de9cc2a320a3d5a21721776ac70e9321d511db8e261c8bdfa21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 91950b3bc211a776e16f064fb914276b0b793872756e4b218bdc89d1833d801a
MD5 2769c89dc68eafa5a6cfaff00614b646
BLAKE2b-256 02490feaea56ac5d4511d5fff8b8d2b226e4c3c17eb306687677d538902fad70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c6a4bd29a17e46d2cba9a3b631c967c26a95f5662e3ea2d21e458dca4f16d8aa
MD5 2a2cb19e4ccd1b2e3984fcc9d08f8de8
BLAKE2b-256 4aef7b48c4a9b16482d2064d83b8707bf5506246f9d54e300a21b3509c1b8bd9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 355296bdb0068f0c1570adf7d764520082d49cec380277756d1d788d3eb291ac
MD5 79ecca4ac034324252f7a5da7dcde834
BLAKE2b-256 d943c6822f0a9b862375d1bb724237fbb0770f9f40e64881632e4e3c2c5c86c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 10bdef89c23e66827f8be92c1f79f10a3d0b2e169728b9d227b9fe3b2885c47b
MD5 e02809ff05a236bef98610f85ed84142
BLAKE2b-256 c6116f1068a1d18feaa23865146e9f795b55150b9c66bd3b6f62a549d4255e98

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 006112f6447007c48b6cf9d3f3b7a6bd8397cfd9cdd0f07c75a27e8943bdd107
MD5 03f7441379bdebf046b9ffa4d4af92c7
BLAKE2b-256 0f6cc69b26dcffa824b36fcf05269d31bee42423ef8684e7c7a33b9452ca4b03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce310ae9d4113dfedbea0a06577da9911bf31e9a32db8341e8aa43c334472504
MD5 a4355702f010b117a99b4cfab8122402
BLAKE2b-256 7ba548dc781ab5a7eb7631d7b78308877e6cab724367ff18ae03523451349f2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d78dd491c3c988c08965ce133bdbb0cc52f5a91e89e7638c27cc1b0cc09d137f
MD5 f4ed1af7fc81875fb45393097c9ccc52
BLAKE2b-256 d710541f4f7fd0327239a39d48dab202c7f2aa6ee6d4953c3ff26763405a0cbd

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