[General] GPU Accelerated Trajectory Optimization with External Transcription
Los mantenedores suelen responder en 1 día
@ocots ya está trabajando en esto.
Desde el 15/11/2025.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
@jbcaillau and @ocots,
I am trying to figure out the best way to implement optimal control problems for trajectory optimization in Julia to be solved with GPUs, making the best use of existing packages.
After chatting with @amontoison, I believe that OptimalControl.jl can be a useful framework to communicate with the appropriate modeling tools (e.g., Examodels) and solvers (e.g., those in MadSuit), besides handling the integrator part.
Unfortunately, I haven’t been able to completely derive the dynamics of my quadruped robot from scratch, which I believe is necessary for OptimalControl.jl.
Taking inspiration from TORA.jl (cc @ferrolho), I thought of using RigidBodyDynamics.jl (RBD) to derive them from a URDF file. In TORA.jl, this approach calls the RBD dynamics inference API compatible with AD to calculate both the Jacobian and Hessian. From my chat with @amontoison, I believe this could be made compatible with OptimalControl.jl by using the NLPModels Manual API: https://jso.dev/tutorials/create-a-manual-model/. The issue here is that this approach would require me to extend and ensure that RigidBodyDynamics.jl can perform dynamics inference on the GPU, as far as I know (AFAIK).
A while back, I also tried to rewrite RigidBodyDynamics.jl to directly create the appropriate constraints in a given JuMP model instead of solving the dynamics (https://github.com/andrewrosemberg/RigidBodyDynamics.jl/pull/1). However, it seems that my naive implementation produces extremely large expressions, causing JuMP to stall when trying to check if they belong to the model. I now believe the rewrite would need to be much more intricate, ensuring that the expressions are created cleverly, avoiding redundancy, and being appropriately compatible with how the GPU kernels should be created for good performance.
Sorry for the long post, but I wanted to see what you and others from the community think. :)
- Lenguaje dominante
- Julia
- Estrellas
- 135
- Forks
- 11
- Merge medio
- 7 h 51 min
- PR fusionados (30 d)
- 22
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de control-toolbox/OptimalControl.jl
-
[Doc] User guide to the duals: every kind, constraint ↔ dual, direct ↔ indirectPosiblemente ocupada @ocots la tomó hace 5 días. Abierto
control-toolbox/OptimalControl.jl#1035 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Tests of the duals: every kind of constraint, direct vs indirect, pinned algorithmsPosiblemente ocupada @ocots la tomó hace 5 días. Abierto
control-toolbox/OptimalControl.jl#1034 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[Doc] Examples for the sign convention of duals and costate (min/max, writing of constraints, direct vs indirect)Posiblemente ocupada @ocots la tomó hace 13 días. Abierto
control-toolbox/OptimalControl.jl#1016 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Documentation: sign conventions (min/max, p⁰, constraints, duals) and how they appear in a solutionPosiblemente ocupada @ocots la tomó hace 16 días. Abiertodocumentation
control-toolbox/OptimalControl.jl#1015 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Tests fail on Julia 1.13: keyword-only anonymous function in test/problems/goddard.jlPosiblemente ocupada @ocots la tomó hace 18 días. Abierto
control-toolbox/OptimalControl.jl#996 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de control-toolbox/OptimalControl.jl
Issues similares
-
backport 1.14 GC
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día
-
`binary_focal_loss` throws a `DomainError` when a negative sample has `ŷ = 1`Posiblemente ocupada @parth-patel010 la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
FluxML/Flux.jl#2818 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
JuliaDiff/TaylorSeries.jl#445 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
control-toolbox/CTActions#139 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
SciML/Optimization.jl#1448 ·
Los mantenedores suelen responder en 1 día