基于冲量的刚体系统动力学模拟 (Mirtich。伯克利大学博士论文) 草稿

欢迎加入Bullet物理讨论QQ群:533030320 ,群内由计算机图形学、流体模拟动力学学术群中坐镇的大神管理组成。

前言

最近2个月笔者没有更博客,一直在逆向研究Bullet引擎,发现其所用的技术还真广,此文作为物理引擎的技术基础,笔者在这里翻译了一遍,给英语不是很好的同学或者懒得看英语论文的同学提供个方便。 此文是Brain Vincent Mirtich于1996年申请加利福尼亚伯克利大学博士学位时的申博论文,但是其研究成果已经广泛用于物理引擎之中,牛逼哄哄,其导师是发明最近点实时碰撞算法的John F. Canny。现在Mirtich在三菱重工里担任机器人研究所的Engineer。有兴趣的同学可自追溯其历史,笔者不再累述。 下面进入正题。
基于冲量的刚体系统动力学模拟 (Mirtich。伯克利大学博士论文) 草稿_第1张图片

简述

动力学模拟是当今计算机领域的热门领域(1996年…就热门了),其广泛用于工程学,动画,和虚拟现实领域当中。此论文介绍了一个基于冲量的动力学模拟标准。这个标准的设计可以满足物理精确性和计算高效性两个方面的需求。同时基于冲量的模拟可适用于中等复杂的实时系统。为了达到这个性能,需要在系统上做一些特定限制。最大的限制就是系统内能也只能包含刚体(软体是不能的)。

刚体动力学模拟当中最难的部分是建立刚体之间的交互模型。最常用的方法是惩罚方法,然后是分析方法。这两种方法都是基于约束条件的,这意味着在刚体交互点的约束是需要被实时连续地计算并根据结果决定刚体的加速度(比如小球掉出屏幕,限制条件是Y轴的底,小球由于重力下落,但是不能掉出屏幕,所以必须实时连续的计算它的位置和半径,确定其是否掉出屏幕,如果与屏幕相碰撞,则计算它的加速度,然后确定其弹起的高度)。而基于冲量的方法不同于前两种方法,是不需要实时维护限制条件的,(在Y轴底部创建一个长方形盒子作为地板,小球就不会掉下去了,而且不需要实时的去计算地板与小球之间的距离等约束条件,只要在检测碰撞时碰到了,才进行计算)这种方法简单,健壮,可并行处理,并且能模拟基于限制条件的方法所不能模拟的系统(比如刚体不是小球,而是一个5边形,底部则是一堆三角形组成的地板等,这些限制条件就无法用简单的数学来表达了)。并且基于冲量的模拟精度已经被测试满足大部分的应用要求。

基于冲量模拟中的碰撞检测是关键技术,有效的算法必须应对大量的刚体碰撞,并且需要保证不丢失任何一个碰撞。进一步,模拟器的物理精确度也依赖于碰撞响应算法。这篇论文将会描述这些关键算法和它们的底层理论。

内容

  • 1 简介
    • 1.1 基于约束的接触模型
      1.1.1 无穿透接触力
    • 1.2 基于冲量的方法
    • 1.3 冲量和约束方法的比较
    • 1.4 论文概览
  • 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 空间哈希和坐标排序的比较
  • 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.1 u 椭圆
      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 四元数与旋转积分
  • 参考书目

你可能感兴趣的:(技术,系统,引擎)