• Stars
    star
    175
  • Rank 218,059 (Top 5 %)
  • Language
    C++
  • Created almost 3 years ago
  • Updated almost 2 years ago

Reviews

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

Repository Details

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

Minimum Snap

算法细节,请参考我的博客《【附源码和详细的公式推导】Minimum Snap轨迹生成,闭式求解Minimum Snap问题,机器人轨迹优化,多项式轨迹路径生成与优化》

1. 介绍

该仓库主要是对Minimum Snap算法进行实现。

具有以下功能:

  • 可以通过Rviz选择空间点,然后自动生成光滑的多项式曲线;
  • 具有前端轨迹搜索,到后端光滑轨迹生成功能。

功能包介绍:

  • map_generator:主要用来生成随机的地图
  • path_searcher:用于路径搜索,目前只实现了A star
  • trajectory_generator:用于配合path_searcher生成二维Minimum Snap的轨迹
  • waypoint_trajectory_generator:通过Rviz插件生成三维的Minimum Snap轨迹

2. 编译

我的开发环境为:Ubuntu 18.04Ros melodic

cd Minimum-Snap/
catkin_make -j8

3. 运行

通过Rviz生成轨迹

source devel/setup.bash
roslaunch waypoint_trajectory_generator test.launch

运行之后,会自动打开Rviz,并自动加载插件。

使用方法:点击3D Nav Goal按钮,然后鼠标左键点击Rviz中的位置,左键不松,继续点击右键控制箭头的高度,同样的方法选择至少三个点,然后以一个高度为负的箭头结束,将自动生成一条光滑的轨迹。

minimum_snap

A star + Minimum Snap

为了更加接近实际工程使用,帮助大家去更深入了解,我实现了一个比较完整的仿真实验环境,它具有随机二维地图生成功能,前端A star路径搜索功能,后端Minimum Snap轨迹生成。

source devel/setup.bash
roslaunch trajectory_generator run_minimum_snap_2d.launch

使用方法:点击Rviz中的2D Pose Estimate,然后鼠标左键点击地图的任意位置,将会生成光滑的轨迹。

A_star+minimum_snap

有同学反应在使用rviz显示时出现rviz卡死的现象,在我的开发环境中也有发现此问题,主要是NVIDIA驱动的原因,建议关闭独立显卡驱动,使用集成显卡显示rviz,即可正常运行。

致谢:在学习路径规划的过程中,浙江大学的高飞老师给了我很多的帮助,其中也参考了他的不少代码和课件,在此向他提出感谢!

More Repositories

1

Hybrid_A_Star

Hybrid A Star algorithm C++ implementation
C++
627
star
2

eskf-gps-imu-fusion

误差状态卡尔曼ESKF滤波器融合GPS和IMU,实现更高精度的定位
C++
626
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