This repository holds the code supporting "A Performance Analysis of Differential Dynamic Programming on a GPU." It is also where experimental work is being done to extend this work.
WAFR_MPC_examples.cu
andWAFR_MPC_examples.cu
are the main files which run the experiments from the paper (see the comment at the top of each file for the compilation instructions)config.h
defines all of the settings (parallel level, plant, etc.) for an experimentDDPHelpers.cuh
imports all of the various helper functions and files from the following folders as needed/DDPHelpers/*
holds most of the functions as inlined templated CUDA header files/plants/*
holds custom rigid body dynamics and/or analytical dynamics and cost functions for currently supported plants/utils/*
holds a variety of support code for matrix multiplication, discrete time integrators, thread/CUDA support, etc./lcmtypes/*
holds experimental LCM types for multi-computer / hardware communication
- CUDA needs to be installed as code needs to be compiled with the NVCC comiler
- For experimental multi-computer / hardware MPC code there is an additional communicaiton dependency: LCM.
- Finite-Diff Derivatives are currently only partially implemented (and broken)
- Small float rounding differences need to be investigated further (probably benign)
- GPU RBDYN for Kuka only works in Euler mode -- need to introduce loops and reduce shared memory for Midpoint and RK3 (or use a brand new GPU which has double the shared memory)
- LCM infrastructure for multi-computer / hardware MPC only partially developed (and currenlty commented out)
- Need to catch up the CPU MPC to GPU MPC implementation