🤖 Dexmate Robot Motion Planning API
📦 Installation
pip install dexmotion
📚 Usage
🚀 API Usage Guide
Basic Setup
from dexmotion.motion_manager import MotionManager
# Initialize MotionManager
mm = MotionManager()
# Initialize with specific robot type
mm = MotionManager(robot_type="vega_1")
# Initialize with locked joint regions
mm = MotionManager(
robot_type="vega_1",
joint_regions_to_lock=["BASE", "HEAD", "LEFT_HAND", "RIGHT_HAND"],
)
# Set robot joints (locked or unlocked) before using active joints
initial_config = {
"L_arm_j1": 0.064,
"L_arm_j7": 0.03,
"R_arm_j1": -0.064,
"torso_j1": 0.42,
"torso_j2": 0.14,
"torso_j3": -0.6,
"head_j1": 0.4,
}
mm = MotionManager(
robot_type="vega_1",
initial_joint_configuration_dict=initial_config,
)
# Setting custom target frames for dexmotion
mm.target_frames = ["L_ee", "R_arm_j7", "head_l1"]
Available Robot Types
Dexmotion supports multiple Vega robot variants with different configurations:
No End Effector:
vega_1- Full body robot (arms, torso, base, head)vega_1u- Upper body only (arms, head, no torso/base)vega_1p- Full body robot variant (arms, torso, base, head)
Gripper End Effector:
vega_1_gripper- Full body with gripper handsvega_1u_gripper- Upper body with gripper handsvega_1p_gripper- Full body variant with gripper hands
F5D6 Hand End Effector:
vega_1_f5d6- Full body with F5D6 dexterous handsvega_1u_f5d6- Upper body with F5D6 dexterous handsvega_1p_f5d6- Full body variant with F5D6 dexterous hands
# Example: Initialize with F5D6 hands
mm = MotionManager(robot_type="vega_1_f5d6")
# Example: Initialize upper body variant with grippers
mm = MotionManager(robot_type="vega_1u_gripper")
Joint Control
# Get current joint positions
joint_pos_dict = mm.get_joint_pos_dict()
# Set joint positions
new_positions = {"L_arm_j1": 0.5, "R_arm_j1": -0.5}
mm.set_joint_pos(new_positions)
# Set joint poses at component level
mm.right_arm.set_joint_pos([-2.5, -0.3, 0.0, 0.0, 0.0, 0.0, 0.0])
mm.torso.set_joint_pos([0.42, 0.14, -0.6])
mm.head.set_joint_pos([0.4, 0.0, 0.0])
# Read full body pose
joint_pos_dict = mm.get_joint_pos_dict()
# Read component pose
updated_head_pos = mm.head.get_joint_pos()
Forward Kinematics
# Get end-effector poses
poses = mm.fk(["L_ee", "R_ee"])
# Get poses for specific configuration
poses = mm.fk(["L_ee", "R_ee"], qpos=solution)
End effector control
# Move chosen frame to absolute or realtive pose
mm.right_arm.set_ee_pose(
right_target_pos, right_target_rot, target_frame="R_arm_j4", relative=True
)
# Move chosen EE about cartesian space
mm.left_arm.move_ee_xyz(np.array([0.0, 0.0, 0.5]))
mm.right_arm.move_ee_rpy(np.array([np.pi / 4, 0.0, 0.0]))
Inverse Kinematics
# Relative movement IK
solution, collision_status, limits_status = mm.ik(
target_pos={"L_ee": [0.05, 0.0, 0.02]}, relative=True, type="pink"
)
Inverse Kinematics with External Obstacle Avoidance
# IK with obstacle avoidance using pink_ext
from dexmotion.configs.ik import LocalPinkExtIKConfig
# Configure external obstacles
obstacle_config = LocalPinkExtIKConfig(
external_obstacles=[
{
"urdf_path": "/path/to/obstacle.urdf",
"position": [0.5, 0.0, 0.5],
"orientation": [1.0, 0.0, 0.0, 0.0],
}
]
)
# Initialize with pink_ext solver
mm = MotionManager(
local_ik_solver_type="pink_ext", custom_local_ik_config=obstacle_config
)
# Solve IK avoiding obstacles
solution, collision_status, limits_status = mm.ik(
target_pos={"L_ee": [0.05, 0.0, 0.02]}, relative=True, type="pink_ext"
)
Global IK
# Absolute positioning with quaternions
target_configuration_dict, is_in_collision, is_joints_within_limits = mm.global_ik(
target_pos={"L_ee": [0.4, 0.2, 1.0]},
target_rot={"L_ee": [1.0, 0.0, 0.0, 0.0]}, # Quaternion [w,x,y,z], RPY [r,p,y]
type="hybrid", # "pink", "casadi", or "hybrid"
)
Motion Planning
# Plan to configuration
waypoints = mm.plan(
goal_config=goal_config,
planner_type="ompl", # "ompl" or "interpolation"
)
# Plan to poses
waypoints = mm.plan(
goal_pos={"L_ee": [0.1, 0.0, 0.1]},
target_rot={"L_ee": [3.14, 0.0, 0.0]},
planner_type="interpolation",
)
### Trajectory Smoothing
smooth_trajectory = mm.smooth_trajectory(
waypoints=waypoints_qpos,
method="gaussian", # "gaussian", "toppra", "ruckig"
control_frequency=100.0,
)
# Extract smoothed data
positions = smooth_trajectory["positions"]
velocities = smooth_trajectory.get("velocities")
Visualization
# Visualize motion plan
mm.visualize_motion_plan(waypoints, duration=3.0)
🤝 Ready to build amazing robots?
Release files for dexmotion 0.4.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 19.7 MB
Release files / dexmotion-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dexmotion-0.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
a412c64bc461c75209224a3aaee0c3d4e4a049892f21f76856c3990e2e63ecd3
|
|
BLAKE2b-256 checksum How to use checksums |
7660c568074b917c63f8732ca590c769c5c9f1bfa514f8d549a9c82902961e2a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | dexmotion-0.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
ed885ac9bb71fc76a76915cb07717776d5abded4c9479f4c6bd241bda36bf93b
|
|
BLAKE2b-256 checksum How to use checksums |
8ec8e25c7a3e09bceeb41d9cadeccbb00a78a7a67ea5900b5f0e70bf46f1c72e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | dexmotion-0.4.3-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
0828da0e53d31c582d5078a28430f513035cb5c5b975fee5a93642e3f3981da9
|
|
BLAKE2b-256 checksum How to use checksums |
fa9d11585f1405a7055b0a116ae8a927118aace4a6726694482a5b15656fb3d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | dexmotion-0.4.3-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
03ad4e331537a575b41b1586ddb9aa99cae19bd1721a03ae235de2f3bb0d6e96
|
|
BLAKE2b-256 checksum How to use checksums |
6b9233e94a7438463f105b98cce1df29798b6b2346fbe94c33e39f137d261b9a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dexmotion-0.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
34a32a273b66211441c89d9762bedf4d3978cbfbed1c35d9a94efe6fcdfdef29
|
|
BLAKE2b-256 checksum How to use checksums |
74e81ee6c6ec872465df0181078e173d95a9f531830ed5a9803537a5e2a87e2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | dexmotion-0.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fd4d3617313c67ad0739e8ed9ab25ee144974602681f6b776aa962bbb4772857
|
|
BLAKE2b-256 checksum How to use checksums |
ae33c80a02b4e52bbe884d40b7e5896d1fb9325f54df3fd985ebba2062daed77
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | dexmotion-0.4.3-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
ae0cb7e2cb67d711e4d5305fabf7f027a856eb4624d2184487683b257fe08319
|
|
BLAKE2b-256 checksum How to use checksums |
fd50a7ba4d1cef7730de980c9e6f206fd756f7cb4d79f8b510fb44296bab2714
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | dexmotion-0.4.3-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8b6bb5705672343f186d92b0d66c3ada33d4177ad0dd2eb6dcdae9458e6a6e68
|
|
BLAKE2b-256 checksum How to use checksums |
f8ddc12004ed87307f21d273553032461dd6df1d685ad7b0bb01f1a5d778f112
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dexmotion-0.4.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
75bd84e3469e3b6c615daeefc02a51665cdac40992d5530b3487de747848f10d
|
|
BLAKE2b-256 checksum How to use checksums |
4bdd91c04dc34ec6ce97f81ea20b5109a63a80ecbbc82c4875c3de6c8d41f549
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | dexmotion-0.4.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
fd3a5f509f424b29f68f097e639d6354be34a42c5c363e9dceccc2718a9d32e7
|
|
BLAKE2b-256 checksum How to use checksums |
54f2f7e429a9d8f6e1bed14a4dac9ad5de7904d2061d4218822b40b5456fd015
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | dexmotion-0.4.3-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
c63d0b72c1d300bbbd78e1764df11af7f0b596f7c2448144d0bb4f6c99bdd8e3
|
|
BLAKE2b-256 checksum How to use checksums |
a777c366246a6ff9228084d1d526c7e252a663b3d1d09fdf920733bc1ea8999f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | dexmotion-0.4.3-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4ca506c2cf20e99f83dd2e930c40182b78893ce69b04fb1acc86ceb8cd0fc5e1
|
|
BLAKE2b-256 checksum How to use checksums |
0d0bae4764b07b921c525d4d7d4896a73169e2345c183c4ef2160b101087a87b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | dexmotion-0.4.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 1.4 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5f9e5f13512d454a52e5ff9e99842e6ed63f294842ee8f4caca3f91c817e245f
|
|
BLAKE2b-256 checksum How to use checksums |
2cfc138ba19a787a36459306be7d9a31cdc783b2e26fe755ba041f2ff308dbad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | dexmotion-0.4.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
51e87c53129c1895f4677432ce8d3c9948cd6c0606192f7d47f511f1bfb0ff9b
|
|
BLAKE2b-256 checksum How to use checksums |
a0a31442070fdd732414d2ff4e751fd91e1dec5ef4684f2badc27b7e8a7b0950
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | dexmotion-0.4.3-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
910cb6199c9ca9b73d0113b0ee3312f5e13b3d2896e716ebadc6c3c64cca3af6
|
|
BLAKE2b-256 checksum How to use checksums |
b674b7cf78af86160a1f451207396a7d668de520f48f306dc260715d7355e942
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / dexmotion-0.4.3-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | dexmotion-0.4.3-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c7a3bc784e2e36987c7b709bddb2837aaeac80ca085a34f3208f8cc28a73bf5b
|
|
BLAKE2b-256 checksum How to use checksums |
0419a1f09350811bf0dd1bc928a7a23facb86683aab13aa4ecc06ead3f1268d2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|