赞
踩
组织机构原型设计
In Unity 2020.1, now in beta, we will have a new Physics component: ArticulationBody. Articulations make it easier than ever to simulate robotic arms and kinematic chains with realistic physics and movement. Along with other improvements from PhysX 4.1, Unity is more capable than ever of simulation for industrial applications.
在现在处于测试阶段的Unity 2020.1中,我们将拥有一个新的物理组件:ArticulationBody。 关节连接使模拟逼真的物理和运动比以往任何时候都更容易。 除PhysX 4.1的其他改进外,Unity还比以往任何时候都更有能力进行工业应用仿真。
With Unity 2019.3 we upgraded our physics library from PhysX 3.4 to PhysX 4.0. Now, the Unity 2020.1 beta takes users a step forward with an upgrade to PhysX 4.1. While previous builds of that library delivered an excellent performance for a wide variety of game types, modeling reality for non-gaming applications was more difficult to accomplish. Modeling kinematic chains, like the type you’d see in a rag doll, robotic arm, or mechanism with several concurrent hinges, would result in stuttery, and unrealistic motion. Not only would these joints look peculiar, but they would also be impossible to use for simulating a real device, impeding efforts to model or prototype industrial designs.
使用Unity 2019.3,我们将物理库从PhysX 3.4升级到了PhysX 4.0。 现在,Unity 2020.1 beta版使用户升级到PhysX 4.1向前迈进了一步。 尽管该库的先前版本在各种游戏类型上均具有出色的性能,但非游戏应用程序的现实建模却很难完成。 对运动链进行建模(例如在布娃娃,机械臂或带有多个并发铰链的机构中看到的运动链)会导致口吃而又不切实际。 这些接头不仅看起来特别,而且无法用于模拟真实设备,从而阻碍了对工业设计进行建模或原型设计的工作。
One of the major culprits of these real-world shortcomings was the selection of joint components that connected rigid bodies together. These joints, coupled with a physics solver optimized for game performance over fidelity, resulted in kinematics that failed to simulate realistically.
这些现实缺陷的罪魁祸首之一是选择将刚体连接在一起的关节部件。 这些关节,再加上针对保真度游戏性能进行了优化的物理求解器,导致运动学无法真实模拟。
Learn more about the overall improvements brought by PhysX 4.1 here.
Certain applications require constraining the motion of some rigid bodies relative to each other. To visualize this, imagine connecting the skeleton bones of a rag doll, a multi-jointed robotic arm, or having a door rotating on its hinge. This has traditionally been made possible by the means of the joint components such as the FixedJoint or the ConfigurableJoint that connect two Rigidbody objects together.
某些应用需要限制某些刚体相对于彼此的运动。 为了可视化,想象一下连接一个布娃娃,一个多关节机器人手臂的骨骼,或者使其门在其铰链上旋转。 传统上,这是通过将两个刚体对象连接在一起的诸如FixedJoint或ConfigurableJoint之类的关节组件来实现的。
Behind the scenes, each joint will be decomposed into a few primitive constraints, such as a linear constraint to keep the bodies at some specific distance or an angular constraint to keep the bodies oriented in a specific way around a particular axis. Those same constraints are used to keep the bodies from overlapping each other by maintaining the same distance apart. All of the constraints combined will be plugged into an iterative solver that aims at converging to a set of impulses to apply to each of the connected pairs of objects in world space that will position them to satisfy all of the constraints, if possible.
在场景后面,每个关节将分解为一些原始约束,例如将实体保持在特定距离处的线性约束,或将实体以特定方式围绕特定轴定向的角度约束。 这些相同的约束条件用于通过保持相同的距离来防止物体相互重叠。 所有组合的约束都将插入迭代求解器中,该迭代求解器的目标是收敛到一组冲动,以应用于世界空间中每个已连接的对象对,并在可能的情况下将它们定位为满足所有约束。
The first problem is the sheer number of conflicting factors that can create convergence issues for the solver. Iteration count, the relative masses of connected bodies, and the total complexity of the set of the constraints in a scene can create an unsolvable scenario. In cases like this, the partial solution is used, so certain constraints are left unsatisfied.
第一个问题是可以为求解器带来收敛问题的大量冲突因素。 迭代计数,连接物体的相对质量以及场景中一组约束的总复杂度可能会导致无法解决的情况。 在这种情况下,将使用部分解决方案,因此某些约束无法满足。
The second problem is that the magnitude of the impulse applied depends on the joint error — a value that shows how badly a constraint is violated at a given time. Because of this error compensation behavior, there will always be at least some springy effect, exactly as if the bodies were connected by a set of damped springs, especially when joints are chained together.
第二个问题是施加的脉冲的大小取决于联合误差,即联合误差,该值表明在给定时间违反约束的严重程度。 由于这种误差补偿行为,总是会至少产生一些弹性效果,就像通过一组阻尼弹簧将车体连接起来一样,尤其是当关节链接在一起时。
Our solution to the above kinematics problem is the new concept of articulation: a set of bodies organized in a logical tree, where a parent-child relation expresses the idea of mutually constrained motion. There is always a single root body, and there can be no loops. We use Unity’s transform hierarchy to express articulations.
解决上述运动学问题的方法是关节的新概念:在逻辑树中组织的一组物体,其中父子关系表达了相互约束运动的思想。 始终只有一个根主体,并且没有循环。 我们使用Unity的变换层次结构来表达清晰度。
Now, users can easily model an existing robot like the Universal Robots UR3e below and simulate a task that more accurately reflects what that movement would look like in the real world. This allows roboticists to visualize a particular movement sequence, test new code, or even validate new designs in a synthetic environment.
现在,用户可以轻松地对现有机器人进行建模,例如下面的Universal Robots UR3e,并模拟一个任务,该任务可以更准确地反映现实世界中的运动情况。 这使机器人专家可以在合成环境中可视化特定的运动序列,测试新代码,甚至验证新设计。
Articulations help roboticists and other industrial developers in two major ways: they move in a more similar fashion to their real-world counterparts, and they can be constructed faster than the old RigidBody+Joint, saving development time.
关节通过两种主要方式帮助机器人技术人员和其他工业开发人员:与现实世界中的机器人的移动方式更加相似,并且其构造速度比旧的RigidBody + Joint更快,从而节省了开发时间。
We anticipate that one of the main use cases for articulations will be in the field of robotics. Robotic arms often have six or more joints linked serially in a row, which means that small errors in each relative joint pose can have a potentially large effect on the pose of the end effector; errors are propagated up the kinematic chain which creates unrealistic movements and an end effector position that has drifted off target.
我们预计,用于关节的主要用例之一将是机器人领域。 机械臂通常具有连续串联的六个或更多个关节,这意味着每个相对关节姿势中的小错误都可能对末端执行器的姿势产生潜在的大影响; 错误会在运动链中传播,从而产生不切实际的运动,最终执行器的位置也会偏离目标。
Simulation can help roboticists accelerate their development time by modeling many deployment scenarios and unit tests virtually, and then execute them at scale rather than trying to run those same suites of tests on a real robot in real-time. We hope that the ArticulationBody component, as well as the improvements to PhysX, can help roboticists use Unity for their simulation efforts.
仿真可以通过虚拟建模许多部署方案和单元测试,然后大规模执行它们,而不是尝试在真实的机器人上实时运行相同的测试套件,来帮助机器人专家缩短开发时间。 我们希望ArticulationBody组件以及PhysX的改进能够帮助机器人专家使用Unity进行仿真。
The amount of degrees of freedom in a given parent-child relationship depends on the actual joint type used. Currently, we support:
给定的父子关系中的自由度大小取决于所使用的实际关节类型。 目前,我们支持:
Fixed: has zero degrees of freedom and is used to lock the bodies relative to each other
固定的 :具有零自由度,用于锁定彼此之间的物体
Prismatic: has one degree of freedom, which is a linear offset along a particular axis relative to the parent
棱柱形 :具有一个自由度,它是相对于父级沿特定轴的线性偏移
Revolute: has one degree of freedom, a rotational analog of the Prismatic
旋转 :具有一个自由度,可以像棱镜一样旋转
Spherical: has up to three degrees of freedom, and is a ball-in-socket joint that only allows relative rotations but no linear motion
球形 :具有最高三个自由度,并且是球窝关节,仅允许相对旋转,但不允许线性运动
In order to further increase the realism of these joints, a new solver based on Featherstone’s algorithm is used. This technique computes the effects of forces applied to a structure of joints, links, and solid bodies using reduced coordinates- that is, space where each body has as many coordinates relative to its parent as there are degrees of freedom. Previously, we relied on maximal coordinates that were more performant for general use cases but made sacrifices to accuracy and precision to gain that performance.
为了进一步提高这些关节的真实性,使用了基于Featherstone算法的新求解器。 该技术使用简化的坐标(即每个物体相对于其父对象具有与自由度一样多的坐标)的空间来计算作用于关节,链接和实体结构上的力的效果。 以前,我们依赖于在一般用例中性能更高的最大坐标,但牺牲了准确性和精度来获得该性能。
Forward dynamics and articulations in a reduced coordinate space help satisfy the high requirements for precision and accuracy that robotic arms need. Along with other improvements provided by PhysX 4.1 such as the TGS solver, articulations make reliable robotic arm simulations possible in Unity for the first time. Modeling a robot using the iterative joint solver required precise tuning and shortcuts that would still fail to match the movement of a real robot.
在减小的坐标空间中的前向动力学和关节运动有助于满足机械臂所需的对精度和准确性的高要求。 借助PhysX 4.1提供的其他改进(例如TGS求解器),关节使首次在Unity中实现可靠的机械臂仿真成为可能。 使用迭代关节求解器对机器人进行建模需要精确的调整和快捷方式,而这些仍然无法与实际机器人的运动相匹配。
We use the forward dynamics algorithm to simulate articulations in the reduced coordinate space (that is a space where each body has as many coordinates relative to its parent as there are degrees of freedom). It scales linearly with the total amount of degrees of freedom in an articulation, and can be faster than using the traditional iterative solver that scales with the number of constraints instead while computing a more accurate result.
我们使用前向动力学算法在简化的坐标空间(即每个物体相对于其父对象具有尽可能多的自由度的坐标)中模拟关节运动。 它与关节中的自由度总量成线性比例关系,并且比使用传统的迭代解算器更快,后者根据约束的数量进行缩放,而不是在计算更精确结果时使用。
To support articulations in Unity, we added one new component: the ArticulationBody. Drawing an analogy with regular physics, ArticulationBody is like Rigidbody and ConfigurableJoint in one component. In an articulation, all bodies except the root one have a joint connecting them to their parent, that’s why they were not separated into individual components.
为了支持Unity中的关节,我们添加了一个新组件: ArticulationBody 。 类似于常规物理学,ArticulationBody在一个组件中就像Rigidbody和ConfigurableJoint。 在一个关节中,除了根部之外,所有物体都具有将其连接到其父物体的关节,这就是为什么它们没有被分成单独的组件的原因。
The shape of the bodies is described by using the regular Collider component, just like with Rigidbodies.
就像使用刚体一样,通过使用常规的Collider组件来描述物体的形状。
Once created, the bodies in an articulation cannot be moved by the means of the Transform component, because it can break the limits set by the reduced space coordinates. The only exception is the root body, that can be moved using the ArticulationBody.TeleportRoot function. ArticulationBody won’t respond to the changes in the Transform component by design.
创建后,关节中的物体无法通过“变换”组件移动,因为它可能会打破减小的空间坐标所设置的限制。 唯一的例外是根主体,可以使用ArticulationBody.TeleportRoot函数移动根主体。 ArticulationBody不会根据设计对Transform组件中的更改做出响应。
That said, there are several possible ways of interacting with an articulation. Firstly, forces and torques can be applied to each body in an articulation. Secondly, each joint has a linear drive per each degree of freedom that can be controlled by setting linear and angular targets. Finally, it’s possible to alter the poses of bodies in the reduced coordinate space directly.
也就是说,有几种可能的方式与关节进行交互。 首先,力和转矩可以铰接方式施加到每个主体。 其次,每个关节在每个自由度上都有线性驱动,可以通过设置线性和角度目标来控制。 最后,可以直接在缩小的坐标空间中更改物体的姿势。
One particular advantage of articulations is that the quality of simulation doesn’t directly depend on the mass ratio of connected bodies. With rigid bodies and fixed joints, simulation started to look unrealistic with mass ratios higher than 10:1 between connected bodies. In the following example, however, you can see a dimensional grid of articulation bodies connected with fixed joints can still be simulated precisely, even with the red spheres being 1000 times heavier than the black ones.
关节的一个特殊优点是模拟的质量并不直接取决于连接物体的质量比。 对于刚体和固定接头,当连接体之间的质量比大于10:1时,模拟开始显得不切实际。 但是,在以下示例中,您可以看到与固定关节相连的关节体的尺寸网格仍然可以精确模拟,即使红色球体比黑色球体重1000倍。
Simulation can help roboticists accelerate their development time by modeling many deployment scenarios and unit tests virtually, and then execute them at scale rather than trying to run those same suites of tests on a real robot in real-time. We hope that the ArticulationBody component, as well as the improvements to PhysX, can help roboticists use Unity for their simulation efforts.
仿真可以通过虚拟建模许多部署方案和单元测试,然后大规模执行它们,而不是尝试在真实的机器人上实时运行相同的测试套件,来帮助机器人专家缩短开发时间。 我们希望ArticulationBody组件以及PhysX的改进能够帮助机器人专家使用Unity进行仿真。
To see how a serial link robot arm can be constructed with articulation joints, check out our robotics demo project.
要了解如何用关节连接的关节构造机械臂,请查看我们的机器人演示项目。
Download Unity 2020.1, now in beta, to try your hand at using ArticulationBody.
下载现在处于Beta版的Unity 2020.1 ,以尝试使用ArticulationBody。
组织机构原型设计
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。