Closed Arseni1919 closed 2 months ago
I do not see issues with the implementation of the edge collision check. This part should (efficiently) catch all cases, regardless of the work of the low-level node. https://github.com/Kei18/py-lacam/blob/pibt/pycam/pibt.py#L42-L46
Let me know if you have counterexamples.
Great! That code solves the problem completely indeed:
j = self.occupied_now[v]
# avoid edge collision
if j != self.NIL and Q_to[j] == Q_from[i]:
continue
( https://github.com/Kei18/py-lacam/blob/pibt/pycam/pibt.py#L42-L46 )
The difference is what does the agent j mean in each case:
occupied_now[v]
)IMO, that might confuse a bit, that's all. Hope I was clear with the description.
Right, in recent implementations of PIBT I do not use arguments for agent-j. I realised it was redundant from an implementation perspective.
The journal version of PIBT pseudocode is:
I want to check a little issue with the code regarding edge collision (ec) checks. While in pure PIBT algorithm, the pseudocode totally works, in LaCAM implementation PIBT function receives some predecided locations for several agents due to
LowLevelNode
's constraints. In the latter case, unfortunately, the previous ec check will not catch all the cases, where the ec may occur not only with the agent j.May I suggest the following code for completeness:
Am I missing any details about the ec check?...
Thank you!