Using an unordered map for dynamic obstacle collision checking is not very clean. In addition, the current implementation does not account for robots with different propagation step sizes. A better solution would be to add a method to og::Path and oc::Path to return a state along the path at a given time. Not only will this resolve the aforementioned issue, it could possibly outperform the unordered_map, which averages O(1) complexity, with a vector lookup, which has truly O(1) complexity. Then, the collision checkers can use this method instead of relying on the map.
Using an unordered map for dynamic obstacle collision checking is not very clean. In addition, the current implementation does not account for robots with different propagation step sizes. A better solution would be to add a method to og::Path and oc::Path to return a state along the path at a given time. Not only will this resolve the aforementioned issue, it could possibly outperform the unordered_map, which averages O(1) complexity, with a vector lookup, which has truly O(1) complexity. Then, the collision checkers can use this method instead of relying on the map.