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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.12 Windows x86-64

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

Uploaded CPython 3.11 Windows x86-64

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

Uploaded CPython 3.10 Windows x86-64

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

Uploaded CPython 3.9 Windows x86-64

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

Uploaded CPython 3.8 Windows x86-64

py_opw_kinematics-0.1.2-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.2-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.2.tar.gz.

File metadata

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

File hashes

Hashes for py_opw_kinematics-0.1.2.tar.gz
Algorithm Hash digest
SHA256 57bfb06a6a531a318a480707d980e03e33c583e3bb861754e3f369fe4d16801a
MD5 9f08205eb82b8f4d29f066eb4559bc10
BLAKE2b-256 f4bdc18ef33b876f25e5aaee15a8a79cf0b91a0d8341a48c4595053def1dcca9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a400dfd63a66ae855bc0b1b93dea32cb0873e7e459b6c9a3a6c893f75fa3811
MD5 e1553408d2db38b366f2b775c4dda129
BLAKE2b-256 4b48cb780cd2595c41e0e5aa790f8266df9a66af36eb99ea6c485bda818c29d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9e2f5d57e9ddfe48ee9890432d878e30a85e5f753cc2296126c6829abae549c
MD5 e8d469df9bce5bcb9b397e25d08f7a82
BLAKE2b-256 0f6136f48ef396469e071c83bf6c1b0b9e602995cc95b8cf61e69ab3938eeca0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b92c9b7f1558315a9dbed5486b4757b4a369bc3f969e855f07636614e8087924
MD5 d792d225ac1547a834e21ce27fdfb9d7
BLAKE2b-256 d4690a57108ccaad841d62dc1d49a1790a19baeafb8bd873b86db0d9b69ab504

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 93bc2278ec5d2de8487058090ef107e222295f9b0f8dab28936fc84021e3eb8d
MD5 7a7e16a90f68fb17049bcd779fd26ecf
BLAKE2b-256 84b524a2a07e3b97ce5eb3347b058c1583a4077a2bdebf141c7b07598902e0a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ec32773aeeb0e5da45e775dc07c76ab375f6f205105509a6049ca88a4d08639e
MD5 51ed0a110209e6943a6a2a5f2baac7a4
BLAKE2b-256 f968f772cf4d4cc67287b6c32cc747027a47b5626709ac95f375af148568fd81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 d5a61e097ed74941d9eccdcb0c64f066e198c4a09a4f5d208e781ef7c1e7448b
MD5 1263a86650aca0039500b01f5c721278
BLAKE2b-256 52ac7c9d3b6a71e68462a524707f57adabf438ef2c12104f4e6ed6990029c950

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a675967f3182ed10f8a71a13bcbda9fb0be52b2d75f9a22f2919e76b52559b6c
MD5 59a1c3f24a0a4cfa262aa812d4df29bd
BLAKE2b-256 37d489a13b534b86ebe38110cde629e19a3f3388aea9beedae2d1f874df7f6c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ef8878786df36cc3792cab2f7049fe5e8b123cb25b16282b926890305ac6cb99
MD5 d41afaf9a0a85f168bfc9c118f81301d
BLAKE2b-256 b42c7a4f7387fa795f43ddd2e3f71b57062e5e95dfdc3f8bda7dbfd6043e6b1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc76a32eeaaaf3c6d31e8cfcfeeaaec7fd7512796c7dc9b9c7e24c14a667b346
MD5 a4644ade99209259fe94458a8511d9f7
BLAKE2b-256 138cc69b46e2e02e65e73ba96001f2aba338f6b8c4d3f5fbaec9209b3792a6d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b3bd87750b1fb85112a115f143a7f71049dd7ff2dd8acee2137b3378c043edfd
MD5 9a9d6a82fc778fd82a8159c4dc97c79b
BLAKE2b-256 5aba77c1b5f66f506437bd09d273d0f1d8a519ec045079248cbecefe54d56486

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 64ee622b19ed9834e58c3527d86740a0c04aa22ea1dcde457eff2ef3f75c7132
MD5 286ee9e6d45ec2a5dbf05089b125413b
BLAKE2b-256 f7894bd4e1838a0998b2984c16289e70a69b0568ed69e834a3fb69711b9733f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 712a27c507dc3102ab5159f459fa44b379238bb940e2d6d9a4275c23db214e1f
MD5 af18871515107660b22c62e0fccaca82
BLAKE2b-256 bddb11fe3445d3dd0687af6dcfcd07cfaa84242dfd113a3d244e0b2369c9e2b9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b0c9db485894224b92e877fab3f5c27024acbca5fe2665439e5038abc45e0190
MD5 26311c535854605b5c4201c86436ebe4
BLAKE2b-256 2dc9ac11dc043b9fe07807d10e248f862840fa82641b36169f0d8b77e25ab206

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ec1f088146f363e210366b607bcf2e75579406063bdc18cb08396ddee490aff
MD5 80f5ba3283822d4a06ac5cfaa0226c3e
BLAKE2b-256 dd2bf22693c9b2bd49c54f485628402c0eadbf2ddf352921ba4e912ea7cb22a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a9a0b20326ecf3718513d7c11160fe9282035bb9dcad0e207377774f5c015ab0
MD5 87e03f1c72ef892fa0c35c6fadbd839e
BLAKE2b-256 7eeb4e3c08316bde405c08cbebc7a777d89b09c8a933bedc19ed48468c641050

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 beb30ab936a292b9694c565d6c2fcb3c784851c7a98d28811be9c4ac996bfa06
MD5 56b3edafe2db5dbe42283f8a9b22c6e7
BLAKE2b-256 885e541a53d18b9389a887ddc4dadb6eac55096879fe23ab9eb91e53a424b421

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 149d58206f90567adea253cabcc6dd8973d02c4bca06ee9eeed40e85cff01ec9
MD5 8b22a0b33d23bbecb0638abc22d779f1
BLAKE2b-256 0d19c1602f809df2613de29c618ca29a8751a104a20c1786ae7aa988d4544756

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a9adddfc69eeffe6d69d6f73c4c5bcefe7f2840bbbd5b21a2eb5231dbd8be735
MD5 f727b1b003b26007a83f52ab9f93d734
BLAKE2b-256 ce6f1e2703ef343e0bf904efb94d074a5a202ef6413b9bc1557669b7f24f2230

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5b162d127148a54e02c08c59cece4148e84d074ceba119f12a23e7e73668d5df
MD5 5977aaa252351040f7d086d2c5b97a84
BLAKE2b-256 11852c6569c98a9c8f855c79b67b1b83fed7b21ab2df70cb6c466759801a0363

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 4a74da5380f716beb3c0d36cbf42b3b0c5eb98968b560cc836bd604badfe47ef
MD5 3cf9f04a3f87845f4de157ca2948b47b
BLAKE2b-256 476b2733476a1cf068c67e76392117e6c8f2ca917a4aa74c889b0edbbe6185f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53a2eb555ff142c25ad9e1f02e965f8262d2d0e06c887f0eaad46c2ce09cb2af
MD5 933f3498a956a64f1f64956388710fe1
BLAKE2b-256 3179cef49b6026310eb13636fcfe6a31b77ba8058b44316d152875d166321a62

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 703c78dcefcc8ce6bff41d098f924f735fa15b812f6efd3cdface2becf43f9a0
MD5 0e9b7369b48c255620c2e37f3381da0c
BLAKE2b-256 a374f002848edfe672157fd8a38a43382672947af24b68d305c590ac009fac31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b28f0f356117928e7344a6425f870010fef8cb23e7653c4a50f86092108a5557
MD5 50a3eb5cd4b23949dfef9c65ce9f91f2
BLAKE2b-256 86bb29ce71a8e4af119ee56160b43c7ad26489294886cbb0d394c21b370c7c39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp38-none-win_amd64.whl
Algorithm Hash digest
SHA256 d992d5f0aa3afeb039989f2391cb43eb40e41444f714a1c4e9e69e894b1fbe1c
MD5 5384b82de6aba43b5ae1612d7437ea05
BLAKE2b-256 4d81deaef20e3690975f6329d00a2a67e120e6e318e6e4507a5e167882acfb8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0266f66e3a92f3f8df380a6f70cb97573898075434a04c7ced523d29941063e
MD5 846acfddf1af30e5fcc6fd8e47107438
BLAKE2b-256 51deefc8382f48dff773470c625308a2d9e9a40548b3b84edf038316f9eb5b87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_opw_kinematics-0.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a163124c3cc5646c1b9a2f43a4bbf2f17be406626b079a500322c8aaf6cc08b7
MD5 b595b29d7024c7ef0db8352bb10d902a
BLAKE2b-256 cb4e0321f229d7d633f223ce72eee45c036fa5277066d83842393710d64aceda

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