赞
踩
基于Minimum snap框架有利于光滑轨迹的生成但是不利于作避障。
一般是添施加推力将轨迹往里推(软约束),或者轨迹上添加bounding box(硬约束)。
硬约束(下图上方)要求等式约束和不等式约束都必须在全局的条件下满足,生成的轨迹才能是我们可以接受的解。
软约束(下图下方)将上方的等式约束和不等式约束都加到目标函数中,它是没法保证约束一定是成立的,但它是使约束是倾向性成立。常见的惩罚函数L2 loss、L1 loss、Huber Loss和Barrier function。
实现步骤:构建八叉树地图 -> 在八叉树地图中搜索可行的路径并构建飞行走廊 -> 飞行走廊进行膨胀 -> 生成飞行走廊里的轨迹。
解法:迭代检查最大值并添加额外约束,当轨迹中存在极值点查过边界限制yb时,在每个极值点出添加额外约束。
新点约束比原来约束yb的限制要更加紧迫,在有限次的迭代后,会把多项式压在约束边界内。
解法:将基于monomial polynomial轨迹变为基于Bernstein polynomial轨迹。
硬约束方法存在的问题:将所有的安全区域都认为是等价的,很可能会导致轨迹的某些地方距离障碍物太近,如果控制部分不能完全按照轨迹走,则依然会导致碰撞;另一个潜在问题在于如果大量的使用基于视觉的方法,则会产生较多的噪点,那么就会给规划问题带来麻烦(对噪声敏感)。
软约束的方法则是施加一个“推力”,将轨迹往远离障碍物的方向推。核心问题在于设计好的目标函数,因此当目标函数设定不合理时会导致路径可能会碰到障碍物,这是软约束的不足。
目标函数 = 光滑代价函数 + 碰撞代价函数 + 动力学代价函数。
光滑代价函数: 使用minimum snap来实现。
碰撞代价函数: 对太靠近障碍物进行惩罚。
动力学代价函数:对超出动力学约束进行惩罚。
使用指数函数作为代价函数是为了惩罚太靠近障碍物的轨迹。
整个规划流程:
扩展策略
使用minimum snap初始化轨迹
使用沿着路径的直线轨迹来初始化轨迹
优化策略
https://github.com/HKUST-Aerial-Robotics/grad_traj_optimization
【1】深蓝学院运动规划课程。
【2】【泡泡机器人公开课】第九十三课:Online quadrotor trajectory generation-高飞
https://www.bilibili.com/video/BV1W4411E7jq
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。