此程序基于以下文章:
- "SIPP: Safe Interval Path Planning for Dynamic Environments",
- "Complete decentralized method for on-line multi-robot trajectory planning in well-formed infrastructures",
- "Lifelong Multi-Agent Path Finding for Online Pickup and Delivery Tasks",
- "Persistent and Robust Execution of MAPF Schedules in Warehouses".
此程序的运行效果可参考视频:
- v.youku.com/v_show/id_XNDQ2MTgzNzczMg==.html
- Compile. In the base directory of this project, do "mkdir build && cd build && cmake .. && make".
- Make sure redis server is started, and there is no key named "ks". With Ubuntu, to start redis, run "redis-server", then do "echo 'del ks' | redis-cli".
- Start the python GUI by "python3 ../src/manual_utilities/ks_gui.py". If the module "tk" was not installed, try pip3.
- Start the main program by "./bin/local_test_main"(the first round of computation may take 15 seconds).
-
In this project, communication between modules is written as function call(receiver maintains a message queue and a lock), as compared to use RPC systems like Stubby. The advantage of this approach is lighter weight, the disadvantage is having this non-standard setup needs more reasoning.
-
For all message queue, the sender can send in an async way, the receiver should copy and process.
-
Computing the action dependency graph is time consuming(for 300 robots, it takes around 10s). Move it out of the critical path makes the program more responsive.
-
Components in a large program should be tested separately. To achieve this, APIs between components need to be defined. There needs to be an API class and an implementation class.
-
Should finish all behaviors before turn on -O2, since with optimization turned on, it is much harder to debug.