# hybrid-a-star-annotation
**Repository Path**: yuanzicode/hybrid-a-star-annotation
## Basic Information
- **Project Name**: hybrid-a-star-annotation
- **Description**: Hybrid A*路径规划器的代码注释
- **Primary Language**: Unknown
- **License**: BSD-3-Clause
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-11-25
- **Last Updated**: 2021-11-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## Hybrid A* ROS源码中文注释
本仓库是Hybrid A* 的ROS版代码注释,原始代码地址为:
[https://github.com/karlkurzer/path_planner](https://github.com/karlkurzer/path_planner)
注释依据的主要参考文献有:
- DOLGOV D, THRUN S, MONTEMERLO M, et al. Practical search techniques in path planning for autonomous driving[J]. Ann Arbor, 2008, 1001(48105):18-80.
- KURZERK.PathPlanninginUnstructuredEnvironments:AReal-timeHybridA*Implementation for Fast and Deterministic Path Generation for the KTH Research Concept Vehicle[Z].2016.
- OK K, ANSARI S, GALLAGHER B, et al. Path planning with uncertainty: Voronoi uncertainty fields[C]//2013 IEEE International Conference on Robotics and Automation. 2013:4596-4601.
- DOLGOV D, THRUN S. Autonomous driving in semi-structured environments: Mapping and planning[C]//2009 IEEE International Conference on Robotics and Automation. 2009:3407-3414.
- DOLGOVD,THRUNS,MONTEMERLOM,etal.Pathplanningforautonomousvehiclesin unknown semi-structured environments[J]. The International Journal of Robotics Research, 2010, 29(5):485-501.
- 齐尧, 徐友春, 李华, 等. 一种基于改进混合 A* 的智能车路径规划算法[J]. 军事交通学院学报, 2018(2018 年 08):85-90.
**注**:
- 文件夹`EwingKang-Dubins-Curve-For-MATLAB`提供了一份入门Hybrid A*算法的Matlab程序
- 注释主要分布在`include`和`src`文件夹的文件内
- 若有错误请在[Issues](https://github.com/teddyluo/hybrid-a-star-annotation/issues)里提出,会尽快更正
---
### Hybrid A* Path Planner for the KTH Research Concept Vehicle [](https://travis-ci.org/karlkurzer/path_planner)
* [Characteristics](#characteristics)
* [Videos](#videos)
* [Images](#images)
* [Dependencies](#dependencies)
* [Setup](#setup)
* [Visualization](#visualization)
* [Citation](#citation)
The code in this repository is the result of my master's thesis which I have written at the Integrated Research Lab (ITRL) at KTH Royal Institute of Technology (2016).
The code is documented [here](http://karlkurzer.github.io/path_planner) and the associated thesis can be found [here](http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-198534).
The goal of the thesis and hence this code is to create a real-time path planning algorithm for the nonholonomic Research Concept Vehicle (RCV). The algorithm uses a binary obstacle map as an input, generated using LIDAR mounted on top of the vehicle. The algorithm is being developed using C++ due to real-time requirements in combination with ROS to ensure modularity and portability as well as using RViz as a visualization/simulation environment.
##### Key Characteristics
* Sampling in continuous space with 72 different headings per cell (5° discretization)
* Constrained Heuristic - _nonholonomic without obstacles_
* Unconstrained Heuristic - _holonomic with obstacles_
* Dubin's Shot
* C++ real-time implementation (~10 Hz)
Large parts of the implementation are closely related to the hybrid A* algorithm developed by Dmitri Dolgov and Sebastian Thrun (_Path Planning for Autonomous Vehicles in Unknown Semi-structured Environments_ DOI: 10.1177/0278364909359210)
##### Videos
* [Path Planning with Search Visualization](https://www.youtube.com/watch?v=1WZEQtg8ZZ4)
* [Dubin's Path - Constrained Heuristic](https://www.youtube.com/watch?v=VNo9fU6XEGE)
* [2D A* Search - Unconstrained Heuristic](https://www.youtube.com/watch?v=Ip2iUrVoFXc)
* [Open Loop Path Planning using Sensor Fusion](https://www.youtube.com/watch?v=GwIU00jukO4)
##### Images
#### Dependencies
* [Open Motion Planning Library (OMPL)](http://ompl.kavrakilab.org/)
* [ros_map_server](http://wiki.ros.org/map_server)
#### Setup
Run the following command to clone, build, and launch the package (requires a sources ROS environment):
```
sudo apt install libompl-dev \
&& mkdir -p ~/catkin_ws/src \
&& cd ~/catkin_ws/src \
&& git clone https://github.com/karlkurzer/path_planner.git \
&& cd .. \
&& catkin_make \
&& source devel/setup.bash \
&& rospack profile \
&& roslaunch hybrid_astar manual.launch
```
#### Visualization (Rviz)
1. Add -> By Topic -> /map, /path, /pathVehicle, (/visualizeNode2DPoses)
2. Click 2D Pose Estimate to set a start point on the map (`p`)
3. Click 2D Nav Goal to set a goal point on the map (`g`)
4. Wait for the path being searched! (this process can be visualized [optional])
#### Citation
In case you are using my code for your project, I would appreciate if you include a respective citation.
```
@mastersthesis{kurzer2016,
author = {Karl Kurzer},
title = {Path Planning in Unstructured Environments : A Real-time Hybrid A* Implementation for Fast and Deterministic Path Generation for the KTH Research Concept Vehicle},
school = {KTH Royal Institute of Technology},
year = 2016,
month = 12,
}
```