{"id":13716267,"url":"https://github.com/LiJiangnanBit/path_optimizer","last_synced_at":"2025-05-07T05:32:33.327Z","repository":{"id":41482831,"uuid":"240216878","full_name":"LiJiangnanBit/path_optimizer","owner":"LiJiangnanBit","description":"Optimization-based real-time path planning for vehicles. ","archived":false,"fork":false,"pushed_at":"2023-10-24T01:17:19.000Z","size":11853,"stargazers_count":540,"open_issues_count":21,"forks_count":140,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-11-14T04:34:41.183Z","etag":null,"topics":["autonomous-driving","osqp","osqp-eigen","path-optimization","path-planning","quadratic-programming","robotics"],"latest_commit_sha":null,"homepage":"","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/LiJiangnanBit.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}},"created_at":"2020-02-13T08:59:33.000Z","updated_at":"2024-11-12T10:44:20.000Z","dependencies_parsed_at":"2024-01-05T23:46:44.769Z","dependency_job_id":"31c70cfc-7965-4caf-8122-150d6d246f20","html_url":"https://github.com/LiJiangnanBit/path_optimizer","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/LiJiangnanBit%2Fpath_optimizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiJiangnanBit%2Fpath_optimizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiJiangnanBit%2Fpath_optimizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LiJiangnanBit%2Fpath_optimizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LiJiangnanBit","download_url":"https://codeload.github.com/LiJiangnanBit/path_optimizer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252823226,"owners_count":21809703,"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":["autonomous-driving","osqp","osqp-eigen","path-optimization","path-planning","quadratic-programming","robotics"],"created_at":"2024-08-03T00:01:08.701Z","updated_at":"2025-05-07T05:32:30.985Z","avatar_url":"https://github.com/LiJiangnanBit.png","language":"C++","readme":"# path_optimizer  \n# :bell: CHECK OUT THE NEWER VERSION [path_optimizer_2](https://github.com/LiJiangnanBit/path_optimizer_2) and [path_optimizer_ilqr](https://github.com/LiJiangnanBit/path_optimizer_ilqr)  \n![](https://img.shields.io/badge/ROS-Kinetic-orange)  ![](https://img.shields.io/github/last-commit/LijiangnanBit/path_optimizer)  \n**This ROS package generates feasible paths for non-holonomic vehicles.**  \n![2021-01-07 01-19-29屏幕截图.png](https://i.loli.net/2021/01/07/W9PHE2h5DUtsTi1.png)  \n\n## Simulation videos\n#### (1) [Simulation in dynamic environment](https://vimeo.com/498950818)  \n#### (2) [Simulation with complex static obstacles](https://vimeo.com/498591477)  \n![simulation](https://i.loli.net/2021/01/09/fkjmlpRXFxA9a2J.png)\n\n## Run demos \n### 0. Install dependencies and build  \n- ROS kinetic on Ubuntu 16.04 \n- OpenCV 3    \n~~~\nmkdir -p workspace/src \u0026\u0026 cd workspace/src\ngit clone git@github.com:LiJiangnanBit/path_optimizer.git\nsudo bash path_optimizer/scripts/install_deps.sh\ncd ..\ncatkin build path_optimizer\nsource devel/setup.bash\n~~~   \n*install_deps.sh* will install other dependencies (Those already installed will be skipped).\nThese dependencies include:\n- [ipopt 3.12.4](https://coding.net/u/aRagdoll/p/Ipopt-3.12.4/git)\n- [cppad 20180000.0](https://www.coin-or.org/download/source/CppAD/cppad-20180000.0.gpl.tgz)\n- [google benchmark](https://github.com/google/benchmark)\n- [glog](https://github.com/google/glog)\n- [gflags](https://github.com/gflags/gflags)\n- [osqp-eigen](https://github.com/robotology/osqp-eigen)\n- [grid_map](https://github.com/ANYbotics/grid_map)\n- [ros_viz_tools](https://github.com/Magic-wei/ros_viz_tools)\n- [tinyspline_ros](https://github.com/qutas/tinyspline_ros).  \n\n### 1. Demo\nA png image is loaded as the grid map. You can click to specify the global reference path and the start/goal state of the vehicle.  \n~~~\nroslaunch path_optimizer demo.launch\n~~~\n#### (1) Pick reference points using \"Publish Point\" tool in RViz.  \n- Pick at least six points.  \n- There are no hard and fast rules about the spacing of the points.  \n- If you want to abandon the chosen points, just double click anywhere when using the \"Publish Point\" tool.  \n- You can replace `gridmap.png` with other black and white images. Note that the resolution in `demo.cpp` is set to 0.2m, whick means that the length of one pixel is 0.2m on the map.  \n- In application, the reference path is given by a global path or by a search algorithm like A*.  \n\n![选点.gif](https://i.loli.net/2020/04/12/kRItwQTh5GJWHxV.gif)  \n#### (2) Pick start state using \"2D Pose Estimate\" tool and pick goal state using \"2D Nav Goal\" tool.  \n- Currently, it's not strictly required to reach the goal state. But this can be changed.    \n- The start state must be ahead of the first reference point.  \n\n![规划.gif](https://i.loli.net/2020/04/12/XmxgwTGRI1MtoVK.gif)  \n\n### 2. Benchmark test  \nThis is a computation time test.\n\n```\nrosrun path_optimizer path_optimizer_benchmark\n```   \n\n## Usage\nRefer to [demo.cpp](https://github.com/LiJiangnanBit/path_optimizer/blob/master/src/test/demo.cpp)  \nThe parameters that you can change can be found in `planning_flags.cpp`.  \n\n## How it works\n### Refer [here](https://github.com/LiJiangnanBit/path_optimizer/wiki).\n1. Take inputs (red dots):  \n![2020-02-13 16-27-46屏幕截图.png](https://i.loli.net/2020/02/13/rRdA7ZGmjfObzNV.png)  \n2. (Optional) Use B spline curve fitting to make the path continuous and then search around it for a more reasonable reference path (yellow dots). \nThis step can be skipped by changing settings.    \n![2020-02-13 16-27-56屏幕截图.png](https://i.loli.net/2020/02/13/GJEbrUIXwScKmWT.png)    \n3. Smooth the reference path using IPOPT (yellow curve).    \n![2020-02-13 16-28-05屏幕截图.png](https://i.loli.net/2020/02/13/Meqi3m7CXzZFIxJ.png)  \n4. Represent the path planning problem as a QP and solve it using OSQP.   \n![2020-02-13 16-28-19屏幕截图.png](https://i.loli.net/2020/02/13/HaMpYKcZLxTdtAs.png)\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLiJiangnanBit%2Fpath_optimizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FLiJiangnanBit%2Fpath_optimizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FLiJiangnanBit%2Fpath_optimizer/lists"}