Exploring the Possibilities of Articulated Physics in ROBLOX
by Kevin He
We’ve been working on testing and implementing a new articulated physics engine, which will offer more robust support for joints and motors, and more accuracy. We have a vision for ROBLOX where builders have the freedom to create the most complex mechatronic creations they can imagine, and simulate them in real time with other players. This has been a long and challenging process, but the video below illustrates the progress we’ve made so far.
The Path We Took to Get Here
Before we describe the video, let’s talk about how we got here. At BLOXcon New York City, we announced that we’ve been hard at work overhauling ROBLOX physics–we even brought along our “Crash Canyon” 10-wheeler demo so attendees could experience our progress firsthand. Why a 10-wheeler? It represents many of the possibilities the articulated physics engine affords: more robust joints, a greater volume of articulated bodies, and more accurate simulation.
Thus, we started building all sorts of trucks, and they taught us a lot about what we’d be able to accomplish using our new articulated physics engine. With the 10-wheeler, we were faced with several obstacles that would truly test the strength of our joints and motors. For the first time, we had to create a multi-rigid body system (i.e. there’s two separate sections of the truck, the front and back, connected by a ball-socket joint).
The 10-wheeler also demonstrates a realistic suspension system built using prismatic joints, and a piston to provide shock absorption. There’s also a spring placed inside the prismatic joint to restore the piston to its original position, prior to the impact. This leads to a massive truck that turns extremely realistically–there’s a real weight to each turn that feels natural. With the stunt truck we were able to learn a ton about suspension and articulated joints, but we weren’t satisfied.
We went on to create monster trucks with massive suspension mechanisms to test the strength of the engine. When it was all said and done, we made trucks that could climb at 65 degree angle, in rocky and jumbled terrain.
The Front-end Loader and What It Represents
Now, we arrive at the front-end loader, which is what you’re seeing in the video above. The biggest challenge with the front-end loader was that it was planned to be a vehicle with three separate “loops” that lived in three separate sections of the vehicle (two series of joints for the boom, and one for the bucket). Loops in the topology of vehicles essentially represent joints that are dependent on one another in order to function correctly. If one joint in the loop has even a small error that is not absorbed by the physics solver properly, that error will propagate throughout the loop, which will continue on until the simulation explodes. This was definitely the next step in the “hard to simulate” list–we wanted to figure out how to simulate a mechanical creation with a loop-rich topology.
You’ll notice in the video that this creation is not just about driving realistically, but accurately interacting with the environment. The front-end loader can use a large mechanical arm to knock over walls, pick up falling objects, and scoop things out of the ground. Lots of simulated points of contact means lots of collision and friction forces, and an extremely large magnitude of torque needs to be exerted on the robotic arm to do its job. Without a high fidelity simulation of a tremendous motor gain, the arm would just shake, twist or fall apart entirely.
So what’s next? We won’t tell you exactly what it is, but we’ll give you a hint: we’re moving past vehicles and building something bigger. Where the front-end loader had two degrees of freedom (DOF) to manipulate–one for the bucket, and one for the arm–this new creation will have 10. Our goal is to build mechatronic simulations with higher degrees of freedom and more complex topology. All of this is an effort to perfect and refine our new articulated physics engine so we can give it to you, our builders. We’ll keep you posted.