{"id":15637178,"url":"https://github.com/sollimann/dstar-lite-pathplanner","last_synced_at":"2025-05-08T00:26:20.761Z","repository":{"id":46236958,"uuid":"258292515","full_name":"Sollimann/Dstar-lite-pathplanner","owner":"Sollimann","description":"Implementation of the D* lite algorithm in Python for \"Improved Fast Replanning for Robot Navigation in Unknown Terrain\"","archived":false,"fork":false,"pushed_at":"2023-11-26T21:34:33.000Z","size":1954,"stargazers_count":154,"open_issues_count":0,"forks_count":32,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-12-19T05:07:07.382Z","etag":null,"topics":["astar","astar-algorithm","astar-pathfinding","dstar","dstar-lite","dstarlite","gazebo","obstacle-avoidance","pathplanning","pygame","python","robot-navigation","robotics","robotics-programming","ros","ros2","rrt","rrt-star","rrtstar","slam"],"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/Sollimann.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":"2020-04-23T18:15:08.000Z","updated_at":"2024-12-07T15:50:34.000Z","dependencies_parsed_at":"2024-10-23T04:05:54.546Z","dependency_job_id":null,"html_url":"https://github.com/Sollimann/Dstar-lite-pathplanner","commit_stats":{"total_commits":32,"total_committers":3,"mean_commits":"10.666666666666666","dds":0.0625,"last_synced_commit":"45b2ff280ad1b26283d06fb70ab25ca3a5b316fe"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sollimann%2FDstar-lite-pathplanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sollimann%2FDstar-lite-pathplanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sollimann%2FDstar-lite-pathplanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sollimann%2FDstar-lite-pathplanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sollimann","download_url":"https://codeload.github.com/Sollimann/Dstar-lite-pathplanner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231468021,"owners_count":18381174,"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","astar-algorithm","astar-pathfinding","dstar","dstar-lite","dstarlite","gazebo","obstacle-avoidance","pathplanning","pygame","python","robot-navigation","robotics","robotics-programming","ros","ros2","rrt","rrt-star","rrtstar","slam"],"created_at":"2024-10-03T11:10:37.160Z","updated_at":"2024-12-27T10:07:59.752Z","avatar_url":"https://github.com/Sollimann.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# D* Lite incremental pathplanning algorithm for robotics\n### Implementation of the D* lite algorithm for pathplanning in Python.\n[![Build Status](https://github.com/Sollimann/Dstar-lite-pathplanner/actions/workflows/python-build.yml/badge.svg)](https://github.com/Sollimann/Dstar-lite-pathplanner/actions)\n[![version](https://img.shields.io/badge/version-1.0.0-blue)](https://GitHub.com/Sollimann/Dstar-lite-pathplanner/releases/)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://GitHub.com/Sollimann/Dstar-lite-pathplanner/graphs/commit-activity)\n[![GitHub pull-requests](https://img.shields.io/github/issues-pr/Sollimann/d-star-lite.svg)](https://GitHub.com/Sollimann/Dstar-lite-pathplanner/pulls)\n[![GitHub pull-requests closed](https://img.shields.io/github/issues-pr-closed/Sollimann/d-star-lite.svg)](https://GitHub.com/Sollimann/Dstar-lite-pathplanner/pulls)\n![ViewCount](https://views.whatilearened.today/views/github/Sollimann/Dstar-lite-pathplanner.svg)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Sollimann/Dstar-lite-pathplanner/blob/master/docs/Dstar.gif\"\u003e\n\u003c/p\u003e\n\n\nThis software is an implementation of the D*-Lite algorithm as explained in [Koenig, 2002](http://idm-lab.org/bib/abstracts/papers/aaai02b.pdf). The D* Lite algorithm was developed by Sven Koenig and Maxim Likhachev for a faster more lightweight alternative to the D* algorithm (developed by Anthony Stentz in 1995). \n\n## Dependencies\n* pip install pygame\n* pip install numpy\n\n## install poetry package mananger and virtual env (or use pipenv):\nyou can use pipenv or [poetry](https://www.pythoncheatsheet.org/blog/python-projects-with-poetry-and-vscode-part-1/) to active virtual env.\n```\n$ pip install poetry\n$ cd /d-star-lite/python\n$ poetry install\n$ poetry shell\n$ python main.py\n```\n\n### Commands\n* [Space] - move robot along line\n* [left click] - place obstacle\n* [right click] - remove obstacle\n* s_start, s_goal and view range can be changed in main.py\n\n### The cell colors are as follows:\n* Red - shortest path\n* Green - goal vertex\n* grey - obstacle\n* white - unoccupied\n\n### idea\n\n\nThe version of D* Lite that I implemented works by bascially running A* search in reverse starting from the goal and attempting to work back to the start. The solver then gives out the current solution and waits for some kind of change in the weights or obstacles that it is presented with. As opposed to repeated A* search, the D* Lite algorithm avoids replanning from scratch and incrementally repair path keeping its modifications local around robot pose.\n\nThis is the optimized version as explained in Figure 4 of the paper.\n\n### Main concepts\n\n1. Switched search direction: search from goalto the current vertex. If a change in edge cost is detected during traversal (around the current robot pose), only few nodes near the goal (=start) need to be updated.\n2. These nodes are nodes those goal distances have changed or not been caculated before and are relevant to recalculate the new shortest path to the goal.\n3. Incremental heuristic search algorithms: able to focus and build upon previous solutions\n\n## Pseudo code, D* Lite optimized version\n![D* Lite optimized](docs/pseudocode.png)\n\n## References:\nImproved Fast Replanning for Robot Navigation in Unknown Terrain\u003cbr\u003e\nSven Koenig, Maxim Likhachev\u003cbr\u003e\nTechnical Report GIT-COGSCI-2002/3,\u003cbr\u003e\nGeorgia Institute of Technology, 2002.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsollimann%2Fdstar-lite-pathplanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsollimann%2Fdstar-lite-pathplanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsollimann%2Fdstar-lite-pathplanner/lists"}