基於衝量的剛體系統動力學模擬 (Mirtich。伯克利大學博士論文) 草稿
歡迎加入Bullet物理討論QQ群:533030320 ,群內由計算機圖形學、流體模擬動力學學術群中坐鎮的大神管理組成。
前言
最近2個月筆者沒有更部落格,一直在逆向研究Bullet引擎,發現其所用的技術還真廣,此文作為物理引擎的技術基礎,筆者在這裡翻譯了一遍,給英語不是很好的同學或者懶得看英語論文的同學提供個方便。 此文是Brain Vincent Mirtich於1996年申請加利福尼亞伯克利大學博士學位時的申博論文,但是其研究成果已經廣泛用於物理引擎之中,牛逼哄哄,其導師是發明最近點實時碰撞演算法的John F. Canny。現在Mirtich在三菱重工裡擔任機器人研究所的Engineer。有興趣的同學可自追溯其歷史,筆者不再累述。 下面進入正題。
簡述
動力學模擬是當今計算機領域的熱門領域(1996年…就熱門了),其廣泛用於工程學,動畫,和虛擬現實領域當中。此論文介紹了一個基於衝量的動力學模擬標準。這個標準的設計可以滿足物理精確性和計算高效性兩個方面的需求。同時基於衝量的模擬可適用於中等複雜的實時系統。為了達到這個效能,需要在系統上做一些特定限制。最大的限制就是系統內能也只能包含剛體(軟體是不能的)。
剛體動力學模擬當中最難的部分是建立剛體之間的互動模型。最常用的方法是懲罰方法,然後是分析方法。這兩種方法都是基於約束條件的,這意味著在剛體互動點的約束是需要被實時連續地計算並根據結果決定剛體的加速度(比如小球掉出螢幕,限制條件是Y軸的底,小球由於重力下落,但是不能掉出螢幕,所以必須實時連續的計算它的位置和半徑,確定其是否掉出螢幕,如果與螢幕相碰撞,則計算它的加速度,然後確定其彈起的高度)。而基於衝量的方法不同於前兩種方法,是不需要實時維護限制條件的,(在Y軸底部建立一個長方形盒子作為地板,小球就不會掉下去了,而且不需要實時的去計算地板與小球之間的距離等約束條件,只要在檢測碰撞時碰到了,才進行計算)這種方法簡單,健壯,可並行處理,並且能模擬基於限制條件的方法所不能模擬的系統(比如剛體不是小球,而是一個5邊形,底部則是一堆三角形組成的地板等,這些限制條件就無法用簡單的數學來表達了)。並且基於衝量的模擬精度已經被測試滿足大部分的應用要求。
基於衝量模擬中的碰撞檢測是關鍵技術,有效的演算法必須應對大量的剛體碰撞,並且需要保證不丟失任何一個碰撞。進一步,模擬器的物理精確度也依賴於碰撞響應演算法。這篇論文將會描述這些關鍵演算法和它們的底層理論。
內容
- 1 簡介
- 1.1 基於約束的接觸模型
1.1.1 無穿透接觸力 - 1.2 基於衝量的方法
- 1.3 衝量和約束方法的比較
- 1.4 論文概覽
- 1.1 基於約束的接觸模型
- 2 碰撞檢測
- 2.1 簡介和相關工作
2.1.1 衝量方法中的碰撞檢測 - 2.2 Lin-Canny演算法
2.2.1 碰撞檢測和相干性
2.2.2 Lin-Canny演算法的擴充套件 - 2.3 優先碰撞檢查
2.3.1 碰撞堆
2.3.2 估計撞擊時間
2.3.3 物體在彈道上的角速度最大限制 - 2.4 包圍盒技術
2.4.1 尋找靜態盒子的相交
2.4.2 相干性和瓦片分割方案
2.4.3 維護碰撞堆
2.4.4 空間雜湊和座標排序的比較
- 2.1 簡介和相關工作
- 3 碰撞響應
- 3.1 假設碰撞響應模型
- 3.2 計算碰撞衝量
3.2.1 碰撞中的等式方程
3.2.2 滑動模式
3.2.3 粘滯模式 - 3.3 碰撞積分
3.3.1 碰撞力
3.3.2 使用不同引數積分碰撞
3.3.3 在uz 和Wz 引數化下的滑動模式
3.3.4 在碰撞積分時處理粘滯 - 3.4 粘滯穩定性和持續滑動的射線
3.4.1u′ 橢圓
3.4.2 持續滑動的方向 - 3.5 靜態接觸和微碰撞
4 受約束的物體動力學
- 4.1 約束前向動力學
- 4.2 速度和加速度的傳遞
- 4.3 空間代數
4.3.1 加速度傳遞的空間公式 - 4.4 Featherstone演算法 (Featherstone, R. (1987). Robot Dynamics Algorithms. Boston: Kluwer. ISBN 0-89838-230-0. 計算力對關節的影響)
4.4.1 基座
4.4.2 歸納
4.4.3 前向動力學演算法 - 4.5 擴充套件:樹型鏈
4.5.1 速度和加速度在樹型結構中的傳遞
4.5.2 樹型鏈中關節轉動慣量和z.a.力
4.5.3 樹型鏈的前向動力學演算法 - 4.6 擴充套件:浮動鏈
5 混合模擬
- 5.1 物理系統的(spectrum)分類
- 5.2 碰撞檢測
5.2.1 約束體在移動時的工作容積
5.2.2 約束體的TOI係數 - 5.3 碰撞響應
5.3.1 機器人角度:碰撞響應
5.3.2 關節物體的碰撞動力學
5.3.3 計算Ki
5.3.4 在多剛體系統中傳遞衝量 - 5.4 輔助控制系統
5.4.1 控制器的型別
5.4.2 控制器的時間表
5.4.3 衝量模型的輔助控制架構
- 6 計算多面體的質量屬性
- 6.1 剛體質量引數
- 6.2 演算法的由來及推導
6.2.1 面積分的約簡
6.2.2 投影積分的約簡
6.2.3 線積分的約簡
6.2.4 從頂點座標評估積分 - 6.3 虛擬碼和線上C程式碼
- 6.4 測試結果
- 7 例子和結果
- 7.1 純衝量模型模擬
- 7.2 被動型系統(無外力作用)混合模擬
- 7.3 主動控制型系統(有外力作用)混合模擬
- 7.4 執行時間
- 7.5 估計姿態的統計
7.5.1 背景
7.5.2 準-靜態演算法
7.5.3 動力學模擬
7.5.4 實驗結果和討論
7.5.5 其他實驗
- 8 未來工作
- 8.1 改變研究方向
- 8.2 碰撞檢測問題
- 8.3 解釋控制和物體封裝
- 8.4 物理模擬的動畫和虛擬現實
- 準備工作:數學
- A.1 向量,矩陣, 和frame
- A.2 用矩陣表示叉乘
- A.3 剛體動力學
- A.4 四元數與旋轉積分
- 參考書目