• Stars
    star
    627
  • Rank 71,654 (Top 2 %)
  • Language
    C++
  • License
    Other
  • Created over 2 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Hybrid A Star algorithm C++ implementation

Hybrid A Star

1. Introduce

Hybrid A Star achieved very good results in the DARPA Urban Challenge. And after years of development, the algorithm has been verified to perform very well in parking and some autonomous driving environments without driving rules.

Since the author did not open source the algorithm, it took me weeks to reproduce the algorithm. The final result is close to the speed and effect in the paper.

Video 0: bilibili | YouTube

Video 1: bilibili | YouTube

Case 1

img0

Case 2

img3

Case 3

img1

Case 3

img2

2. Prerequisites

(1). C++11 or C++0x Compiler

(2). ROS Melodic: I'm developing on the melodic version. Using other versions of ROS, it should also work normally

sudo apt-get install ros-melodic-costmap-*
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-tf

(3). Eigen 3

sudo apt-get install libeigen3-dev

(4). glog

sudo apt-get install libgoogle-glog-dev

3. Build Hybrid A Star

# new folder
mkdir hybrid_a_star_ws/src -p
cd hybrid_a_star_ws/src

# Clone the repository
git clone https://github.com/zm0612/Hybrid_A_Star.git

# Build
cd hybrid_a_star_ws
catkin_make

4. Run Hybrid A Star

source devel/setup.bash
roslaunch hybrid_a_star run_hybrid_a_star.launch

The starting point is selected by the 2D Pose Estimate in rviz, and the end point is selected by the 2D Nav Goal.

I provide multiple maps, you just need to modify the variable image in hybrid_a_star/maps/map.yaml file.

If your start and end points are too close to obstacles, the collision detection mechanism may be triggered and no feasible paths will be searched and displayed

5. References

(1). Practical Search Techniques in Path Planning for Autonomous Driving

(2). The Bresenham Line-Drawing Algorithm

(3). A simple car

More Repositories

1

eskf-gps-imu-fusion

误差状态卡尔曼ESKF滤波器融合GPS和IMU,实现更高精度的定位
C++
626
star
2

Minimum-Snap

使用C++对Minimum Snap算法进行了实现,实现的结果超过了论文中给出的计算速度。并且实现了三维和二维的Minimum Snap轨迹生成算法
C++
175
star
3

openvslam-comments

openvslam的注释版代码
C++
98
star
4

optimized_ICP

高斯牛顿迭代的方式求解ICP问题
C++
59
star
5

align_trajectory

C++
42
star
6

algorithm_learning

C++
30
star
7

motion_planning

C++
25
star
8

LoveChina

This is a example used to learn CMake!
C++
14
star
9

3d-pointclouds

Python
6
star
10

g2o-example

g2o的简单例程。可以参考对应的博客:https://blog.csdn.net/u011341856/article/details/112134763
CMake
6
star
11

ENet-version-CPP

This is the implementation of the C++ version of enet!You can use it to do semantic segmentation for image!
C++
5
star
12

vio

最近我在学习vio相关的内容,这是一个记录我学习内容的仓库
C++
5
star
13

ORB-SLAM2-comment

I added some ORB-SLAM2 code comments
C++
4
star
14

VIO-CODE

This is my material for learning VIO!
C++
4
star
15

probabilistic_robotics

记录一下我学习《概率机器人》的过程,我将不但总结书中的重要结论,还会通过代码去测试和探索这些算法。
C++
4
star
16

self_driving_cars

Jupyter Notebook
4
star
17

3rd_party

2
star
18

openvslam-mind-map

openvslam思维导图总结:This is a mind map to show openvslam's algorithm
2
star
19

simple-VO

This is simple visual odometry.
C++
1
star
20

funny_lidar_slam

A real-time multifunctional Lidar SLAM package.
C++
1
star
21

hands_on_deep_learning

李沐大佬在bilibili上开设了深度学习的课,内容讲的非常好,于是乎我忍住,又把这些内容学了一遍,这里将用来记录我的学习代码,哈哈!
Python
1
star