libMultiRobotPlanning icon indicating copy to clipboard operation
libMultiRobotPlanning copied to clipboard

Potential Bug on ECBS-TA

Open Kei18 opened this issue 4 years ago • 3 comments

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

./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

./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

Kei18 avatar Nov 20 '20 04:11 Kei18

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

whoenig avatar Nov 20 '20 10:11 whoenig

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?

Kei18 avatar Nov 20 '20 11:11 Kei18

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.

whoenig avatar Nov 20 '20 11:11 whoenig