crx-kinematics
Forward and inverse kinematics for the FANUC CRX
family of collaborative robots. These are Python bindings for the Rust crate
crx-kinematics, and require only numpy.
The inverse kinematics is complete and direct. For a reachable flange pose it returns every joint configuration that reaches it, up to the sixteen this architecture allows, and it does so without seeding, sampling, or iterating toward a single answer. The method is derived in full in LINEAR_METHOD.md.
pip install crx-kinematics
import numpy as np
from crx_kinematics import Crx
robot = Crx.crx10ia()
# Forward: joint angles in controller degrees to a 4x4 flange pose.
target = robot.fk([10, -80, 10, 20, -20, 45])
# Inverse: every configuration that reaches the pose, as an (n, 6) array.
solutions = robot.ik(target)
# Or just the one nearest to where the arm already is.
best = robot.ik_closest(target, [0, 0, 0, 0, 0, 0])
print(np.round(best.joints, 6), best.residual, best.kind)
Joint angles are in degrees as the robot controller reports them, including the FANUC convention
where the J3 value is measured against J2 rather than against the world. All six kinematically
distinct models are available as Crx.crx3ia() through Crx.crx30ia(), and Crx.from_params
builds a robot from the four link dimensions directly.
Poses cross the boundary as 4x4 NumPy arrays. A target may also be any object with an as_numpy()
method returning one, which is how an engeom Iso3 can be
passed straight through without either package depending on the other:
from engeom.geom3 import Iso3
solutions = robot.ik(Iso3.from_xyzwpr(600, 0, 700, 180, 0, 0))
ik returns joint angles only. ik_detailed returns the same solutions with the residual and the
kind of configuration attached, and fk_all returns the pose of every frame in the chain.
Several configurations are mathematically degenerate, including the wrist center landing on the J1 axis, which an operator can enter directly and which defeats other implementations of this architecture. They are enumerated with their treatment in the derivation.
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crx_kinematics-0.1.0.tar.gz.
File metadata
- Download URL: crx_kinematics-0.1.0.tar.gz
- Upload date:
- Size: 164.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d6f8bbe770f3c3d2c344b006a7ae2f9c5feda91cbd28950c2089f6abcedf879
|
|
| MD5 |
15f0c59266d3e8259e6166048c249633
|
|
| BLAKE2b-256 |
195f54cadb734de10c2f5fe74ced6e86cbf00c3532f582515531b6272748ed15
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-win_arm64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-win_arm64.whl
- Upload date:
- Size: 235.9 kB
- Tags: CPython 3.8+, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0330334fbd0d9eb4e4d8c9e78e43fa53cffa01262df62da0ca435b48420219be
|
|
| MD5 |
e448b751562fb886c0025efb19e0d4bd
|
|
| BLAKE2b-256 |
684f0487efa118a652369f3caa8c47bb158535bb034e44d501ba610fcfdb30be
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 248.2 kB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b50c3afff0cb61b5b33517fcfdf48157d2270eb452dca442556d331b2c116cf
|
|
| MD5 |
ccc5cd20fe20becac1ce3af8c2a882dc
|
|
| BLAKE2b-256 |
ca84165cb2aa4109f5dd0f2d2d8aef87c56bee36cc9abb209562ead4cbc2910e
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 607.9 kB
- Tags: CPython 3.8+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47e0f72b1a98796f959df97cbeba34d73f4070c1df2b3a07def16f9243cdff28
|
|
| MD5 |
30ba816f4208cdca98c2ab1ad567e546
|
|
| BLAKE2b-256 |
e2dd878fe67e1a7fcd4fd3d6a6df34ebe145e68128661627c071c57f3a3f8374
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 571.5 kB
- Tags: CPython 3.8+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8df9cdfea0e245ee66b37adb5a77644c3e52151e0d50c95edbcf878a7c126bba
|
|
| MD5 |
510cbbce64ecc67776ba9dd8f828511b
|
|
| BLAKE2b-256 |
ea1c770d305895c77f49bda31747d667b7dc365c66b69f4df4ecc23895582819
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 405.7 kB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e40da1822b16003baac6e8579ca519a6c46049270a38575dc69a7b53151bb19
|
|
| MD5 |
b9c7aad11ecedb1de25b7ce74212bbb9
|
|
| BLAKE2b-256 |
dd2da76e8c6abc167fd61dd229eb7313f4c236ccfbd37726f559ee17c72d0986
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 392.9 kB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc2df0e44318502a3893486e5ed8805204b4a0f2323a5fe5bdbfc8e8f19f744f
|
|
| MD5 |
5e628aac44f460f21e9354da024dcfb1
|
|
| BLAKE2b-256 |
060e19676525aad8888d1c3a5e1e5530006acba53a2453f95f31eb60ef78e02c
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 350.8 kB
- Tags: CPython 3.8+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e324a21cb8ff3f8ab4a2c8f8057a64f8ae9fc538cbe64040ef3fb1e9cca31191
|
|
| MD5 |
a65c45a824a62620c6306b2525d3f390
|
|
| BLAKE2b-256 |
285c5a5dd1172185787871ed473ceac1a7dc174b210e3b81a2728752c5e2c5ff
|
File details
Details for the file crx_kinematics-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: crx_kinematics-0.1.0-cp38-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 360.2 kB
- Tags: CPython 3.8+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
uv/0.12.9 {"installer":{"name":"uv","version":"0.12.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1776dd17b6a12b6c760212df37eeccf56073fe9b576dadb44c4fe88ce175ccbe
|
|
| MD5 |
2387f3dba6f48bde9517c3da8ddea319
|
|
| BLAKE2b-256 |
69f998952d0ee8178d7b4aeecc6d0fac8f804d986f30d6e1b1556e1f99c94370
|