智能无人机笔记🚁
《智能无人机》线下课程由深蓝学院和FAST Lab组织举办,为期五天时间。无人机特指旋翼无人机。课程内容安排
时间 | 主讲人 | 内容 |
---|---|---|
10/2 AM | Fei Gao | 无人机概论 |
10/2 PM | Neng Pan | 软硬件DIY |
10/3 | Zhepei Wang | 控制与规划 |
10/4 | Zhepei Wang | GCOPTER |
10/5 | Hongkai Ye | 路径规划 |
10/6 | Hongkai Ye | 全局规划 |
本课程自底向上介绍了无人机系统,从硬件到软件,从理论到实践,从控制到规划。重点讲解了无人机的最新规划控制算法。
第1天 概论与DIY
无人机系统子模块
模块 | 功能 |
---|---|
传感 | IMU RGBD相机 雷达 |
估计 | SLAM VIO LIO Vicon UWB |
建图 | 滚动栅格地图 ESDF |
规划 | 前端搜索 后端优化 |
控制 | 线性控制 SE3 |
需注意 SLAM 中的稀疏地图不同于导航规划所用的稠密地图,前者的作用是辅助定位,通常不能直接用于导航规划。控制器默认 INPUT 为 {推力 + 姿态},更底层的功能则由 PX4 飞控完成。我们常把旋翼无人机当作一个在构型空间的质点,需先对地图进行膨胀处理;而作为一个多面体时,需做碰撞检测。
路径搜索算法:Dijkstra、A* 和 RRT 算法。规划优化算法:min snap 算法。
无人机模型具有微分平坦的特点。
规划是开环的控制;控制是闭环的规划。规划考虑长期过程;控制考虑短期过程。
闭环控制解决模型误差和状态估计误差的问题。
根据力效表选择电机、电池、电调。
飞控相当于无人机的小脑;NX/树莓派相当于无人机的大脑。
常用相机有 D435、T265。
Linux基础:文件目录、常用命令、进程管理。
ROS基础:文件系统、Topic、launch 文件参数功能、rqt 工具、RViz、Gazebo。
第2天 控制与规划
规划算法分类
算法类型 | 特点 |
---|---|
Optimization-based | 局部 local 最优 |
Sampling-based | 全局 global 最优 |
Search-based | 全局 global 最优 |
常采用全局方法结合局部方法 Coarse-to-Fine:先用全局方法寻找拓扑结构,提供一个粗糙的初值,再用局部方法。
模型越简单,系统越稳定。
控制流:Waypoints -> 位置控制 -> 姿态控制 -> 角速度控制 -> 电机控制。IMU 能直接测量角速度,故角速度环控制效果好。穿越机采用角速度控制。无人机低速飞行时忽略空气阻力,低速常指速度小于 8m/s。电机模型的滞后参数。
无人机欧拉角定义采用 ZXY 顺序,对应 Yaw-Roll-Pitch,ZXY 顺序易解释微分平坦。实验时采用 ZYX 顺序。Eigen 转欧拉角有 BUG,导致控制异常,建议用解析公式转换。
牛顿方程描述平动;欧拉方程描述转动。
因为二阶系统 xdd = u 含双微分,所以 PID 控制时不需要积分项I,故用 PD 控制器。物理直观含义:比例项P 解释为弹簧;微分项D 解释为阻尼。Noise filter 后再计算微分项。积分项I 会影响系统的稳定性。线性控制在平衡态附近做线性化,线性模型适用条件为倾斜角度不超过 20度。
无人机微分平坦原理用于控制和规划。
前馈的定义。
欧拉角的奇异性(分母为零)发生的三种情况:推力为零;倒转 180度;俯仰角正负 90度。
无人机控制的问题:奇异性;偏航角响应慢;不考虑空气阻力。
平坦空间 vs 构型空间 vs 工作空间。
如何处理约束:规划自顶向下;MPC 自底向上。
大于 9 次的高阶多项式存在数值稳定性的问题。
从手工设计参数到只需设计目标函数。
平坦表示系统没有内动态。
Yaw 单独控制。
有约束优化问题:不要把所有约束喂给求解器,只给关键参数。
min snap QP 迭代法复杂度 O(nnlog(n)),分离 XYZ 求解效率更高;闭式解析法复杂度 O(nnn)。
时间归一化提升数值稳定性(条件数)。
第3天 GCOPTER 或无人机轨迹优化终极方案
之前方法存在的缺点:Heuristic 太保守、约束太多、非时间最优、数值迭代存在数值稳定性差的问题、微分平坦把无人机当作一个质点。
运动规划的地图表征:Ray casting 局部栅格地图;全局地图 OpenVDB/nanoVDB(GPU 加速)。点云 KD树(有增量式版本 iKD树)。
ESDF = 栅格地图 + 离障碍物的距离,考虑 GPU/FPGA 并行计算。
从计算几何/图形学/CFD 领域寻找思路和方法。
安全走廊 Corridor 几何体生成算法 IRIS …… Corridor 对优化更友好。
用 GCOPTER 论文中定理 2 最优性的充要条件快速求解 min snap。
把原始地图转换为适用规划的地图。
路径规划 Graph-based:动态图 PRM/RRT,概率完备;静态图 A/JPS,伪距离最优。
轨迹规划 Optimization-based:涉及动力学,属于局部方法,须与全局方法结合使用。用全局方法克服非凸性,找拓扑结构。
考虑空气阻力的无人机模型。
ETH 最新 SQP 求解器 HPIPM。
从状态空间求解到平坦空间求解,变量和约束大大减少。
GCOPTER 把轨迹表征为 {waypoint + time}。学习 CFD 的思路,把 waypoint + time 作为关键参数。MINCO 具备线性复杂度。不要把等式约束喂给求解器。用微分几何方法处理安全走廊几何体约束。
第4天 路径规划
路径规划常用于 GAME 游戏领域。
路径规划算法分为 Search-based、Sampling-based。
构型空间与时间无关,状态空间与时间有关。
构型空间中把无人机抽象为一个点。
Search-based 方法:Dijkstra、A*、JPS。核心循环步骤:Remove 取出节点,Expansion 扩展领域节点,Push 加新节点。
广度优先 vs 深度优先。
BFS -> Dijkstra(f=g+0) -> A*(f=g+h) -> JPS。
Heuristic is a GUESS of how close you are to the target。
A最优性条件:Admissible h(n) <= h(n)。A* 效率最优条件:Consistent h(x) <= d(x,y)+h(y) Consistent 条件强于 Admissible,保证访问最少的节点数量。
Sub-optimal solution 得到 Weighted A*,牺牲最优性换取速度。
栅格地图的曼哈顿距离不是 Admissible 的。
栅格地图 Tie breaker 解决方法 h = h + cross*0.001 不适合有障碍的场景。
针对栅格地图的 JPS 方法,解决对称路径问题,邻居扩展方式不同。不适合迷宫、多障碍物的场景。
动态规划思想。Direct 方法;Successive Approximation 方法 (Pull法、Push法)。
Dijkstra vs Pull法:前者要求边代价为正,且升序跟更新;后者会多次访问同一个节点。
Sampling-based 和 Search-based 本质上都是 Search。前者采用隐式图;后者采用显示图,又分为增量式和 Batch式(如BIT*)。
PRM -> RRT -> RRT* -> RRT#。
核心循环步骤:Exploration 探索解空间 and Exploitation。
PRM = Learning Phase 利用先验或者学习方法 + Query Phase。缺点是效率低,实际只需要一条路径。改进用 Lazy collision checking。RRT 构建了一个树,边构图边探索。Bidirectional RRT 加速找到第一个解。RRT* 渐近最优。RRT# 找到第一个解后加速收敛,解决了 over-exploration 和 under-exploration 的问题。
第5天 全局规划
Informed-RRT、GuILD 只适用于 L2 norm。Informed-RRT 改变了采样集合。
Kinodynamic RRT适用于全局大空间,引入时间。前向/后向可达解。路径规划提取骨架,然后在附近采样。全局采样 + 局部优化。STD-Trees 时空形变树,Kinodynamic RRT 引入局部优化思想来提升轨迹收敛速度,优化树的质量。形变单元的代价设计。采用 Penaty 把有约束问题转化为无约束问题。考虑到 SDF 不连续采用 LMBM。
总结
课程特色:理论结合实践,学员从零开始搭建无人机,先仿真再实验;小组形式,组员互助;线下形式,学员能与老师面对面交流;国内顶级教育资源。唯一缺点是五天学习时间相对紧凑,部分知识点消化不足。
仿真代码框架
实机代码框架
MINCO 实验
min snap 实验
References
最后感谢各位老师助教同学和深蓝学院工作人员,特别是第三组的小伙伴,一起努力实现了线性控制器、SE3控制器、min snap和MINCO轨迹规划及其实验。