---
# System prepended metadata

title: VO 文獻記事
tags: [Velocity Obstical]

---

# VO 文獻記事

## 順序
``` graphviz
digraph flow{
    node[shape=Mrecord]
    VO [label="VO | 1998 "]
    RVO [label="RVO | 2008"]
    ClearPath [label="ClearPath\n (FVO) | 2009"]
    HRVO [label="HRVO | 2011"]
    ORCA [label="ORCA | 2011"]
    {rank=same; HRVO,ORCA}
    VO -> RVO;
    RVO -> ClearPath;
    RVO -> ORCA [nodesep=10]
    ClearPath -> HRVO
}
```
## 速度障礙區塊


| VO                                           | RVO                                           |ClearPath(FVO)|HRVO|ORCA|
| -------------------------------------------------- | -------------------------------------------------- | -------- | --- | --- |
| ![image](https://hackmd.io/_uploads/HygoLTQFp.png) | ![image](https://hackmd.io/_uploads/Sk0RL6QY6.png) |![image](https://hackmd.io/_uploads/rke_vaXFp.png)|![image](https://hackmd.io/_uploads/ryeIdaXt6.png)|![image](https://hackmd.io/_uploads/BJOuKaQtp.png)|

* 1998年的VO文獻中其實有提到，可以設立一個time horizon ($\tau$)，僅考慮這個時間範圍內，自己與其他agents會不會發生碰撞。如此便可以在速度space中，修剪掉一些碰撞追靠近自己的部分，讓VO的領域縮小，增加更多的可行速度選擇。但是VO和RVO的論文中，實驗裡似乎都沒有加進這項考慮，會直接避開整個錐形的速度障礙。而ClearPath提出的FVO以及ORCA都有設立($\tau$)，擴大可行解範圍。

geogebra展示速度障礙區塊: https://www.geogebra.org/calculator/xbq5svsp

## 論文重點

### VO
* 只適合回避定速動態障礙
* 依照kinematic constrain & dynamic constrain 提出 feasible velocity區間概念
* 三種選擇速度的策略: TG(to goal)、MV(maximum velocity)、ST(structure)
* 設立 time horizon ($\tau$)概念
* <font color="#f00">僅有simulations，假設agent可以完美偵測動態障礙的速度與相對座標(上帝視角)</font>
### RVO
* 依據責任($\alpha$)移動VO形成RVO
* 選擇RVO外距離$\mathbf{v_A^{pref}}$最近的向量
* 僅考慮距離自己一定範圍內(neighbor region)的節點
* 在擁擠情況下允許agent選擇RVO內的速度向量，但是會依TTC、與$\mathbf{v_A^{pref}}$的距離，建立penalty。 
* <font color="#f00">僅有simulations，假設agents之間沒有溝通，但可以完美偵測彼此的速度與相對座標(上帝視角)</font>
### ClearPath
* 以RVO為基礎，僅考慮 time horizon ($\tau$)時間範圍內的碰撞，增加可行解(FVO)
* 若沒有可行解，移除最遠的FVO，直到出現feasible velocity區間
* 選擇FVO外距離$\mathbf{v_A^{curr}}$最近的向量
![image](https://hackmd.io/_uploads/HJ76rzIFT.png)
* <font color="#f00">僅有simulations，各agents早就知道彼此的位置及速度並建立KD-tree(上帝視角)</font>
### HRVO
* 改進RVO可能發生的"reciprocal dancing"，結合RVO與VO的邊界形成HRVO
* 使用ClearPath演算法搜尋下一刻的速度向量
* 5篇paper中唯一一篇將不確定性納入速度障礙區塊進行考慮(較為偏向實用)
* 有稍微加入RRT以避開擋住目標的大塊障礙物
* <font color="#f00">有experiments與simulations，再experiments中，由於機器人尚無法靠感測器知道自身的確切座標與朝向，所以有一個中控系統用相機感應每個robots的位置與朝向，回傳給robots，再用Kalman filter推斷速度，論文稱是"有限度的溝通"(類上帝視角)</font>
### ORCA
* 以VO的概念做延伸，考慮time horizon ($\tau$)時間範圍內的碰撞
* 將原本錐形的速度障礙演變成二為空間中的半平面，將複雜的最佳化問題簡化為線性規劃，降低運算時間
* 透過改變理想的$\mathbf{v_A^{opt}}$，找出最佳速度向量。
* <font color="#f00">僅有simulation，假設各agents之間沒有溝通，但可以完美偵測彼此的速度與相對座標(上帝視角)</font>

## 心得(可能會再更新)
個人覺得，無果要將VO避障用在現實中的robot上，需要如HRVO那篇文獻一樣，將資訊的不準確性考慮進來，除此之外，如果不允許robots有溝通的話，也不能設置中控系統，不能有上帝視角，這樣子感測誤差可能會無法被校正。
我覺得，VO的最初的避障原理，是參考動態障礙物的當下位置座標，建立出一個現實的碰撞錐範圍，未來的下一刻，只要自己與障礙物的相對速度落在這個碰撞錐範圍內，便有可能發生碰撞。
為了更直觀判斷$\mathbf{v_A}$是否會導致碰撞，因此進入速度space中，依障礙物的未來速度，移動那個碰撞錐，形成速度障礙VO。如此便可以直接得出，未來的下一刻，$\mathbf{v_A}$是不是安全的。
由於以上，VO的避障法，需要的參數是當下自己與障礙物的相對或絕對座標，以及障礙物未來的下一刻之速度向量。藉由這些參數推斷下一刻自己的$\mathbf{v_A}$是否安全。在假設自己與障礙物的當下位置為已知的情況下，用VO法來閃避一個定速的障礙物很容易達成，畢竟障礙物的未來速度與當下速度一模一樣。然而，當人們用VO法來閃避一個會改變移動速度的障礙物時，會讓情況變得有點困難。困難點在於:「我們怎麼知道障礙物的未來速度?」。如果是一個規則運動的障礙物，我們可以套用kimematic公式，甚至是dynamic公式來預測出障礙物的未來速度，再用VO法避障。然而，如今我們面對的障礙物，是一個和自己一樣，會依照環境變化自由改變其速度的agent，預測障礙物的未來速度似乎不可行，那該如何用VO法來閃避障礙物?我個人認為，RVO和HRVO以及ORCA等避障方法其實並沒有真正去預測對方agent的未來速度，然後建立出速度障礙來避開。以上那些避障法所做的，其實是再agents之間建立「默契」，例如:只要angent A 採用RVO策略選擇速度，agent B 也如是，基本上他們便不會撞到。

## Reference
Fiorini, Paolo, and Zvi Shiller. "Motion planning in dynamic environments using velocity obstacles." The international journal of robotics research 17.7 (1998): 760-772.
Van den Berg, Jur, Ming Lin, and Dinesh Manocha. "Reciprocal velocity obstacles for real-time multi-agent navigation." 2008 IEEE international conference on robotics and automation. Ieee, 2008.
Guy, S. J., Chhugani, J., Kim, C., Satish, N., Lin, M., Manocha, D., & Dubey, P. (2009, August). Clearpath: highly parallel collision avoidance for multi-agent simulation. In Proceedings of the 2009 ACM SIGGRAPH/Eurographics Symposium on Computer Animation (pp. 177-187).
Snape, J., Van Den Berg, J., Guy, S. J., & Manocha, D. (2011). The hybrid reciprocal velocity obstacle. IEEE Transactions on Robotics, 27(4), 696-706.
Van Den Berg, J., Guy, S. J., Lin, M., & Manocha, D. (2011, August). Reciprocal n-body collision avoidance. In Robotics Research: The 14th International Symposium ISRR (pp. 3-19). Berlin, Heidelberg: Springer Berlin Heidelberg.