libMultiRobotPlanning
libMultiRobotPlanning copied to clipboard
Potential Bug on ECBS-TA
Hi, I am currently studying MAPF topics. This awesome repo helps me a lot! I am interested in (E)CBS-TA, it is very impressive work.
When I tested ECBS-TA with unlabeled MAPF settings, I found that several agents seemed to collide. Could you check them?
Environment
OSX 10.15.7, cmake version 3.17.3, with the latest master repo
Example
case 1
- instance: random-32-32-20_30agents_1.yaml
- output: output_random-32-32-20_30agents_1.yaml
- execution
./ecbs_ta -o output_random-32-32-20_30agents_1.yaml -i ../benchmark/random-32-32-20_30agents_1.yaml -w 1.05
python3 ../example/visualize.py ../benchmark/random-32-32-20_30agents_1.yaml output_random-32-32-20_30agents_1.yaml
- collision: agent2 and agent17
- The log of agent17 seems to be strange. It uses the same timestep (t=0) several times, e.g., the log starts with (x=26, y=15, t=0), (x=26, y=15, t=0) [...].
case 2
- instance: random-32-32-20_30agents_2.yaml
- output: output_random-32-32-20_30agents_2.yaml
./ecbs_ta -o output_random-32-32-20_30agents_2.yaml -i ../benchmark/random-32-32-20_30agents_2.yaml -w 1.05
python3 ../example/visualize.py ../benchmark/random-32-32-20_30agents_2.yaml output_random-32-32-20_30agents_2.yaml
- collision: agent22 and agent28, agent9 and agent28
- The log of agent28 uses t=7 several times.
Thank you in advance for your time.
Kei
Thanks for the detailed report, Kei! This is certainly a bug. From my initial investigation, it seems like the issue is just in writing the output file and not algorithmic. In particular, if I add the following to visualize.py:167, I get a collision-free output:
# Sanity check of schedule
for agent_name in schedule["schedule"]:
agent = schedule["schedule"][agent_name]
for t, item in enumerate(agent):
if item["t"] != t:
print("WARNING: t inconsistent", agent_name, item["t"], t)
item["t"] = t
I hope that will unblock you, until I find time to fix the output itself properly.
Cheers, Wolfgang
Thank you for your quick response, Wolfgang! The code works fine as a temporary measure.
(This is irrelevant to the above bug) I later want to use your implementations in my paper. Is it fine?
Yes, of course - that's what the code is for. If you use ECBS-TA, it would be nice if you could cite my AAMAS paper. For all others, just cite the original algorithm papers and perhaps mention this repo in a footnote.