The newer C3-repo-based implementation of the sampling C3 controller has a slower C3 solve than older dairlib-repo-based implementation, at least for the jacktoy demo using the MIQP projection. For this setup, the newer C3 Solve function takes ~5x longer. It is unclear if the performance difference impacts more sampling C3 demos and/or more C3 projection steps (e.g. C3+).
For an apples-to-apples comparison:
- Old implementation can be run on the
bibit/sc3_with_c3_repo_timing_debug branch (derived from sampling_based_c3_public)
- Controller runs at ~10-23 Hz.
- Parallelized C3 solve loop takes ~45-53 ms.
- One call of
test_c3_object->Solve(test_state) takes ~40-50ms.
- New implementation can be run on the
bibit/fix_3d_example branch (derived from push_anything_dev)
- Controller runs at ~1-7 Hz.
- Parallelized C3 solve loop takes ~230-350ms.
- One call of
test_c3_object->Solve(test_state) takes ~220-350ms.
These branches share the same C3 setup, including constraints and solver options.
The newer C3-repo-based implementation of the sampling C3 controller has a slower C3 solve than older dairlib-repo-based implementation, at least for the
jacktoydemo using the MIQP projection. For this setup, the newer C3Solvefunction takes ~5x longer. It is unclear if the performance difference impacts more sampling C3 demos and/or more C3 projection steps (e.g. C3+).For an apples-to-apples comparison:
bibit/sc3_with_c3_repo_timing_debugbranch (derived fromsampling_based_c3_public)test_c3_object->Solve(test_state)takes ~40-50ms.bibit/fix_3d_examplebranch (derived frompush_anything_dev)test_c3_object->Solve(test_state)takes ~220-350ms.These branches share the same C3 setup, including constraints and solver options.