{"id":21909799,"url":"https://github.com/hiedt/microdrop-path-planner","last_synced_at":"2026-05-19T02:10:26.893Z","repository":{"id":206829197,"uuid":"711530463","full_name":"hiedt/microdrop-path-planner","owner":"hiedt","description":"An automatic path planning for MicroDrop","archived":false,"fork":false,"pushed_at":"2024-11-17T11:30:00.000Z","size":1339,"stargazers_count":0,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-27T08:13:54.922Z","etag":null,"topics":["astar-algorithm","microfluidics","optimization","pathfinding"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hiedt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-29T14:54:28.000Z","updated_at":"2024-11-17T11:30:05.000Z","dependencies_parsed_at":"2023-11-12T17:24:42.043Z","dependency_job_id":"ea66da33-39f7-48c4-a3ec-6290d1a69614","html_url":"https://github.com/hiedt/microdrop-path-planner","commit_stats":null,"previous_names":["hieudtrung/opendrop-planner","hieudtrung/microdrop-path-planner","hiedt/microdrop-path-planner"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiedt%2Fmicrodrop-path-planner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiedt%2Fmicrodrop-path-planner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiedt%2Fmicrodrop-path-planner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hiedt%2Fmicrodrop-path-planner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hiedt","download_url":"https://codeload.github.com/hiedt/microdrop-path-planner/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244924801,"owners_count":20532878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astar-algorithm","microfluidics","optimization","pathfinding"],"created_at":"2024-11-28T17:26:06.956Z","updated_at":"2026-05-19T02:10:26.856Z","avatar_url":"https://github.com/hiedt.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MicroDrop Path Planner Plugin\n\n## Introduction\n\n[DropBot](https://github.com/wheeler-microfluidics/dropbot/wiki) is an open-source instrument for digital micro-fluidic sensing (or microfluidics). DropBot features two key functionalities: (1) real-time monitoring of instantaneous drop velocity, and (2) application of constant electrostatic driving forces through compensation for amplifier-loading and device capacitance.\n\n[MicroDrop](https://github.com/sci-bots/microdrop) (written in Python 2.7) is an open-sourced graphical user interface (GUI) for DropBot. It facilitates user experience when collecting data from DropBot. However, moving the droplets around still requires an explicit instruction define in JSON, which is tedious and unscalable.\n\nIn this project, I create a plugin for MicroDrop named \"Path Planner\". This plugin extends the GUI controller with an automatic path finding agent. Users only need to define each droplet's start \u0026 one or more destinations. Then, the paths are calculated by the [A* algorithm](https://en.wikipedia.org/wiki/A*_search_algorithm). No more explicit, static definition in JSON.\n\n\u003e **Important**: please don't be confused by other names such as [OpenDrop](https://www.gaudi.ch/OpenDrop/), even though they share the same technology and use case.\n\n## Getting Started\n\n### Build standalone WHCA demo from source\n\n1. Install Java Development Kit 8 (JDK 8) and Maven (version 3.4 or newer)\n\n2. Clone this source code \u0026 navigate to the right folder\n\n    ```bash\n    git clone https://github.com/hieudtrung/MicroDrop-planner.git\n    cd algorithms/WHCA\n    ```\n\n3. Modify your source code or build file `pom.xml` and start building or running\n\n    ```bash\n    # build byte code\n    mvn package\n    # run target\n    mvn spring-boot:run\n    ```\n\n4. Run the demo\n\n    ```bash\n    java -jar target/coop-pathfinder.jar\n    ```\n\n### Run the standalone WHCA demo\n\n1. If you only want to run the pre-compiled WHCA demo, just install Java runtime environment (JRE) instead of the whole JDK. Make sure it is in your `$PATH` environment variable.\n\n2. Clone this source code \u0026 navigate to the right folder\n\n    ```bash\n    git clone https://github.com/hieudtrung/MicroDrop-planner.git\n    cd algorithms/WHCA\n    ```\n\n3. Run with JRE\n\n    ```bash\n    java -jar target/coop-pathfinder.jar\n    ```\n\n### Run the plugin with MicroDrop\n\nComing soon\n\n## Developer Guide\n\nThis section introduces how to develop your own path finding algorithm and plug it into the MicroDrop application as one of its plugin.\n\n 1. Install dependencies listed in `requirements.host` section of\n    [`.conda-recipe/meta.yaml`](/.conda-recipe/meta.yaml).\n 2. Run the following command from the repository root:\n\n    ```bash\n    python -m mpm.bin.build -p path-planner --properties-only -s . -t .\n    ```\n\n 3. Select or create directory as root to hold development plugins, e.g.,\n\n    ```bash\n    mkdir %USERPROFILE%\\microdrop-dev-plugins\n    ```\n\n 4. Create link to repo directory in development root with import-friendly **_plugin_** name, e.g.:\n\n    ```bash\n    mklink /J %USERPROFILE%\\microdrop-dev-plugins\\path-planner-plugin %REPO_DIR%\n    ```\n\n 5. Add this directory (or where you store all the plugins) to semi-colon-separated list of paths in `MICRODROP_PLUGINS_PATH` environment variable.\n\n## TODO\n\n- [ ] Implement WHCA\n- [ ] Migrate the source code to C++\n- [ ] Synchronize with the real hardware status, i.e., ensure that droplets are correctly placed\n\n## References\n\n[1] A big thanks to the original Java implementation of WHCA by [igrek51](https://github.com/igrek51/coop-pathfinder/tree/master).\n\n[2] [Windowed Hierachical Cooperative A* (WHCA)](https://www.davidsilver.uk/wp-content/uploads/2020/03/coop-path-AIIDE.pdf)\n\n[3] [Official guide](https://github.com/sci-bots/microdrop/wiki/Developer-Guide) from MicroDrop and their [Youtube channel](https://youtu.be/btmT3jUZpjs?feature=shared)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiedt%2Fmicrodrop-path-planner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhiedt%2Fmicrodrop-path-planner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhiedt%2Fmicrodrop-path-planner/lists"}