Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2D刚体动力学开源模拟器Dyna-Kinematics

2D刚体动力学开源模拟器Dyna-Kinematics

作者头像
ZC_Robot机器人技术
修改于 2020-10-23 15:39:47
修改于 2020-10-23 15:39:47
2.4K0
举报

2D刚体动力学模拟器Dyna-Kinematics,具有很多可以生成炫酷动画的开源库。话不多说,先给出1个仿真案例

dyna
dyna

该动力学模拟器主要包含以下三部分,即(1)数值积分器(2)2D刚体动力学(3)2D平面碰撞检测。

仿真控制器允许用户:从一组硬编码的场景中选择一个场景;播放,暂停,重置和将模拟记录为GIF;更改某些模拟和显示设置。

具体的应用场景包括:

1 Body-wall collisions

开发过程的第一步是实现对物体与墙壁之间碰撞的支持。 这种碰撞比物体之间的碰撞简单得多,因为墙壁不会受到碰撞的任何影响。 在代码中,墙被视为具有无限质量的物体,这大大简化了碰撞响应方程。在下面的模拟中,注意物体的速度和角速度如何根据其撞击墙壁的方式而变化。 这就是刚体动力学的特征。

Body-wall collisions
Body-wall collisions

2 Body-body collisions

开发过程的第二步是实现对物体之间碰撞的支持。 这种类型的碰撞可能以两种不同的方式发生:两个顶点之间或顶点与边之间。解决碰撞的重要部分是了解碰撞法线是什么。 在顶点-边缘碰撞中,碰撞法线只是边缘的法线。 但是顶点-顶点碰撞呢? 顶点只是点,因此它们没有法线。 有许多方法可以为此类碰撞计算适当的法线。

物体碰撞
物体碰撞

3 Momentum and torque

橙色物体的质量比黄色物体的质量大得多,因此它的动量也更大。 因此,橙色的物体几乎不受碰撞的影响,而黄色的物体反转了方向。粉红色主体的重心位于两端之间。 两个物体之间的接触点位于其上端,或者说,尽可能远离其质心,这意味着通过碰撞施加给它的扭矩最大。 该扭矩转化为最大可能的角速度,从而使其绕其质心快速旋转。

Momentum and torque
Momentum and torque

4 gravity

当我们检测到碰撞时,参与该碰撞的两个刚体几乎是接触的,因为它们在碰撞阈值之内,这是一个很小的距离。在此模拟器中,刚体是完全刚硬的,这意味着它们是不可穿透的。那么,如何防止它们渗透?我们无法施加力量并随着时间的推移对其进行整合,因为我们实际上没有足够的时间来这样做。这两个机构几乎是接触的,因此,如果我们采用这种方法,它们肯定会渗透。这就是为什么我们需要不连续地改变它们的速度,这只能通过在无限的时间段内施加强大的力(即脉冲力)来实现。

因此,既然您知道我一直以来都在用脉冲力来欺骗您,那么您可能想知道该模拟器是否可以随时间实际整合力。它使用经典的四阶Runge-Kutta方法来整合所需的任何力。下面的模拟显示了重力的作用:

重力场仿真
重力场仿真

在碰撞发生时不会损失任何能量,因此身体不会停留在山底。 我使用恢复系数(COR)进行此操作,该模型模拟了碰撞过程中消散了多少传入能量。 通过将COR设置为1,我使所有碰撞都具有完美的弹性,这意味着发生碰撞时不会损失任何能量。 如果我将COR设置为0,则在第一次碰撞中所有传入的能量都将丢失,这完全是塑性碰撞。 0到1之间的任何值都会改变所损失的能量。

这就是弹性碰撞和塑性碰撞。

重力场
重力场

5 Simultaneous collisions

开发过程中的最后也是最具挑战性的步骤是实现在单个时间步中解决多个冲突的支持。要了解“在单个时间步中解决多个冲突”的含义,让我们首先逐步看一下到目前为止我向您展示的模拟是如何执行的:

通过提前一个时间步来开始仿真。 例如,如果时间步长为20毫秒,并且物体的速度为10米/秒且没有加速度,则该物体向前移动0.2米。检查场景中是否有任何物体正在穿透另一个物体或墙壁。 如果是,则我们返回与上一步相同的时间,将时间步长减半,然后再次进行仿真。 使用前面的示例,这意味着我们的时间步长将变为10毫秒,并且我们的身体只会向前移动0.1米。重复之前的步骤,直到没有渗透发生为止。 您可以将此过程视为二进制搜索,以查找可以推进没有场景发生的场景的时间量。

A stack of bodies
A stack of bodies

每个实体均表示为定向边界框(OBB)。不支持OBB与墙形成的拐角之间的碰撞。 因此,墙壁必须形成凸形,以确保永远不会发生无支撑的碰撞。OBB之间的冲突分为两类:顶点-顶点冲突和顶点-边缘冲突。 对于顶点-顶点碰撞,将碰撞体的质心连接起来的线用作碰撞法线。通过解决简单的几何问题可以检测到碰撞。 没有像分离轴定理那样复杂的东西被使用。 仅将顶点投影到法线或边缘上即可查看它们是否穿透,并计算它们的相对速度以查看它们是否碰撞。

使用经典的四阶Runge-Kutta方法执行积分。时间步是固定的。如果将时间步长设置为20毫秒,则每次渲染一帧时,仿真都会提前20毫秒,而与渲染每帧所花费的时间无关。人们通常对此不屑一顾,因为它会产生问题:如果您的计算机能够快速渲染,则模拟将在其上快速显示,但如果它仅能够缓慢地渲染,则在其上将呈现缓慢的仿真。尽管如此,我仍然决定保持时间步长固定,因为这可以使用户使用“记住帧”功能获得漂亮的效果。如果允许帧中执行的步骤数根据渲染该帧所花费的时间而有所变化,那么“记住帧”功能将不会产生完美间隔的结果。身体不允许进入。这是我在开发过程的早期做出的一个决定,因为如果两个物体已经穿透,我将找不到有关如何解决碰撞的信息。在此模拟器的代码中,当两个物体穿透时,时间步被细分,直到它们没有穿透为止。该技术的问题在于,在某些情况下,可以无限细分时间步长,并且仍然无法使物体停止穿透。为了防止仿真器在这种情况下进入无限循环,我执行了一条简单的规则:如果将时间步长细分为小于1微秒,则会停止仿真并显示“无法解决的穿透”错误。

个人评价:该软件为一个小软件,针对平面物体的动力学仿真较为详细,对于认知平面动力学以及图形学具有较重要的启发作用。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
⭐️组件Component ????前言 ????简介 ????Unity工程结构 ????几种常用组件介绍 ????Transform组件 ????Mesh Filter(网格过滤器)和Mesh R
呆呆敲代码的小Y
2021/08/20
3.3K0
Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
Robot-adams机器人动力学仿真
机器人的动力学仿真软件有很多,在之前的文章中【Robot-走近机器人动力学建模与仿真】也有详细的分类介绍,在众多的机器人仿真软件中,Adams 是科学研究中关于动力学仿真求解最稳定的。这主要是由于adams 具有强大的动力学微分仿真求解器.本文旨在详细介绍adams在机器人研发领域内的应用。
ZC_Robot机器人技术
2020/06/16
8K9
Robot-adams机器人动力学仿真
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
金磊 转载整理自 知乎 量子位 | 公众号 QbitAI 这是一篇由UCLA应用数学副教授蒋陈凡夫所撰写的万字长文,回顾了他在图形学物理模拟领域里十二年来的点点滴滴。 于人,于事,于学术,字里行间无不在透露着蒋陈凡夫对图形学的热爱与浪漫,感动了无数的网友。 在文中被他称为“少年英雄”的胡渊鸣,在看完后甚至直呼“荡气回肠”。 目前已经揽获近3000的赞。 (注:本文经授权转载,以下为原文) 最近评上tenure(终身教授),有人来祝贺:”Now you can freely decline review r
量子位
2022/09/22
7610
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
​ICLR2022:清华、腾讯AI Lab共同提出等变图力学网络,实现多刚体物理系统模拟
来源:机器之心本文约3000字,建议阅读10分钟本文介绍了图力学网络(GMN)的构造与理论分析。 近年来,AI for Science 利用人工智能方法与物理、化学、生物等自然科学进行交叉融合,在一些重要的科学问题上(如蛋白质结构预测)取得了瞩目的进展。鉴于物理学科的基础性与重要性,AI+Physics 无疑是 AI for Science 不可缺失的一环。 为此,清华 AIR、计算机系与腾讯 AI Lab 合作共同发表论文《Equivariant Graph Mechanics Networks with
数据派THU
2022/04/18
6110
​ICLR2022:清华、腾讯AI Lab共同提出等变图力学网络,实现多刚体物理系统模拟
走进动力学的柔体世界
导语 “一个能自我膨胀的石头、一个能被随意挤压变形的坚硬钻石、一堆失重漂浮在空中的玻璃球、一片随风飘动的柔软玻璃。或者是任何你能想到的奇幻场景…” 所有这些奇妙幻想,柔体动力学将全部满足。接下来本文将带你了解这个充满创造力的奇幻世界。 一、基础概念 想要玩好柔体,首先要了解柔体的基本构成和它的基础原理。 1、柔体弹簧 在C4D柔体动力学标签下,我们能看到有一个叫弹簧的参数部分。这部分则是柔体的基本受力规则,分别由“构造弹簧”、“斜切弹簧”、“弯曲弹簧”这三种弹簧组成。这三种弹簧共同存在,并且是同时起作用
腾讯ISUX
2023/04/02
7940
走进动力学的柔体世界
Robot-走近机器人动力学建模与仿真
云机器人就是云计算与机器人学的结合。而机器人则是云机器人的主要终端,云可以为机器人提供数据监控以及分析服务,同时也可从远端遥操作机器人的动作。腾讯云社区为大家了解和使用腾讯云服务提供了优秀的平台。而对于机器人部分,下面给出关于机器人关键技术之一的动力学建模与仿真的介绍。
ZC_Robot机器人技术
2020/05/09
14.8K2
Robot-走近机器人动力学建模与仿真
【可变形体物理模拟】开源 | MIT&清华--提出一种实时、可微的拉格朗日-欧拉混合变形物体物理模拟器ChainQueen!
论文地址: http://arxiv.org/pdf/1810.01054v1.pdf
CNNer
2021/02/24
1.2K0
【可变形体物理模拟】开源 | MIT&清华--提出一种实时、可微的拉格朗日-欧拉混合变形物体物理模拟器ChainQueen!
AI2BMD登上Nature,以量子级精度推进蛋白质动力学
编者按:随着人工智能在蛋白质研究中的重要性日益提升,预测静态的蛋白质晶体结构已不再是难题。然而,如何在原子级别精确刻画蛋白质动态变化仍是一项亟需解决的挑战。微软研究院科学智能中心王童研究员及其团队,历时四年研究推出的基于 AI 的分子动力学模拟系统 AI2BMD,对蛋白质等生物大分子进行量子级精度的全原子模拟,实现了比经典模拟更高的精度,和比密度泛函理论更快的速度,为包括生物分子建模等在内的生物研究提供了新的可能性。
DrugAI
2024/11/23
2450
AI2BMD登上Nature,以量子级精度推进蛋白质动力学
组合体惯量法B:原理—机械臂动力学建模
对于多自由度机械臂, 为了研究机械臂的运动特性, 因此需要建立多自由度机械臂的半实物仿真系统以及全数值仿真系统, 而对其动力学的研究又是其中必不可少的环节之一。考虑到实时系统下, 计算机的运算速度以及数据通讯速度, 用于模拟机械臂运动的正向动力学需满足实时性、 快速性以及稳定性。 为此,有必要研究一种针对多自由度冗余机械臂的实时动力学用于模拟机械臂的实际运动情况。
ZC_Robot机器人技术
2020/09/23
4K2
组合体惯量法B:原理—机械臂动力学建模
硬核解决Sora的物理bug!美国四所顶尖高校联合发布:给视频生成器装个物理引擎
Sora刚发布后没多久,火眼金睛的网友们就发现了不少bug,比如模型对物理世界知之甚少,小狗在走路的时候,两条前腿就出现了交错问题,让人非常出戏。
新智元
2024/05/06
1970
硬核解决Sora的物理bug!美国四所顶尖高校联合发布:给视频生成器装个物理引擎
【笔记】《游戏编程算法与技巧》7-12
本篇是看完《游戏编程算法与技巧》后做的笔记的下半部分. 这本书可以看作是《游戏引擎架构》的入门版, 主要介绍了游戏相关的常见算法和一些基础知识, 很多知识点都在面试中会遇到, 值得一读.
ZifengHuang
2022/08/30
2.2K0
Unsupervised Learning of Latent Physical Properties Using
https://www.groundai.com/project/unsupervised-learning-of-latent-physical-properties-using-perception-prediction-networks/
CreateAMind
2018/08/20
1K0
【一统江湖的大前端(8)】matter.js 经典物理
在前端开发领域,物理引擎是一个相对小众的话题,它通常都是作为游戏开发引擎的附属工具而出现的,独立的功能演示作品常常给人好玩但是无处可用的感觉。仿真就是在计算机的虚拟世界中模拟物体在真实世界的表现(动力学仿真最为常见)。仿真能让画面中物体的运动表现更符合玩家对现实世界的认知,比如在《愤怒的小鸟》游戏中被弹弓发射出去小鸟或是因为被撞击而坍塌的物体堆,还有在《割绳子》小游戏中割断绳子后物体所发生的单摆或是坠落运动,都和现实世界的表现近乎相同,游戏体验通常也会更好。
大史不说话
2020/03/12
3.5K1
从直观物理学谈到认知科学,Sora不是传统物理模拟器盖棺定论了?
最近,OpenAI 的文生视频模型 Sora 爆火。除了能够输出高质量的视频之外,OpenAI 更是将 Sora 定义为一个「世界模拟器」(world simulators)。
机器之心
2024/03/18
1380
从直观物理学谈到认知科学,Sora不是传统物理模拟器盖棺定论了?
J. Chem. Theory Comput. | 里程碑模拟在药物-靶点动力学中的进展与挑战
今天为大家介绍的是来自美国圣地亚哥加利福尼亚大学Rommie E. Amaro团队的一篇论文。分子动力学模拟在探索复杂的生物过程中已变得不可或缺,但其在捕捉罕见事件方面的局限性阻碍了作者对药物-靶点动力学的理解。在这篇观点文章中,作者研究了“里程碑模拟”(milestoning simulations)领域以理解这一挑战。里程碑(milestoning)方法将药物-靶点复合物的相空间划分为离散单元,从而提供了更长时间尺度的见解。本文追溯了里程碑模拟在药物-靶点动力学研究中的历史、应用和未来潜力。文章探讨了里程碑方法的基本原理,强调了概率转移和转移时间独立性的重要性。通过重新审视具有Voronoi镶嵌的马尔可夫里程碑方法来解决传统里程碑方法的挑战。在关注该领域进展的同时,本文也指出了通过里程碑模拟估计药物-靶点解离速率常数时面临的紧迫挑战,为更有效的药物设计策略铺平了道路。
DrugAI
2024/12/25
1350
J. Chem. Theory Comput. | 里程碑模拟在药物-靶点动力学中的进展与挑战
ICLR2022:清华、腾讯AI Lab共同提出等变图力学网络,实现多刚体物理系统模拟
机器之心专栏 清华 AIR、计算机系与腾讯 AI Lab 清华 AIR、计算机系与腾讯 AI Lab 合作,共同提出等变图力学网络,实现了理论力学中的一类重要任务—多刚体系统模拟。 近年来,AI for Science 利用人工智能方法与物理、化学、生物等自然科学进行交叉融合,在一些重要的科学问题上(如蛋白质结构预测)取得了瞩目的进展。鉴于物理学科的基础性与重要性,AI+Physics 无疑是 AI for Science 不可缺失的一环。为此,清华 AIR、计算机系与腾讯 AI Lab 合作共同发表论文《
机器之心
2022/03/28
5100
教机器人捏橡皮泥?MIT、IBM, UCSD等联合发布软体操作数据集PlasticineLab
机器之心专栏 作者:MIT CSAIL 「PlasticineLab」的提出,或为软体动力学领域的众多研究提供了新思路。 虚拟环境(ALE、MuJoCo、OpenAI Gym)极大地促进了在智能体控制和规划方面学习算法的发展和评估,然而现有的虚拟环境通常只涉及刚体动力学。尽管软体动力学在多个研究领域有着广泛的应用(例如,医疗护理中模拟虚拟手术、计算机图形学中模拟人形角色、机器人技术中开发仿生制动器、材料科学中分析断裂和撕裂),关于构建标准软体环境和基准的研究却很少。 与刚体动力学相比,软体动力学的模拟、控
机器之心
2023/03/29
6890
教机器人捏橡皮泥?MIT、IBM, UCSD等联合发布软体操作数据集PlasticineLab
【C++】开源:Box2D动力学库配置与使用
项目Github地址:https://github.com/erincatto/box2d
DevFrank
2024/07/24
3910
基于整合IMU运动动力学的无监督单目深度估计
虽然近年来无监督单目深度学习取得了很大的进展,但仍然存在一些基本问题。首先,目前的方法存在尺度模糊性问题,因为反推过程对于深度和平移来说相当于任意尺度因子。其次,光度误差对照明变化和移动物体敏感。此外,尽管在无监督学习框架下已经为光度误差图引入了不确定性,但自我运动的不确定性度量仍然是重要的。在2022 ECCV论文"Towards Scale-Aware, Robust, and Generalizable Unsupervised Monocular Depth Estimation by Integrating IMU Motion Dynamics",作者提出了一种感知框架,通过集成视觉和IMU来进行真实尺度估计,算法已经开源。
BBuf
2022/09/28
9980
基于整合IMU运动动力学的无监督单目深度估计
自由漂浮机器人运动学与动力学建模:space robot工具箱
根据冗余空间机器人的拓扑形式,建立其运动学方程,进而可以得到各个部分之间的位置关系、速度关系以及加速度关系。基座的运动将会引起机械臂末端的位置和姿态的变化,由于空间机器人在自由漂浮状态下的动量守恒,任意时刻基座的动量和机械臂的动量可以表示成一阶微分形式,进而,基座的运动关系可以表示为机械臂的各个关节角度的表达式。
ZC_Robot机器人技术
2020/11/14
5.1K11
自由漂浮机器人运动学与动力学建模:space robot工具箱
推荐阅读
Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
3.3K0
Robot-adams机器人动力学仿真
8K9
“荡气回肠”!UCLA蒋陈凡夫万字长文回顾:从转系生到图形学终身教授的十二年
7610
​ICLR2022:清华、腾讯AI Lab共同提出等变图力学网络,实现多刚体物理系统模拟
6110
走进动力学的柔体世界
7940
Robot-走近机器人动力学建模与仿真
14.8K2
【可变形体物理模拟】开源 | MIT&清华--提出一种实时、可微的拉格朗日-欧拉混合变形物体物理模拟器ChainQueen!
1.2K0
AI2BMD登上Nature,以量子级精度推进蛋白质动力学
2450
组合体惯量法B:原理—机械臂动力学建模
4K2
硬核解决Sora的物理bug!美国四所顶尖高校联合发布:给视频生成器装个物理引擎
1970
【笔记】《游戏编程算法与技巧》7-12
2.2K0
Unsupervised Learning of Latent Physical Properties Using
1K0
【一统江湖的大前端(8)】matter.js 经典物理
3.5K1
从直观物理学谈到认知科学,Sora不是传统物理模拟器盖棺定论了?
1380
J. Chem. Theory Comput. | 里程碑模拟在药物-靶点动力学中的进展与挑战
1350
ICLR2022:清华、腾讯AI Lab共同提出等变图力学网络,实现多刚体物理系统模拟
5100
教机器人捏橡皮泥?MIT、IBM, UCSD等联合发布软体操作数据集PlasticineLab
6890
【C++】开源:Box2D动力学库配置与使用
3910
基于整合IMU运动动力学的无监督单目深度估计
9980
自由漂浮机器人运动学与动力学建模:space robot工具箱
5.1K11
相关推荐
Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档