text: ORCA算法总结 
  1 简介
  ORCA是经典的分布式底层避障算法，其任务是（对于A）：
  输入：外部属性：A与B的形状（ r_{A} 、 r_{B} ）、位置（ p_{A} 、 p_{B} ）、速度（ V_{A} 、 V _{B} ）；内部属性：A的偏好量（ V_{A}^{pref} ）和限制量（ V_{A}^{max} ）。
  特点：双方只要都采用ORCA，那么双方无需通信，分布式地求出来的 V_{A}^{'} 与 V_{B}^{'} 也不会发生碰撞。
  跟RVO一样，ORCA也是基于VO的，但更加实用，因为：
  效果上：考虑了速度的大小，使得筛选粒度更细。不像VO和RVO只考虑速度方向。
  效率上：求解过程基本只用到了线性规划，比较高效。不像VO和RVO有大量的非线性求解。
  注：机器人的偏好速度 V_{A}^{pref} ，即是指机器人尽力要去达到的速度，比如指向目标点的速度。机器人在一定的选择范围内，如果能选择偏好速度作为其更新速度，则选择偏好速度；如果不能选择偏好速度，则在此范围中选择最接近偏好速度的速度作为其更新速度。
  2 ORCA理解
  2.1 考虑速度大小：引入时间窗口 \tau
  引入时间 \tau ，即机器人在运动过程中，在此时刻算起，至少在时间间隔 \tau 之内不与其他机器人或者障碍物相撞。
  VO_{AB}^{\tau} ：在二维速度空间坐标系中的一片区域，指在某一时刻A、B机器人位置已知的情况下，在下一刻A对于B的相对速度若属于以上定义的区域，则A、B机器人会在时间窗口τ内发生碰撞。
  CA_{AB}^{\tau}(V_{B}) ：引出避免碰撞（collision-avoiding）的概念，本机器人不与其他机器人发生碰撞的速度集合,并且是在绝对速度的情况下。
  数学定义： CA_{AB}^{\tau}(V_{B}) = { v|v ∉ VO_{AB}^{\tau} ⊕ V_{B} } 运算符⊕定义为X⊕Y={x+y|x∈X，y∈Y}
  2.2 ORCA含义
  ORCA全称为Optimal Reciprocal Collision Avoidance，基于collision-avoiding的概念； ORCA_{A|B}^{\tau} 和 ORCA_{B|A}^{\tau} 被定义为这两个速度集合相互避免碰撞，并且集合包含最多的速度接近于最优速度 V_{opt} ，含义就是在上述的 CA_{A|B}^{\tau}(V_{B}) 中选择最优的”一个“。
  CA_{A|B}^{\tau}(V_{B}) 的范围较大，如何选取？在 V_{opt} 附近的合法值越多越好
  注：机器人的最优速度 V_{opt} ，即是指在处理碰撞避免问题时，机器人更新速度的倾向。一般来说V_{opt}有三种选择，分别是让V_{opt}=V_{pref}、V_{opt}=0和V_{opt}=v（机器人此刻实际速度）。
  当选择V_{opt}=V_{pref}时，机器人在处理碰撞避免问题时，都会更倾向于V_{pref}，也就是要到达自己的最终目标。当然这种办法在机器人密度很小的时候，可以工作的很好。但是在机器人密度很大的时候，每个机器人都在处理避免碰撞问题上让自己选择更快达到目标，这有很大概率会发生不安全现象，比如碰撞。当选择V_{opt}=0时，每个机器人在处理碰撞避免问题上会使自己的更新速度向0趋近，即减速。然后，在机器人密度很大的情况下，有可能会导致每个机器人都一直减速，最终造成死锁僵局。选择V_{opt}=v（机器人此刻实际速度）是以上两种方法的这种，机器人的速度改变会比较平缓。当然，通常情况下，我们的选择是V_{opt}=v（机器人此刻实际速度）。
  2.3 ORCA求解
  具体推导过程比较复杂，也是算法的核心部分，参考原论文。
  2.4 ORCA用法
  对其他所有agents的ORCA求交（线性规划），再与自己可选速度求交集，得到候选速度集 ORCA_{A}^{\tau} 。
  在候选速度集中求解跟自己偏好速度V_{pref}最近的一个速度 V_{A}^{new}
  图中各种颜色的直线就是上述的平面的分割线，A 对于B的半平面有效的一侧下文称为 ORCA_{A|B}^{\tau} 。白色区域是A避开多个其它颜色圆的多个半平面的交集区域，也就是自己的可选速度范围，下文称为 ORCA_{A}^{\tau} 。
  左边黑色点位置是目的地点，A的期望速度 V_{A}^{pref} (图中灰色线段)总是指向它，毕竟那是自己要去的地方嘛。而A 的当前速度 V_{A} (图中黑色线段)的下一步选择新速度 V_{A}^{new} (图中的黑色线段的下一步状态)时也想指向它，却无奈被限制在白色区域里，但它不死心，所以它每在下一步选择新速度 V_{A}^{new}都会尽可能的向灰色线段靠近，直到到达目的地。
  参考文献
  《Reciprocal n-body Collision Avoidance》
  论文笔记《Reciprocal n-body Collision Avoidance》
  柳朦朦：ORCA-有关机器人群碰撞避免算法解读
  导航动态避让算法RVO的优化ORCA(Optimal Reciprocal Collision Avoidance)
  ORCA(RVO2)算法优化整理版_漫漫之间n的博客-CSDN博客_orca算法
  机器人群控避障算法ORCA_kay880的博客-CSDN博客_机器人避障算法