Giter Club home page Giter Club logo

kiva_simulation's Introduction

Kiva Simulation

Introduction

此程序基于以下文章:

  • "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

To Run

  1. Compile. In the base directory of this project, do "mkdir build && cd build && cmake .. && make".
  2. 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".
  3. Start the python GUI by "python3 ../src/manual_utilities/ks_gui.py". If the module "tk" was not installed, try pip3.
  4. Start the main program by "./bin/local_test_main"(the first round of computation may take 15 seconds).

Implementation Notes

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

  2. For all message queue, the sender can send in an async way, the receiver should copy and process.

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

Lessons Learned

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

  2. Should finish all behaviors before turn on -O2, since with optimization turned on, it is much harder to debug.

kiva_simulation's People

Contributors

romanzhg avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.