Wheel-Chair-Planning
A planning library for the wheelchair-mounted xArm7 robot
(wheelchair_xarm_description).
It provides inverse kinematics (TRAC-IK and Pink), motion planning
(VAMP + OMPL),
and collision-aware planning through a unified Python interface.
The architecture mirrors AdaCompNUS/Autolife-Planning; only the robot has been swapped — from the 24-DOF Autolife humanoid to a 10-DOF mobile manipulator (a 3-DOF planar wheelchair base + a 7-DOF xArm7 arm).
Features
- Inverse Kinematics — TRAC-IK (unconstrained) and Pink (QP-based constrained) solvers with self-collision avoidance and camera/orientation stabilization
- Motion Planning — VAMP-based planner with collision checking, path validation, and subgroup planning (arm-only, base-only, and whole-body)
- Time Parameterization — TOPP-RA; converts planned paths into executable trajectories with velocity/acceleration limits
- Kinodynamic Planning — FLASK (flatness-based kinodynamic RRT-Connect) plans time-parameterised trajectories directly, with joint/base velocity and acceleration limits and an exactly nonholonomic diff-drive base
- Collision Geometry — Spherized URDF representations for efficient collision detection, with pointcloud obstacle support
Robot
| Description | soibkhon/wheelchair_xarm_description (vendored at assets/wheelchair_xarm_description) |
| Arm | UFACTORY xArm7 (7 DOF), end-effector link_tcp |
| Base | Wheelchair platform, modeled as a 3-DOF planar virtual joint (x, y, yaw) |
| Planning groups | wheelchair_arm (7), wheelchair_base (3), wheelchair_whole_body (10) |
Quick Start
Platform: Linux x86_64 (AVX2), Python 3.12–3.15.
For inference — running the planners and IK solvers — pip install:
git clone --recursive https://github.com/H-tr/Wheel-Chair-Planning.git
cd Wheel-Chair-Planning
pip install -e ".[kinematics]" # core deps: numpy, scipy, casadi
The kinematics extra adds pin + pin-pink for the IK solvers; drop it
if you only need motion planning and time parameterization.
For development — rebuilding URDFs, regenerating FK headers, running the C++ toolchain end-to-end — use the setup script, which installs pixi and the conda-forge deps (pinocchio, orocos-kdl, eigen, boost, ...):
bash scripts/setup.sh
Usage
# Inverse kinematics
pixi run python examples/ik/basic.py
pixi run -e dev python examples/ik/basic_vis.py # PyBullet visualization
# Motion planning
pixi run python examples/planning/motion.py
pixi run python examples/planning/subgroup.py
# Time parameterization
pixi run python examples/planning/time_parameterization.py
# Kinodynamic planning (FLASK): drive to a table, then reach over it
pixi run python examples/planning/kinodynamic.py
# Tests
pixi run -e dev test
Rebuilding the robot description
The planning URDFs, spherized collision geometry, and the FK header are generated from the vendored robot description:
pixi run build-robot # preprocess URDF + meshes + SRDF + virtual base
pixi run decompose-robot # CoACD convex decomposition
pixi run spherize-robot # FOAM spherization -> wheelchair_spherized.urdf
pixi run generate-fk # cricket -> ext/ompl_vamp/robot/wheelchair.hh
pixi run build-pkg # compile the C++ extensions
Project Structure
wheelchair_planning/ # Core Python package
kinematics/ # TRAC-IK + Pink IK, FK, collision checking
planning/ # VAMP motion planning, cost + constrained planners
trajectory/ # TOPP-RA time parameterization
envs/ # Simulation environments (PyBullet)
types/ # Shared dataclasses (SE3Pose, PlannerConfig, ...)
resources/ # Packaged URDFs and asset loaders
third_party/
vamp/ # SIMD-accelerated motion planning (submodule)
ompl/ # Open Motion Planning Library (submodule)
cricket/ # FK code generator (submodule)
foam/ # Collision geometry / spherization (submodule)
toppra/ # Time-optimal path parameterization (submodule)
ext/ # C++ extensions (ompl_vamp, trac_ik)
assets/
wheelchair_xarm_description/ # Raw robot description (submodule)
examples/ # IK, planning, demos
tests/ # Pytest suite (CI)
scripts/ # Setup, build, spherize, FK codegen
docs/ # MkDocs site sources (GitHub Pages)
Acknowledgements
This project builds on several outstanding open-source libraries and on the AdaCompNUS/Autolife-Planning architecture:
- VAMP — SIMD-accelerated motion planning and collision checking (KavrakiLab, Rice University).
- OMPL — The Open Motion Planning Library (KavrakiLab, Rice University).
- TOPP-RA — Reachability-analysis-based time-optimal path parameterization, used for time parameterization.
- TRAC-IK — Inverse kinematics solver (TRACLabs).
- wheelchair_xarm_description — The robot description (URDF + meshes).
Metadata
Release files for wheelchair-planning 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 49.6 MB
Release files / wheelchair_planning-0.4.1-cp315-cp315-manylinux_2_34_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp315-cp315-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.15 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
da716c4bb2936d2b9a649c26d5e78b0b4a50cebf9f385b2d94d35c5626ea3b81
|
|
BLAKE2b-256 checksum How to use checksums |
2dfcf816b1c376cb9d32c11614d34b315b72e10ccdd6bc476ef520d7630a5db4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp315-cp315-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.15 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d70f7803e3369a0366d04cc0572f2f6e797a1a21e9ab63980ee5a67b93c2f72f
|
|
BLAKE2b-256 checksum How to use checksums |
c3250c20418d9a96b5837c7603df77b058d3e07808f47463ba3c5a8d0c8e8752
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp314-cp314-manylinux_2_34_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp314-cp314-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.14 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
648c5ac9d954169374c163a4ac4f69ee62559c2806e635ef56df0d73bd7b8ca6
|
|
BLAKE2b-256 checksum How to use checksums |
4cda37216aac20800aeac04ad2dbbef50ac30c26b456c921560c9a0b815c0967
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5b31e1a7d6287182714afae5058d9d39d9a1bcefb4d6f5a2e3b59034fb61df43
|
|
BLAKE2b-256 checksum How to use checksums |
97032e4c990e8cc35712a6291091e2e1104210a5c3250d4f079e6d51b2700b90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
3a26cb9208ff7d559bf8fe06050c29e47a7a6b3ccf7716849c654ec1272de4d0
|
|
BLAKE2b-256 checksum How to use checksums |
aa1b357a2bdabc61d0c1cd3e983ec696e0f60fa9a8183bec5bb6ef31f2433b48
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d9c1f345a7660b61d12428517c3903353c4aa37243dffa01a1517262b3b6a941
|
|
BLAKE2b-256 checksum How to use checksums |
2f5fcdcd17bde3808f3eb29fc0119bfe3680dddaea25ef2a31e03232d7515cdd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
40d960374b79b52bf56ec7caf0dec96ce20a63646ba5b7b7e398e43f2558df03
|
|
BLAKE2b-256 checksum How to use checksums |
343c591ec1dff0fc19dd2584666df3a2de4e4ecb4bac41ce76369daefc661399
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / wheelchair_planning-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | wheelchair_planning-0.4.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 6.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c73f1244371f74605dbcf1fab16345f15d62819383fd4b18a43ae7821f0792d1
|
|
BLAKE2b-256 checksum How to use checksums |
76bc0fd4e0a44059d13accb20a247cfaba51e8f61b300878e01d9eb7ff900f51
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for wheelchair-planning 0.4.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 8 files in this release have been uploaded with provenance metadata.
Attestation for wheelchair_planning-0.4.1-cp315-cp315-manylinux_2_34_x86_64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.