Motor de física diferenciable de cuerpos rígidos basado en JAX para control, codiseño y aprendizaje de robots.
stack-of-tasks/pinocchio
Una biblioteca C++ rápida y header-only, con bindings de Python, para dinámica de cuerpos rígidos, cinemática y sus derivadas analíticas, utilizada en robótica.
- Estrellas
- 3,850
- Forks
- 592
- Issues abiertos
- 104
- Último commit
- hace 20 horas
¿Qué es?
Pinocchio es una biblioteca C++ para la dinámica de cuerpos rígidos de sistemas con múltiples articulaciones, como brazos robóticos y humanoides. Implementa cinemática y dinámica directas e inversas, dinámica centroidal y las derivadas analíticas de estos algoritmos, útiles para la optimización basada en gradientes, el control y el aprendizaje. Se basa en Eigen para el álgebra lineal y en coal para la detección de colisiones, y analiza descripciones de robots en formatos URDF, SDF, MJCF y SRDF.
La biblioteca es header-only y está implementada como una biblioteca de plantillas de C++; además, incluye una interfaz de Python que se puede instalar con Conda o pip. También admite mecanismos de lazo cerrado, solucionadores de contacto con fricción, dinámica con restricciones y aritmética de precisión múltiple mediante MPFR. La diferenciación automática está disponible a través de CppAD y CasADi.
Pinocchio está desarrollado por el equipo Willow de Inria y sirve de base para proyectos como Crocoddyl, Aligator y Humanoid Path Planner. Se diseñó para la robótica, pero también puede aplicarse en biomecánica, gráficos por computadora y visión artificial.
Funciones clave
- 01Dinámica directa e inversa con derivadas analíticas
- 02Dinámica centroidal y regresores cinemáticos y dinámicos
- 03Mecanismos de lazo cerrado y solucionadores de contacto con fricción
- 04Analiza descripciones de robots en formatos URDF, SDF, MJCF y SRDF
- 05Bindings de Python instalables mediante Conda o pip
- 06Biblioteca de plantillas C++ header-only basada en Eigen y coal
Casos de uso
- Calcular la dinámica y los gradientes para el control de robots y la optimización de trayectorias
- Prototipar algoritmos robóticos en Python antes de pasarlos a C++
- Identificar sistemas mediante regresores cinemáticos y dinámicos
- Crear herramientas de planificación de movimiento o control de cuerpo completo sobre un núcleo de dinámica de cuerpos rígidos
Inicio rápido
- 1
Instala Pinocchio mediante Conda desde conda-forge
conda install pinocchio -c conda-forge - 2
O instala los enlaces de Python mediante pip (solo Linux)
pip install pin - 3
O ejecuta la imagen de Docker
docker run --rm -it ghcr.io/stack-of-tasks/pinocchio:devel
Antes de usarlo
- El paquete de pip solo está disponible actualmente en Linux.
- La rama devel solo contiene la versión más reciente y recibe nuevas solicitudes de extracción, por lo que puede cambiar con frecuencia.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es pinocchio?
- Una biblioteca C++ rápida y header-only, con bindings de Python, para dinámica de cuerpos rígidos, cinemática y sus derivadas analíticas, utilizada en robótica. Pinocchio es una biblioteca C++ para la dinámica de cuerpos rígidos de sistemas con múltiples articulaciones, como brazos robóticos y humanoides. Implementa cinemática y dinámica directas e inversas, dinámica centroidal y las derivadas analíticas de estos algoritmos, útiles para la optimización basada en gradientes, el control y el aprendizaje. Se basa en Eigen para el álgebra lineal y en coal para la detección de colisiones, y analiza descripciones de robots en formatos URDF, SDF, MJCF y SRDF.
- ¿pinocchio es gratuito? ¿Qué licencia tiene?
- pinocchio es open source bajo la licencia BSD-2-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿pinocchio sigue mantenido?
- Mantenimiento activo. El último commit de pinocchio fue el 6 nov 2026.
- ¿Para qué puedo usar pinocchio?
- Calcular la dinámica y los gradientes para el control de robots y la optimización de trayectorias Prototipar algoritmos robóticos en Python antes de pasarlos a C++ Identificar sistemas mediante regresores cinemáticos y dinámicos Crear herramientas de planificación de movimiento o control de cuerpo completo sobre un núcleo de dinámica de cuerpos rígidos
- ¿Cómo se instala pinocchio?
- Instala Pinocchio mediante Conda desde conda-forge: conda install pinocchio -c conda-forge O instala los enlaces de Python mediante pip (solo Linux): pip install pin O ejecuta la imagen de Docker: docker run --rm -it ghcr.io/stack-of-tasks/pinocchio:devel
- ¿Dónde consigo pinocchio?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/stack-of-tasks/pinocchio
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un plugin y conjunto de skills que permite a los agentes de programación con IA generar, revisar y fabricar modelos CAD a partir de instrucciones en lenguaje natural.
Biblioteca de Python puro para cinemática y dinámica de robots basada en JAX, con compilación JIT y autodiferenciación para diseñar controladores rápidamente.
Bullet Physics SDK es una biblioteca de C++ para detección de colisiones en tiempo real y simulación multifísica, usada en juegos, VR, robótica y aprendizaje automático.
MindSpore es un framework de código abierto para entrenar e inferir con deep learning en dispositivos móviles, edge y la nube, con soporte nativo para procesadores de IA Huawei Ascend.
Una biblioteca rápida y ergonómica de tensores N-dimensionales en Nim, con backends para CPU, CUDA y OpenCL, orientada al cálculo numérico y al deep learning.