{"id":23127649,"url":"https://github.com/hlfshell/rbe550-wildfire","last_synced_at":"2025-04-04T05:43:08.584Z","repository":{"id":146170768,"uuid":"474513521","full_name":"hlfshell/rbe550-wildfire","owner":"hlfshell","description":null,"archived":false,"fork":false,"pushed_at":"2022-05-08T17:20:36.000Z","size":63703,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-09T17:14:46.795Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hlfshell.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-03-27T02:15:50.000Z","updated_at":"2025-01-01T20:29:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"3a08ec7f-675c-4598-844b-e71f62a7e3e5","html_url":"https://github.com/hlfshell/rbe550-wildfire","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlfshell%2Frbe550-wildfire","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlfshell%2Frbe550-wildfire/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlfshell%2Frbe550-wildfire/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hlfshell%2Frbe550-wildfire/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hlfshell","download_url":"https://codeload.github.com/hlfshell/rbe550-wildfire/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247128738,"owners_count":20888234,"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":[],"created_at":"2024-12-17T09:14:22.760Z","updated_at":"2025-04-04T05:43:03.574Z","avatar_url":"https://github.com/hlfshell.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RBE 550 Wildfire\n\n\u003cimg src=\"docs/imgs/RBE550 Valet flow chart.png\" width=300/\u003e\n\u003cimg src=\"videos/astar.gif\" width=300/\u003e\n\u003cimg src=\"videos/prm.gif\" width=300/\u003e\n\nThis is the repository for my RBE550 Wildfire assignment. In a simulation that can run at faster speeds (ie one second == 5 seconds or more), simulate an automated Mercedes fire truck with ackermann steering. An arsonist is routinely lighting fires to trees in the environment, which in turn spreads at a set interval to nearby trees.\n\nThis simulation can be ran with either a local planner alone, or a local planner and a global planner.\n\nThe global planner utilizes a PRM (probabilistic road map) that is generate at the onset of the program. It creates thousands of random positions, where the firetruck is positioned in a random orientation, and checks for collissions. If none are present, it will mark it as a potential node with the PRM. Nodes are kept in a KD-tree courtesy of `sklearn`. When the global planner needs to navigate from the given location to a fire, we first find the closest node to the fire truck, and then the closest node to the fire. It then utilizes A* moving through nodes, with euclidean distance as the heuristic.\n\nThe local planner either plans between desired nodes of the PRM or between the goal and start location, depending on if the global planner was utilized or not. The local planner is still A*, but explores the continuous space by utilizing kinematic primitives from the ackermann stle chasis of the robot in question - thus all planned movements are technically possible given the defined constraints of the platform.\n\nThe written explainer for the assignment can be found in `docs/report.pdf`.\n\nThis project can be ran via\n\n```\npython run.py\n```\n\n...which will run the simulator for the A* planner and then the PRM planner. To run just one, you can utilize `python astar.py` or `python prm.py` respectively.\n\nAll planners can be found in `wildfire/planner.py`; the PRM implementation in `wildfire/prm.py`. Vehicle dynamics are in `wildfire/state.py` with the vehicle in-game state controlled via `wildfire/vehicle.py`.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhlfshell%2Frbe550-wildfire","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhlfshell%2Frbe550-wildfire","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhlfshell%2Frbe550-wildfire/lists"}