# MotionPlanning
**Repository Path**: ghowoght/motion-planning
## Basic Information
- **Project Name**: MotionPlanning
- **Description**: 文章已同步更新于我的知乎https://www.zhihu.com/people/ghowoght
以及CSDN博客https://blog.csdn.net/qq_42688495
- **Primary Language**: Unknown
- **License**: CC-BY-SA-4.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 27
- **Forks**: 10
- **Created**: 2020-11-11
- **Last Updated**: 2025-10-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 移动机器人的运动规划
Motion Planning for Mobile Robots
最近在学习移动机器人的运动规划,在学习的过程中做了一些记录和总结,便想着开一个专栏来分享一下
## 专栏介绍
一个移动机器人想要实现自主移动,需要有四个基础功能:
机器人要在一个位置环境中移动,首先需要知道自己的位置,这一步由**状态估计**(Estimation)来完成;知道自身所处位置后,就需要对周围环境进行**感知**(Perception),比如构建地图、使用激光雷达采集到的点云数据进行场景的三维重建等等;知道了机器人位置和周围环境情况,就可以进行**运动规划**(Planning),即找到一条能让机器人安全地从A点移动到B点的运动轨迹,同时要满足机器人的运动学约束;最后由**控制**(Control)器产生控制信号(如PWM等),控制机器人按照规划得到的运动轨迹进行移动。
本专栏主要内容将集中在**运动规划(Motion Planning)**环节上。在此之前可能接触过或者听说过**路径规划(Path Planning)** 、**轨迹规划(Trajectory Planning)**这些名词,我们先理清它们和运动规划的联系和区别。
先说说运动规划的基本要求:
- 安全性:移动过程中不能与周围环境发生碰撞
- 光滑性:减少机器人功耗、增加舒适度(如自动驾驶)
- 运动学可行性:不超出机器人速度、加速度等运动学参数范围
由这些基本要求,我们可以将**运动规划**拆解为**路径规划**和**轨迹规划**两部分,它们的关系图如下:
**路径规划**负责在**空间**上找到一条由起点到终点的**无碰撞**曲线,如下图:
在实际情况中只有这一条曲线是不够的,可以看到上图中两种路径规划算法得到的曲线都是相当曲折的,这不利于机器人的移动,所以我们还要考虑机器人要如何按照这条曲线进行移动,而**轨迹规划**就考虑到了机器人位姿和运动学参数随**时间**变化的因素,对机器人的速度和加速度等进行规划,从而满足光滑性和运动学可行性等要求。
所以本专栏将围绕运动规划的两个组成来安排文章内容,主要内容包括:
- 路径生成算法(Path finding algorithm)
这部分将分别对基于图搜索的算法(Dijkstra / A* / JPS等)、基于采样的算法(PRM / RRT / RRT* 等)、运动学约束下的路径规划算法(Kinodynamic RRT* / Hybrid A* 等)进行分析和讲解
- 轨迹生成/优化(Trajectory generation/optimization)
这部分主要对Minimum-jerk轨迹优化算法进行分析
## 文章目录
1. [Pre-requirement:地图的表示方法](./01-地图的表示.md)
2. [基于图搜索的路径规划算法:Dijkstra、A*](02-Dijkstra与Astar算法.md)
3. [基于图搜索的路径规划算法:JPS](03-JPS算法.md)
4. [基于采样的路径规划算法:PRM、RRT、RRT*](04-基于采样的路径规划算法.md)
5. 运动学约束下的路径规划算法:Kinodynamic RRT* 、Hybrid A*
7. [轨迹生成算法:Minimum-jerk](06-轨迹优化:Minimum-jerk.md)
8. 软约束和硬约束下的轨迹优化
## 参考
[深蓝学院: Motion Planning for Mobile Robots](https://www.shenlanxueyuan.com/course/233)