URDFly is a Python-based toolkit for working with URDF (Unified Robot Description Format) files, specifically designed for robotic arm modeling, simulation, and control. The project provides tools for parsing, visualizing, and analyzing robotic systems defined in URDF format, with a focus on axes visulazation, urdf editing, MDH parameter conversion, kinematics calculation, and dynamics regressor codegen.
- URDF file parsing and manipulation
- 3D visualization of robot models
- Dynamic regressor generation using symbolic computation
- Modified Denavit-Hartenberg (MDH) parameter conversion
- Support
stlandobjmesh file format - Support transparent mesh and multiple axes visualization
- Support highligt link by clicking the Links list.
- Support original link axes visualization and M-DH axes visualization
- Support virtual link visualization by a read sphere.
- Support collision mesh visualization
The project includes a tool for converting URDF to Modified DH (MDH) parameters. Multi chain robot is supported.
The MDH can be used to calculate the forward kinematics of the robot and generate dynamics regressor (this takes a while) for dynamics identification.
The MDH can be used to generate the analytical inverse kinematics solution via yaik, see Analytical IK Tutorial.
The project includes a editor for URDF file. Clicking the Edit URDF button can open the editor. Clincking the update button will update the visulazation from the modified urdf. The editor provides searching and autofill of different pi with adjustable precision.
URDFly provides a utility to decompose collision meshes into convex shapes, which can be useful for physics simulations and collision detection. Clicking the Decompose As Collision button and editing the maxConvexHulls parameter can decompose the collision mesh into a specified number of convex hulls.
After clicking ok (this will take a while to do the convex decomposition) the URDF editor will pop up and clicking update button will update the visulazation from the modified urdf.
-
Python 3.8+
-
Required Python packages (install via pip):
pip install numpy sympy pyqt5 vtk anytree transformations trimesh
python main.py
main.py: Main entry point for the applicationurdf_parser.py: URDF file parsing utilitiesurdf_vtk_model.py: VTK-based visualization for URDF modelsmdh_dialog.py: Tools for Modified Denavit-Hartenberg parameter conversionxml_editor.py: Utilities for editing URDF XML filescodegen/: Code generation for kinematics and dynamicsforward_kinematics.py: Forward kinematics calculationdynamic_base_regressor.py: Dynamic parameter regressionsympybotics/: Symbolic robotics computation library
descriptions/: Robot model descriptionsgx7/: GX7 7-axis robot arm modelpoppy/: Poppy humanoid robot model
docs/: Documentation filesthird_parties/: Third-party utilities and helpers
For more detailed information, please refer to the documentation in the docs/ directory:
- The
scalein mesh tag of the urdf is not supported. - Only .STL and .OBJ mesh files are supported.
- Only open loop chain is supported.
- The MDH axes will not change from the joint sliders.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
If you are interested in in-depth collaboration or secondary development, feel free to reach out to me. Email: yunlongdong@outlook.com






