Scikit-Robot is a lightweight pure-Python library for robotic kinematics, motion planning, visualization and control.
You may need to install some dependencies by apt-get install:
sudo apt-get update
sudo apt-get install libspatialindex-dev freeglut3-dev libsuitesparse-dev libblas-dev liblapack-devThen,
pip install scikit-robotIf you would like to use Pybullet Interface, open3d and fast-simplification for mesh simplification,
pip install scikit-robot[all]Scikit-robot provides a unified command-line interface through the skr command, which consolidates all robot-related tools into a single entry point.
You can use the skr command with various subcommands:
# View all available commands
skr --help
# Visualize URDF models
skr visualize-urdf ~/.skrobot/pr2_description/pr2.urdf --viewer trimesh
# Convert URDF mesh files
skr convert-urdf-mesh robot.urdf --output converted_robot.urdf
# Change URDF root link
skr change-urdf-root robot.urdf new_root_link output.urdf
# Calculate URDF hash
skr urdf-hash robot.urdf
# Modularize URDF files
skr modularize-urdf robot.urdf --output modular_robot.urdf
# Visualize mesh files
skr visualize-mesh mesh_file.stl
# Convert wheel collision models
skr convert-wheel-collision robot.urdf --output converted.urdf
# Generate robot class from URDF geometry
skr generate-robot-class robot.urdf --output MyRobot.pyFor backward compatibility, the original commands are still available:
# These commands work the same as their skr equivalents
visualize-urdf ~/.skrobot/pr2_description/pr2.urdf --viewer trimesh
convert-urdf-mesh robot.urdf --output converted_robot.urdfTo visualize a URDF model and inspect your robot's configuration:
skr visualize-urdf ~/.skrobot/pr2_description/pr2.urdf --viewer trimeshIf you experience performance issues with the default viewer, try pyrender for smoother visualization:
skr visualize-urdf ~/.skrobot/pr2_description/pr2.urdf --viewer pyrenderFor a web-based viewer with interactive joint angle sliders, use viser:
skr visualize-urdf ~/.skrobot/pr2_description/pr2.urdf --viewer viserRunning these commands should open a viewer displaying your robot's 3D model. Below is a sample image of what you should expect.
The viser viewer opens in your browser and provides GUI sliders for manipulating joint angles in real-time:
The viser viewer also supports interactive inverse kinematics (IK). Drag the transform controls at each end-effector to solve IK in real-time:
viser-interactive-ik.mp4
If you want to build your own robot from scratch, you can refer to the How to Create URDF from CAD Software documentation.
You can try scikit-robot directly in your browser without any installation:
This interactive notebook demonstrates:
- Multiple robot models (Kuka, Fetch, Nextage, PR2, Panda) with synchronized animation
- Grasp and pull manipulation task with inverse kinematics
- 3D visualization in Jupyter/Colab with smooth updates
Scikit-robot includes JupyterNotebookViewer for interactive 3D visualization in Jupyter notebooks and Google Colab:
import skrobot
# Create robot and viewer
robot = skrobot.models.PR2()
viewer = skrobot.viewers.JupyterNotebookViewer(height=600)
viewer.add(robot)
# Display and animate
viewer.show()
for _ in range(10):
robot.rarm.angle_vector([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7])
viewer.redraw() # Smooth updates without flickeringSee examples/notebooks/ for more examples.
- Loading robot model from URDF (examples/robot_models.py)
- Forward and inverse kinematics (examples/trimesh_scene_viewer.py examples/pr2_inverse_kinematics.py)
- Collision detection
- Interactive viewer (examples/trimesh_scene_viewer.py)
- Jupyter notebook viewer (examples/notebooks/)
- Pybullet and ROS command interface (examples/pybullet_robot_interface.py)
- Forward and inverse dynamics
- Path planning (examples/collision_free_trajectory.py)