{"id":13662747,"url":"https://github.com/Habrador/Self-driving-vehicle","last_synced_at":"2025-04-25T10:33:34.311Z","repository":{"id":40302504,"uuid":"186104718","full_name":"Habrador/Self-driving-vehicle","owner":"Habrador","description":"Simulation of path planning for self-driving vehicles in Unity. This is also an implementation of the Hybrid A* pathfinding algorithm which is useful if you are interested in pathfinding for vehicles.","archived":false,"fork":false,"pushed_at":"2023-09-06T16:24:30.000Z","size":13602,"stargazers_count":408,"open_issues_count":4,"forks_count":100,"subscribers_count":16,"default_branch":"master","last_synced_at":"2024-11-08T09:12:17.865Z","etag":null,"topics":["astar","autonomous-car","autonomous-navigation","autonomous-vehicles","dubins-path","flowfield","hybrid-a-star","open-source","path-planning","pathfinding","reeds-shepp-curves","self-driving-car","selfdriving","summon","tesla","teslamotors","unit3d","unity","unity-library"],"latest_commit_sha":null,"homepage":"https://www.habrador.com/","language":"C#","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/Habrador.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}},"created_at":"2019-05-11T08:00:57.000Z","updated_at":"2024-11-01T19:40:55.000Z","dependencies_parsed_at":"2024-04-21T11:56:02.831Z","dependency_job_id":null,"html_url":"https://github.com/Habrador/Self-driving-vehicle","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/Habrador%2FSelf-driving-vehicle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Habrador%2FSelf-driving-vehicle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Habrador%2FSelf-driving-vehicle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Habrador%2FSelf-driving-vehicle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Habrador","download_url":"https://codeload.github.com/Habrador/Self-driving-vehicle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223997070,"owners_count":17238439,"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","autonomous-car","autonomous-navigation","autonomous-vehicles","dubins-path","flowfield","hybrid-a-star","open-source","path-planning","pathfinding","reeds-shepp-curves","self-driving-car","selfdriving","summon","tesla","teslamotors","unit3d","unity","unity-library"],"created_at":"2024-08-02T05:02:07.204Z","updated_at":"2024-11-10T18:31:33.595Z","avatar_url":"https://github.com/Habrador.png","language":"C#","funding_links":[],"categories":["C\\#"],"sub_categories":[],"readme":"# Self Driving Vehicle\n\nLet's say you are standing somewhere in a room and would like to find the shortest path to a goal. You can see a few obstacles, such as a table, that you would like to avoid. The easiest way to solve the problem (if you are a computer) is to divide the room into many small squares (cells) and then use the common A* (A Star) search algorithm to find the shortest path. \n\nBut what if you are a car and can't turn around 360 degrees like a human can, then you have a problem! Well, at least until you learn the Hybrid A Star search algorithm. With that algorithm you will be able to find a fully drivable path to the goal!\n\nClick for YouTube video of the algorithm in action:\n\n[![Link to youtube video](https://img.youtube.com/vi/L591fS51F4I/0.jpg)](https://www.youtube.com/watch?v=L591fS51F4I)\n\nIf you just want to play around with it you can download a build of the project here for Windows: https://habrador.itch.io/hybrid-a-star\n\n\n\n## Tell me how the algorithm works\n\nYou can read more about it here: https://blog.habrador.com/2015/11/explaining-hybrid-star-pathfinding.html\n\n\n\n## Is this something actually being used by car companies?\n\nYes! Tesla mentioned the algorithm in a [Tesla AI Day](https://www.youtube.com/watch?v=j0z4FweCy4M) presentation (roughly at 1 hour 20 minutes). So if you ever wondered how the Tesla \"Smart Summon\" feature works then now you know! Tesla has included a short description of the Smart Summon feature (which is part of the Full Self-Driving Capability (FSD) version of Tesla Autopilot) in the [Model Y Manual](https://www.tesla.com/ownersmanual/modely/en_eu/GUID-6B9A1AEA-579C-400E-A7A6-E4916BCD5DED.html). We can assume it's the same implementation for other Tesla models, such as Model S. \n\n* **\"Smart Summon works with the Tesla mobile app when your phone is located within approximately 6 meters of Model Y.\"** My implementation works over distances of greater than 6 meters. \n\n* **\"Smart Summon may not stop for all objects (especially very low objects such as some curbs, or very high objects such as a shelf) and may not react to all traffic. Smart Summon does not recognize the direction of traffic, does not navigate around empty parking spaces, and may not anticipate crossing traffic.\"** My implementation has fixed obstacles only, and they all have the same height. I actually planned to add moving objects and traffic lanes with direction, but will not do so because Tesla's implementation can't handle them.\n\n* **\"Touch the crosshair icon then drag the map to position the pin on a chosen destination. Press and hold the GO TO TARGET button. Model Y moves to the destination.\"** My implementation is not just moving to a destination, but also with a specific target direction, such as the left door ends up infront of you.         \n\n\n\n## FAQ \n\n* **What software do I need?** To make this project work you need [Unity](https://unity.com/). I've used Unity 2017-2021 but other versions should work as well. \n\n* **Is it working on a navmesh?** No, it's not! The algorithm needs a grid with cells to be able to remove unnecessary nodes, or you will end up with an infinite amount of nodes.\n\n\n\n## TODO\n\n* The car can follow the generated paths with great accuracy, but the truck with trailer is not that good at following the path. That has to be fixed!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHabrador%2FSelf-driving-vehicle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FHabrador%2FSelf-driving-vehicle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FHabrador%2FSelf-driving-vehicle/lists"}