{"id":45454610,"url":"https://github.com/kavrakilab/pyre","last_synced_at":"2026-02-22T06:03:06.146Z","repository":{"id":39909716,"uuid":"369859848","full_name":"KavrakiLab/pyre","owner":"KavrakiLab","description":null,"archived":false,"fork":false,"pushed_at":"2023-06-27T15:29:46.000Z","size":32476,"stargazers_count":11,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2023-06-28T07:38:28.558Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KavrakiLab.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}},"created_at":"2021-05-22T16:47:48.000Z","updated_at":"2023-03-05T01:36:35.000Z","dependencies_parsed_at":"2022-07-28T02:08:59.699Z","dependency_job_id":null,"html_url":"https://github.com/KavrakiLab/pyre","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/KavrakiLab/pyre","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KavrakiLab%2Fpyre","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KavrakiLab%2Fpyre/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KavrakiLab%2Fpyre/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KavrakiLab%2Fpyre/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KavrakiLab","download_url":"https://codeload.github.com/KavrakiLab/pyre/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KavrakiLab%2Fpyre/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29705845,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T05:59:28.568Z","status":"ssl_error","status_checked_at":"2026-02-22T05:58:46.208Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2026-02-22T06:03:05.290Z","updated_at":"2026-02-22T06:03:06.137Z","avatar_url":"https://github.com/KavrakiLab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\nAn implementation of SPARK and FLAME: two learning-for-motion-planning frameworks suitable for High-DOF Robots in geometric or sensed 3D workspaces\n\n- [Paper](https://arxiv.org/abs/2010.15335)\n- [Short_Video](https://youtu.be/cH4_lIjjs58) (2 min)\n- [Long_Video](https://youtu.be/DP0376NNHQo) (11 min)\n\nPlease cite our work if you use our code or compare to our approach.\n```\n@article{chamzas2021learning,\n  author  = {Chamzas, Constantinos and Kingston, Zachary and Quintero-Peña, Carlos and Shrivastava, Anshumali and Kavraki, Lydia E.},\n  title   = {Learning Sampling Distributions Using Local 3D Workspace Decompositions for Motion Planning in High Dimensions },\n  booktitle={International Conference on Robotics and Automation (ICRA)},\n  year={2021},\n  organization={IEEE}\n}\n```\n\n**Note** This repository is periodically maintained and updated by the authors to keep the results reproducible and adding new methods. For question/comments please feel free to open an issue, or contact the authors directly.   \n\n## 1) Installation \nBoth a dockerfile [Dockerfile](https://github.com/pyre/docker/DockerFile) (1a) and detailed instructions for a native ros workspace installation are provided (1b). If you are not familiar with the ROS infrastructure, using the Docker installation is recommended.\n\n### 1a) Docker\n   1. You can install docker (if not already installed) on you machine by following the instruictions [here](https://docs.docker.com/get-docker/)\n\n   2. Then clone this repository\n   \n   ```\n   git clone https://github.com/KavrakiLab/pyre.git\n   ```\n\n   3. Enter the repository and call the image building script:\n\n   ```\n   cd pyre \n   sudo ./docker/build-docker.sh\n   ```\n \nNow you can start an interactive docker session and follow the instructions from step 2) onwards.\nThe name of the workspace is `/ws`\n\n```\nsudo docker run --rm -it --name pyre_test pyre\n```\n\n#### Minimum steps for reproducing the paper results. \nYou can run the following commands to quickly reproduce the results. For a more detailed understaning follows the instructions from step 2) onwards. \nThe following commands run a standalone container and send all the commands through the docker interface.\n\n```\nsudo docker run --rm -t --name pyre_test -d pyre\nsudo docker exec pyre_test /bin/bash -c \"cd ./src/pyre; unzip datasets; unzip database.zip;\"\nsudo docker exec pyre_test /bin/bash -c \"source devel/setup.bash; nohup roscore \u0026\u003e /dev/null \u0026\"\n\n# This will also detach the processes from the terminal so you can run this headlessly in e.g., in a remote server\n#To recreate the results of Figure 4b) \nsudo docker exec pyre_test /bin/bash -c \"source devel/setup.bash; nohup ./src/pyre/bash_scripts/benchmark.sh \u0026\"\n\n#To recreate the results of Figure 4c) \nsudo docker exec pyre_test /bin/bash -c \"source devel/setup.bash; nohup ./src/pyre/bash_scripts/benchmark_inc.sh \u0026\"\n\n#Aggregate the results\nsudo docker exec pyre_test /bin/bash -c \"cd ./src/pyre/benchmark; python3 ompl_benchmark_statistics.py shelf_zero_test/*.log -d shelf_zero_test_results.db\"\nsudo docker exec pyre_test /bin/bash -c \"cd ./src/pyre/benchmark; python3 ompl_benchmark_statistics.py shelf_height_test/*.log -d shelf_height_test_results.db\"\nsudo docker exec pyre_test /bin/bash -c \"cd ./src/pyre/benchmark; python3 ompl_benchmark_statistics.py shelf_zero_height_test/*.log -d shelf_height_rot_test_results.db\"\n\n#Copy the results back to the host machine\nsudo docker cp pyre_test:/ws/src/pyre/benchmark/shelf_zero_test_results.db ./ \nsudo docker cp pyre_test:/ws/src/pyre/benchmark/shelf_height_test_results.db ./\nsudo docker cp pyre_test:/ws/src/pyre/benchmark/shelf_height_rot_test_results.db ./\n```\nYou can visualize the results by loading the `.db` files to plannerarena [Planner Arena](http://plannerarena.org/)\n \n### 1b) Native \n\nThe following instructions have been tested on **Ubuntu 18.04**. Similar\ninstructions should work for other Linux distributions.\n1. Install [Robowflex](https://github.com/KavrakiLab/robowflex) **v1.3 and above**. You can follow [these instructions](https://kavrakilab.github.io/robowflex/md__home_runner_work_robowflex_robowflex__8docs_markdown_installation.html). \n\n2. Clone this repository into the `src` folder of your catkin workspace:\n\n   ```\n   cd \u003clocation_of_your_workspace\u003e/src\n   git clone https://github.com/KavrakiLab/pyre.git\n   ```\n3. Add the Fetch robot description files (Choose only one option) \n     - Robowflex resources version. This version includes only the necessary files (URD, SRDF, meshes) \n       ```\n       cd \u003clocation_of_your_workspace\u003e/src\n       git clone https://github.com/KavrakiLab/robowflex_resources.git\n       ```\n     - Fetch Robotics from Debian/Source (Includes all the ros-fetch software)\n       ```\n       # Debian\n       sudo apt install ros-melodic-fetch-ros\n\n       # Or, Source\n       cd \u003clocation_of_your_workspace\u003e/src\n       git clone https://github.com/fetchrobotics/fetch_ros\n       ```\n4. Finally, build your catkin workspace and source the devel/setup.bash:\n   ```\n   cd \u003clocation_of_your_workspace\u003e\n   catkin build\n   source devel/setup.bash\n   ```\n\n## 2) Training/Testing datasets\n\nSimply unzip the datasets.zip file. They will be placed under the folder `\u003clocation_of_your_workspace\u003e/datasets/`.\n```\n#Go to the pyre package\nroscd pyre\nunzip datasets.zip\n```\n\nThe three provided datasets have motion planning problems of a Fetch robot placing its arm inside a deep shelf. \nThe `scene*`  yaml files include geometric representations of the scenes used by SPARK.\nThe `scene_sensed*` yaml files include octomap representions  of the scenes used by FLAME.  \n\n- `shelf_zero` : 100 test and 500 train examples of the XY dataset described in the paper. \n- `shelf_height` : 100 test and 500 train examples with X,Y,Z dataset described in the paper. \n- `shelf_heigth_rot` : 100 test and 500 train examples with X,Y,Z,Θ dataset described in the paper. \n\n\n**Note** These datasets were generated using the [MotionBenchMaker](https://github.com/KavrakiLab/motion_bench_maker) tool.  \n\n\n## 3) Experience databases (Learning)\n\n### Use precomputed experience databases\nSimply unzip the databases.zip file. They will be placed under the folder `\u003clocation_of_your_workspace\u003e/database/`.\n```\nroscd pyre\nunzip database.zip\n```\n\n### Generate new experience databases \n1. Start a rosmaster instance. \n    ```\n    roscore\n    ```\n2. In a new terminal run the `process.sh` script which processes each path and scene into local primitives (~60 minutes).  \n    ```\n     source ../../devel/setup.bash\n    ./bash_scripts/process.sh\n    ```\n3. Afterwards run the merging script that aggregates the local primitives to complete experience databases. \n    ```\n    ./bash_scripts/merge.sh\n    ```\n\n## 4) Benchmarking and Visualizing the results. \n\n1. Start a rosmaster instance (if you did not start one already).     \n   ```\n   roscore\n   ```\n\n2. Run one of the following scripts.\n      - Benchmark SPARK, FLAME with full databases (500) and corresponds to Fig. 4b) for all three datasets.\n         ```\n         source ../../devel/setup.bash\n         ./bash_scripts/benchmark.sh\n         ```\n      - Benchmark SPARK,FLAME with incremental databases (10, 30, 50, 100, 300, 500  corresponds to Fig. 4c) for `shelf_height_rot'.\n         ```\n         source ../../devel/setup.bash\n         ./bash_scripts/benchmark_inc.sh \n         ```\n\n3. To plot the results use the `ompl_benchmark_statistics.py` script to aggregate the benchmarking results for each dataset. `bench_inc.sh`  the shelf_height_rot dataset\n   ```\n   #Go to the benchmarking folder\n   cd benchmark\n   #Call the ompl script to aggregate the results in an SQL database\n   python3 ompl_benchmark_statistics.py shelf_zero_test/*.log -d shelf_zero_test_results.db\n   python3 ompl_benchmark_statistics.py shelf_height_test/*.log -d shelf_height_test_results.db\n   python3 ompl_benchmark_statistics.py shelf_height_rot_test/*.log -d shelf_height_rot_test_results.db\n   ```\n   A `\u003cdataset\u003e\\_results.db` is generated for each dataset under the `benchmark/` folder. You can load these files in [Planner Arena](http://plannerarena.org/) to plot the results.\n\n   If you are using the docker image you can copy the results to your host machine with:\n   ```\n   docker cp pyre_test:/ws/src/pyre/benchmark/shelf_zero_test_results.db ./ \n   docker cp pyre_test:/ws/src/pyre/benchmark/shelf_height_test_results.db ./\n   docker cp pyre_test:/ws/src/pyre/benchmark/shelf_height_rot_test_results.db ./\n   ```\n    \n   **Note:** If you are using Python2 and [`ompl_benchmark_statistics.py`](https://github.com/ompl/ompl/blob/master/scripts/ompl_benchmark_statistics.py) does not find pathlib you may have to `apt install python-pathlib2` or `pip install pathlib2`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkavrakilab%2Fpyre","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkavrakilab%2Fpyre","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkavrakilab%2Fpyre/lists"}