There was a paper some time ago that presents a really fast motion planner, using amongst other things SIMD programming for collision checking of edges (which is usually the most time intensive step in motion planning for robots). This got me more into SIMD programming, and hoarding a handful of links related to high-performing implementations of common robotics algorithms. This post is me closing a bunch of tabs and archiving their content here in case I'll need it again.

The paper/preprint in question is the one here by Zak and Wil. They present a really fast approach for motion planning, and have open sourced its implementation here. One of the things that they leverage is the parallelization of collision checking, which they call fine-grained collision checking. Compared to ‘traditional’ parallelization over multiple cores, they do parallel collision checking using vectorization with SIMD.

Since they took a while to open-source their code, I made some experiments myself, which is in very rough shape, but can be found on github. This shows a ~10x speedup on 2D collision checking (albeit not demoed in a motion planning setting). There will be a full post on this at some point, and I’ll hopefully also clean the mess there up a bit.

In the rest of the note, I want to organize a few links on SIMD blog-posts, posts on how to achieve high performance implementations of various algorithms (matmul for example), and a large part of robotics papers/algorithms.

There are likely many, many more very relevant and very interesting posts/papers and other forms of writeups. These are just the ones I stumbled across.

Planning: Sampling based and trajectory optimization

  • Clayton W. Ramsey, Wil and Zak had another paper on cache/parallelization friendly nearest neighbor structures. There is also a blog post on its contents.
  • Brian Placher (the same as above) and gang have a paper on a parallel implementation of DDP. It is parallel on various granularities, i.e. on an algorithmic level (leveraging gauss newton multiple shooting), and also on an implementation level. Their conclusion is that the parallelizations they analyzed can help achieve faster convergence in some cases, but how well it works i sheavily dependent on the problem.
  • The paper here proposes a parallel version of something similar to rrt, and achieves fast planing times. The paper is from 2017, and the paper from Wil and Zak proposes a much faster planner.
  • cuRobo from nvidia is a collection of various things to achieve good motion planning times. The report is quite interesting to read. At the time of writing, cuRobo does not work for more than two robots, and is only doing motion planning.
  • Motion planing templates is a paper suggesting templated motion planning in order to be able to specialize to specific robot geometries at compile time. It is from Brian Ichnowski who is generally doing cool things in robotics.

Control

Optimizers

I am interested in everything performace related similar to the things above. If you think you have something that is relevant to the list, please let me know!