{"id":13717517,"url":"https://github.com/onlytailei/CppRobotics","last_synced_at":"2025-05-07T07:31:46.325Z","repository":{"id":38311164,"uuid":"178146605","full_name":"onlytailei/CppRobotics","owner":"onlytailei","description":"cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control","archived":false,"fork":false,"pushed_at":"2024-03-08T13:25:58.000Z","size":6743,"stargazers_count":1821,"open_issues_count":6,"forks_count":489,"subscribers_count":59,"default_branch":"master","last_synced_at":"2024-08-04T00:13:37.173Z","etag":null,"topics":["algorithms","cpp","localization","planning","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/onlytailei.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-03-28T07:09:18.000Z","updated_at":"2024-08-02T10:27:44.000Z","dependencies_parsed_at":"2024-02-03T07:48:37.222Z","dependency_job_id":null,"html_url":"https://github.com/onlytailei/CppRobotics","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/onlytailei%2FCppRobotics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlytailei%2FCppRobotics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlytailei%2FCppRobotics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onlytailei%2FCppRobotics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onlytailei","download_url":"https://codeload.github.com/onlytailei/CppRobotics/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224573490,"owners_count":17333804,"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":["algorithms","cpp","localization","planning","robotics"],"created_at":"2024-08-03T00:01:23.460Z","updated_at":"2024-11-14T05:32:01.381Z","avatar_url":"https://github.com/onlytailei.png","language":"C++","readme":"# CppRobotics\n\nThis is the cpp implementation of the [PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics)\n\n## Requirment\n- cmake\n- opencv 3.3\n- Eigen 3\n- [CppAD](https://www.coin-or.org/CppAD/Doc/install.htm) / [IPOPT](https://www.coin-or.org/Ipopt/documentation/node14.html) (*for MPC convex optimization*) [install tips](https://github.com/udacity/CarND-MPC-Quizzes/blob/master/install_Ipopt_CppAD.md)\n- ~~ROS~~ (*~~To make the repo lightweight :)~~. Yet, we may still need it for 3D visualization.*)\n\n## Build\n     $ mkdir build\n     $ cd build\n     $ cmake ../\n     $ make -j 8\n\nFind all the executable files in ***build/bin***.\n\n# Table of Contents\n* [Localization](#localization)\n    * [Extended kalmam filter](#extended-kalman-filter-localization)\n    * [Particle filter](#particle-filter-localization)\n    * Histogram filter\n* [Mapping](#mapping)\n    * Gaussian grid map\n* [SLAM](#SLAM)\n    * FastSLAM 1.0\n* [Path Planning](#path-planning)\n    * [Dijkstra](#dijkstra)\n    * [A Star](#a-star)\n    * [RRT](#rrt)\n    * [Dynamic Window Approach](#dynamic-window-approach)\n    * [Model Predictive Trajectory Generator](#model-predictive-trajectory-generator)\n    * [Cubic Spline Planner](#cubic-spline-planner)\n    * [State Lattice Planner](#state-lattice-planner)\n    * [Frenet Frame Trajectory](#frenet-frame-trajectory)\n* [Path Tracking Control](#path-tracking-control)\n    * [LQR Sterring Control](#lqr-steering-control)\n    * [LQR Speed and Steering Control](#lqr-speed-and-steering-control)\n    * [Model Predictive Speed and Steering Control](#mpc-speed-and-steering-control)\n* [Aerial Navigation](#aerial-navigation)\n     * Drone 3D Trajectory Following\n     * Rocket Powered Landing\n\n# Localization\n## Extended Kalman Filter Localization\n* green line: the groundtruth trajectory\n* black line: dead reckoning\n* red points: observations (e.g. GPS)\n* blue line: estimated positions\n\n\u003c!-- ![ekf_gif](./gif/ekf.gif) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/ekf.gif\" alt=\"ekf\" width=\"400\"/\u003e\n\n[Probabilistic Robotics](http://www.probabilistic-robotics.org/)\n\n## Particle Filter Localization\n* green line: the groundtruth trajectory\n* black line: dead reckoning\n* red points: landmarks\n* blue line: estimated positions\n\n\u003c!-- ![pf_gif](./gif/pf.gif) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/pf.gif\" alt=\"pf\" width=\"400\"/\u003e\n\n[Probabilistic Robotics](http://www.probabilistic-robotics.org/)\n\n# Path Planning\n\n## Dijkstra\n* blue point: the start point\n* red point: the goal point\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/dijkstra.gif\" alt=\"dijkstra\" width=\"400\"/\u003e\n\n## A star\n* blue point: the start point\n* red point: the goal point\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/a_star.gif\" alt=\"a_star\" width=\"400\"/\u003e\n\n## RRT\n* red circle: the start point\n* blue circle: the goal point\n* black circle: obstacles\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/rrt.gif\" alt=\"rrt\" width=\"400\"/\u003e\n\n## Dynamic Window Approach\n* blue circle: the target point\n* red circle: the robot\n\n\u003c!-- ![dwa_gif](./gif/dwa.gif) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/dwa.gif\" alt=\"dwa\" width=\"400\"/\u003e\n\n[The dynamic window approach to collision avoidance](https://ieeexplore.ieee.org/document/580977)\n\n## Model Predictive Trajectory Generator\nThis part is based on the bicycle motion model.\n* blue circle: the target point\n* red circle: the initial point\n\n\u003c!-- ![mptg_gif](./gif/mptg.gif) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/mptg.gif\" alt=\"mptg\" width=\"400\"/\u003e\n\n## Cubic Spline Planner\n\n\u003c!-- ![mptg_gif](./gif/csp.png =500x) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/csp.png\" alt=\"csp\" width=\"400\"/\u003e\n\n## State Lattice Planner\n* blue circle: the target point\n* red circle: the initial point\n\n\u003c!-- ![mptg_gif](./gif/slp.gif) --\u003e\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/slp.gif\" alt=\"slp\" width=\"400\"/\u003e\n\n[State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments](https://www.ri.cmu.edu/pub_files/pub4/howard_thomas_2008_1/howard_thomas_2008_1.pdf)\n\n## Frenet Frame Trajectory\n\n* black line: the planned spline path\n* red circle: the obstacle\n* blue circle: the planned trajectory\n* green circle: the real-time position of robot\n\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/frenet.gif\" alt=\"frenet\" width=\"400\"/\u003e\n\n[Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame](https://www.researchgate.net/publication/224156269_Optimal_Trajectory_Generation_for_Dynamic_Street_Scenarios_in_a_Frenet_Frame)\n\n\n# Path Tracking Control\n## LQR Steering Control\n* black line: the planned spline path\n* red circle: the position under lqr control\n\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/lqr_steering.gif\" alt=\"lqr_steering\" width=\"400\"/\u003e\n\n\n## LQR Speed and Steering Control\n* black line: the planned spline path\n* red circle: the position under lqr control\n\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/lqr_full.gif\" alt=\"lqr_full\" width=\"400\"/\u003e\n\n\n## MPC Speed and Steering Control\n* black line: the planned spline path\n* blue line: the passed path\n* yellow cross: the reference trajectory for MPC    \n(To compile this part, you need to uncomment the related lines in CMakeLists.txt and install [CppAD](https://www.coin-or.org/CppAD/Doc/install.htm) and [IPOPT](https://coin-or.github.io/Ipopt/).)\n\n\u003cimg src=\"https://ram-lab.com/file/tailei/gif/mpc.gif\" alt=\"mpc\" width=\"400\"/\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonlytailei%2FCppRobotics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonlytailei%2FCppRobotics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonlytailei%2FCppRobotics/lists"}