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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

py_opw_kinematics-0.1.6-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.6-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.6.tar.gz.

File metadata

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

File hashes

Hashes for py_opw_kinematics-0.1.6.tar.gz
Algorithm Hash digest
SHA256 2f1842224cb04dbe09e301b90c29390f050a9a3a929f0aa83d3945d1495e0f2c
MD5 8f778aaec892f1ec5c72f682db7773dd
BLAKE2b-256 93c6b2fcb3cf1519632674ba65e8428e82a4523e8471df8ae790a491f9cf0fe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d131acd6f38c6bfdeb5d01befd445db41586d211fcf82445c1c96c776eea5df
MD5 d3caa5bbb9eccb57dba557ce63416285
BLAKE2b-256 72eb01ac9c995dc0c0d44e7343ebf8f5f47ad1673df1e0f5201ea5e1981d5bd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 42edeeb6df5ec9ef45376d669154ddbbd04e1efb7770789ca16d95f68fea0467
MD5 1156e60dcc80f181507d8ffca66f3bd4
BLAKE2b-256 df4b5f6b8a713d204db760792eb2e056c160c18cd29426b970375789c74b60f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f185ffdd6663ce37718b9cf65ca56189bdd69323420fd4421d0dcfb99e33dc4
MD5 1eb284373a4b059343896fd9d627f84d
BLAKE2b-256 e580fbe8a99a4736a02c8018c6f48e18490a79ad2e0bceab77de34ca29e6f13d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6468b9b5279ec9a9d7b5afd2a31987aee3757e954fac6438e9ea419aa9c5e7cb
MD5 68cfa8a44cb68c5475d3e79a7ca6061f
BLAKE2b-256 752eaa3241ceb14fa2a77b424ccf9b4b27a834203dbfa53520b31dfe31ce15e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ba9792f25f28e11fd7723cdf38c60fb91e0c1fd2c7170eac76ce81cc7303861
MD5 e7c7a28b2c8c286fc8faa31c7e588808
BLAKE2b-256 2e6de3f7e8889f378ed554e367b99ee869c28bc66e2c325fc3b5d705966a0256

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 7bf30f080937d73b4168198aac91659231f372e5da90beaef097a557b704b2df
MD5 814ae2dbec71856b9dfe282b803b9dea
BLAKE2b-256 458922b96bc1bbe4f5270f6cc7c34bb708f3da84bea4f8f6394c3f7974d633d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cb0d63ec3faca00c27ccc27edb56f5cb4118fdcc5852fa37805e74026d9db52
MD5 434a0f8a7a50a92a3890b0228809a820
BLAKE2b-256 1db4698116c12c6f3f28543d54950a6033814e0c1c48cb42b23999c2b52c9998

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8ac64e1dba8d3ae2828885fc9c78db1429da441afd40db61208a99344798ea85
MD5 2c4523a5f46a3dc56d9a42073a2b6f2c
BLAKE2b-256 28d962e53f3bc490f74940fcaa5eab4d8672837a83f8fb97708421cede33397a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 47ad6c778aaf9a00502938a54fe94acc190952c455cedab621ef956c1fc1b56a
MD5 a4fa18496f56527376fc7a2c812d166e
BLAKE2b-256 98007b26b0b144d479f58c70c02b4c4b010dddc544cf9c4dfa8a2e26bd75753e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5994b70cd87b7211a40a7e654a286e1be1985ebf717aa30d912260af657e002e
MD5 c2654dfc3a5d2da7beffd4fa7e8cb066
BLAKE2b-256 162fec8ca785c4dc05aac0780e4f2102862353628a22f1a6d287cebe21283931

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 a1731eefcab375a955c83c903362553986915ab7c1e36aabb6a00b483d4ec8b8
MD5 b8c041947d2d8f8e97ca5e7878656cbe
BLAKE2b-256 0867efdfedee2346d45179ae3756eb6a9a461c66f8be1ef8de4053e6f29b2d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08c4a8fa99f1cb3e0d96baadc4eeff2e871ef6c116cf0d2428c6f4050453f2b0
MD5 596badbf421ff819017742c598e7df68
BLAKE2b-256 d2393d58629ea441d3e87ce0106df178bf72988afff126b422de9a7947d78742

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bee049339286bb06c44a3a098eb7bdf6d298d344e9afb8b1c91c3403bed466bb
MD5 ea830033bbc6cadca7d1868ba03e4ea3
BLAKE2b-256 585c92639ef7b3f3135cdb5e331635ea59fa8fc18b3507b3dcbf08379422116b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b51b5bd8d066f5fa3b40d0dc34bf403b1e51039ee74dc06a0b61065cf12b556
MD5 ef093214c4e6fea3c9424220171c5775
BLAKE2b-256 4289e54177d83b9f6a5f4923cb314bb7508457ef93d1f3ce6d6b9bbe4fca269b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aebaf0a46e5215fa179edf863534292e30d0e572b58e1ad6dd49219bdaee73ec
MD5 10e95ac11eb4f26e09a9945a5d86aeed
BLAKE2b-256 aa9d371d57b317046a857bc668b685a683a9e48d296450b31da0cdcda27c16f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 b9903636a1316b0105c13669e0afce0adede3fbe25d24b35ac6f88f9866d09d8
MD5 fb21c82d9eeae0b3a9bb674ec5ac5889
BLAKE2b-256 77a7cf6eb0de2f69895935324f2f7556a84176f6285e3f58d3e9db114ed5ecd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf6196da391ead810626545d89ff26af5a282f6f58f34ce434549deca3ee1dd9
MD5 92c5a63e5be0e1dcae935f514fc1e960
BLAKE2b-256 09949374b8af57f3c43096c8c8e626ce6fb386cad56334eb8ec5f61745b2bc68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8db154bf6de4885eeb9a44d82a0e31a5b18d0ab144800718b1e67e4dc6c2862e
MD5 0a9c6396b9270b0b7825c8fa784f7566
BLAKE2b-256 5a243f37244a8190dbc48029561fbdec9ea7a40e22aa02a66bdeec0535261eaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 99fca8fceec5d356d2319a3200d3d47d687a157b83f24adb23bbedad1ec90541
MD5 7d5c45d318f1240f951b0a13f974494d
BLAKE2b-256 0f275099ad547c6ce034063a0463f2d3df0009adb084df4b9564d14d62fd5952

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 99b7c0ad295209bb5828a651f44ab81c503fff4c6e399186b34100a5c1e4bda0
MD5 219882fce0cea26a080fcc3c544794b5
BLAKE2b-256 c20368915c03b9b4db0e5d41461372d8350a7de1e8fee74576eb03eaed05eb3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5aa93ac9de0be263d12f8a619e21987b8d7f191f5f602e473337d6e3596c3631
MD5 4ae8d2d9098e647e83b3638697ac7807
BLAKE2b-256 ca682101a341184fcd8e1730f2852b8564b687ca1c7bdb24f0e91495da70846a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b7fad9b254fee9188cc81b2de8cac3183f4980e47cc5695d037e09f31354431
MD5 cf3f65992bb46314fe989c20bf9d54f4
BLAKE2b-256 49f6d8c82ef10efae80b42a50cc3887788bbd7cc1d9cc18f86dd8c08380ed9c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07a2811df5bf5694ea3271fc4df46d87159107ebca8b7ece57315e9364b4abbe
MD5 3d7eefdac7345bc9e0266f1e9ebeb877
BLAKE2b-256 0853016da8e628e7bf82d643ba9ed5f7311b7dd99d581e229e0492d6cb03d806

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 9817a51fc65278267f682afcc3ec6f831930b90a1617c4a8e1f35f11f3f2c629
MD5 a4ac0f00a52303264786e61ff2e034fe
BLAKE2b-256 b1f95a0c8f30886d660646dc5992b9be643f036684bc5ae0247016cf16c31849

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9997e025cff8a8efea057e3c4910c4a4b5651b8d26a9936b73d9e885e0be756b
MD5 e542bb82494047567823f3735abc4ce4
BLAKE2b-256 0bea682ad21cbaf80ee32ebe445ec1f7b50eb012b857ac457376a619ff63f3cb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 17a3fe150b56d82a1beb14f9b9e09a2106789008cf97d9329347f5fd51879b7e
MD5 316b08e22b8cf9e6cd1378dba414a9a9
BLAKE2b-256 9ed71bec7001a0e5c36bcde065b3a0aae610422cddb8134c4f3a593cf0488b2c

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