🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Boston Dynamics

Started by
53 comments, last by Calin 2 years, 5 months ago

some type of universal problem solving algorithm

We have algorithms that can solve problems (even complex problems) once the problems are understood and formulated.

There are various kinds of “planners” and “solvers” we can apply for this.

What we don't have, is a solid language for expressing “universal” problems to computers, nor do we have algorithms to create such expressions from detected world stimuli.

enum Bool { True, False, FileNotFound };
Advertisement

Calin said:
It`s not a question of ML, it has to do with pattern recognition. Determine which type of problem your dealing with and apply the typical/standard solution for that kind of problem

The latter is rather difficult. We can't classify all kinds of problems which might come up at runtime. Nor can we easily weight or prioritize multiple objectives overlapping at the same time, because we can't efficiently predict the outcome of various combinations of such objectives.
And ‘typical/standard solution’ sounds like something we would learn from nature.
So that's all pretty underdetermined and lacking definition of an optimal solution. ML makes sense here, and a lot (probably most) of recent research work is based on it.

The obvious alternative is to observe typical behavior, understand it, eventually optimize it using physical models, and try to replicate natural behavior procedurally.
I think we can get quite far with this. And it gives us precise control, plus design options e.g. with prioritizing ‘attack’ over ‘keep balanced’ if the NPC is very angry.
Sounds better with games in mind, and also cheaper because no need for motion capture / training data. But not sure.

hplus0603 said:
There are various kinds of “planners” and “solvers” we can apply for this.

thats terminology used in a physics engine context. Im using the notion of universal problem solving algorithm in a broader context.

JoeJ said:
We can't classify all kinds of problems

yes we can, it real life you have probably less than 10 type of problems. All of them can be found in Newton Playground. Its not a case of ML because ML means that you have a database of inputs and outputs form which you derive a law. In a universal problem solving algorithm you don`t compute/derive the law in real time you just chose from a predefined set of solutions. after that its a matter of adapting the correct solution to you scenario.

Lets say that you have a robot that can interact with the environment like a human does. And lets say there is a ball under a couch in your home. You want your robot to clean the room and extract the ball from under the couch. The ball is out of reach so the robot will determine that it`s a case of `moving an object that is out of reach`. The standard solution for such a scenario is to use another object (a stick). The next step is to determine how long the second object from the solution needs to be. I will simplify things a bit: If the ball is somewhere under the middle of the couch the robot is dealing with a case of unhindered access in the xz plane. if the ball is close to edge of the couch than it becomes a problem of `moving an object using a lever` because the supports/the legs of the couch will cause the stick to pivot (will hinder the free movement of the stick).

My project`s facebook page is “DreamLand Page”

Calin said:
The ball is out of reach so the robot will determine that it`s a case of `moving an object that is out of reach`. The standard solution for such a scenario is to use another object (a stick).

What i meant is that there are always multiple problems/tasks at the same time. For the ball example, the robot needs to calculate a pose where his body does not collide with the table and other parts of the environment, so such collisions do not prevent him from reaching the ball. Computing this pose is already very difficult, because your predefined set of solutions can't handle all kinds of furniture arrangements which might be there, each of them requiring a different pose eventually.

But say we have luck finding a working pose is no problem in our case. Getting into this pose now isn't easy either, because we have multiple objectives such as: Keep in balance; pose as close to the table as possible; avoid collisions while moving the stick towards the ball; avoid pushing the ball further out of reach by accidently poking it with the stick.
Then, even for simpler tasks, pretty much any IK problem is underdetermined and has many open variables. For example, press your Enter key and keep it pressed. You can now rotate your elbow around the line between shoulder and wrist of hand, while still pressing the button. You can also move your shoulder around while still pressing it. That means an infinite number of poses can solve our IK problem of pressing the button, so we need further objectives to define an optimal solution. Such objectives can be: Minimize the energy needed to reach the new pose from the current pose; Or minimize the energy needed to hold the target pose (let the shoulder and elbow hang down with gravity).
Both objectives make sense, but they are not the same. It seems natural to minimize energy of movement first to reach the button quickly, but then relax the pose while keeping the button pressed. But this is just my personal strategy i came up with - it's not necessarily the ‘optimal solution’, and there's no way to formulate such optimal solution at all. Results will be effected by the choices of programmers and designers. Which - in context of games - is no bad thing.
But i also think your example problem of using tools like a stick to reach a ball under a table is too complex. Too much intelligence is required, and a set of predefined solutions - no matter if it's procedural code or a learned database - may not be enough to handle all problems which come up.

Reducing expectations seems key. I'll focus on simple and primary locomotion - walk, run, climb, crawl, swim, and it should work on moving platforms. Eventually some interactions like melee fighting.
That's doable, and the flexibility we get should already enable new types of games not possible with current animation tech.

Ofc, if your game requires to use tools for certain mechanics, you can spend time to make this work by extending those primary abilities. And that's what i expect to happen. So, with time and multiple games the character systems will improve their abilities. The number of actions they can do will increase. Then we have what we want: New games and constant progress with time. We don't want a super intelligent / skilled NPC right now, we only want to have smarter avatars in our next game. To show technical progress, which is key motivation to play games imo.
At the same time, we'll need less and less motion capture, saving costs, which is important too.

So that's why i think robotics is the next big thing in games. But i say this since many years, and so far not much has been shown. Opportunity for a next generation of game developers, maybe ; )

JoeJ said:

But i say this since many years, and so far not much has been shown. Opportunity for a next generation of game developers, maybe ; )

I don't think we will have to wait many more years for such a solution. The solution to these and other problems, in my opinion, of course, is the 3d physics environment.

JoeJ said:
What i meant is that there are always multiple problems/tasks at the same time

the robots body, the stick and the ball make all the other objects that could affect the result operation make a single mechanical rig. In real life we don`t do things in ackward/hard to keep positions , what I mean is if it were for you or I to get the ball from underneath the table we would simplify the mechanical rig to the maximum first. We would remove any furniture getting in the way (chairs, other object, etc.)

JoeJ said:
pose as close to the table as possible

it`s all about getting into a comfortable and simple position, based on the mechanical rig at hand it could be more suited to use a longer stick instead of getting close to the table.

JoeJ said:
For example, press your Enter key and keep it pressed. You can now rotate your elbow around the line between shoulder and wrist of hand, while still pressing the button. You can also move your shoulder around while still pressing it. That means an infinite number of poses can solve our IK problem

Honestly limbs movement wasnt something I had in mind when I first come up with the idea of a universal physical problem solving algorithm, however now that I think about it I see no reason why it souldnt work for limbs as well.

JoeJ said:
Such objectives can be: Minimize the energy needed to reach the new pose from the current pose; Or minimize the energy needed to hold the target pose

that`s overcomplicating. My guess is that we humans use a pose that is most comfortable (a pose with the least stress on the joints)

My project`s facebook page is “DreamLand Page”

komires said:
The solution to these and other problems, in my opinion, of course, is the 3d physics environment.

Yeah, it's those people who will enable it. But widespread adoption is another question.
Likely you work hard to make it work and easy to use, but then the billion dollar AAA Titanic is already too stuck in maintaining production cycles and animation state of the arts to pick it up.
Or i'm just too pessimistic. We'll see who joins the revolution : )

Calin said:
that`s overcomplicating. My guess is that we humans use a pose that is most comfortable (a pose with the least stress on the joints)

I'm not overcomplicating. I just use a different language to say the same thing. The primary objective of an IK solver usually is to bring a bone to a given target position/orientation, at given target velocities. A secondary objective can be to minimize joint torques required for the motion and / or holding the target pose. Similar things apply to low level controllers which then control the speed of executing the motion, or high level controllers planning motion paths through complex 3D environment.
If you think about all those systems in detail, which you can only do if you gain some actual experience, you will agree i did not overcomplicate. It's always the same: Seemingly minor details pop up and need solutions, complexity grows, keeping it simple turns out to be a dream.

Ofc. i talk from the perspective of developing such system, not yet from using it after that. We are not there yet, and we don't even have a common goalpost to aim for.
But it's definitively more interesting/promising than raytracing on 3000 dollar GPUs. :D

JoeJ said:
Getting into this pose now isn't easy either, because we have multiple objectives such as: Keep in balance; pose as close to the table as possible; avoid collisions while moving the stick towards the ball

sounds like bad organization. You could think about it as key frames in an animation. You only do one thing at a time. Once you get close to the table you reach a keyframe and stop worrying about being close to the table youre only worried about keeping in balance in your new pose. I guess you could have two or three type of basic poses standing, crouched and lying, every weight balancing formula possible is a variation/derived from one of these 3 basic static poses. Again youre only doing one thing at a time. You not trying to walk and get the ball out at the same time for instance.

My project`s facebook page is “DreamLand Page”

Calin said:
Once you get close to the table you reach a keyframe and stop worrying about being close to the table

That's not the case. We kneel down, and while putting the stick under the table to reach the ball, we constantly need to watch out our stick and arms do not collide with the table, the floor, and our own body.
If you start to ignore the table just because you are one meter close to it, chances of some funny accident or silly looking behavior are high. (The example was pulling a ball with a stick from under the table, iirc)

Notice: While my proposal to have multiple objectives active may sound complicated, it's not more work to implement than yours of sequentially ordering the objectives and doing only one after another. We need to develop solutions for all kinds of problems either way, and having multiple objectives helps with open variables.

Also, sequential ordering is simply impossible. Whatever we do, e.g. picking up a glass from a table, we also need to compensate the effect on momentum caused from the resulting motion to stay balanced, and we need to do this at every moment in time. So you have at least two active objectives in the regular case.

I assure you this isn't bad, but instead makes it a whole lot easier. If i hadn't the need to keep in balance all the time, i would have no precise idea how i could simulate natural behavior at all. My experience is: Keeping in balance is hard, but once it works, you get results looking natural for free.
That's the low hanging fruit. Playing ball games comes later.

we slid off course a bit, getting back to problem solving algorithm. The types of interactions between objects in the real world are numerically limited, current physical engines can simulate all them* (which is showcased in Newton Dynamics SandBox). So with a universal problems solving algorithm you need to figure out which out of 10 possible types of interaction is the optimum one. Of course at first your problem is an incomplete sandbox scenario some pieces are missing, so your task is to create a sandbox scenario out of the data you have at hand. To use your example you can press a button by reaching towards the button with a finger or you could grab a stick with your hand and press the button with the stick your holding. If nothing is preventing your hand reach the button then the optimum solution is to build sandbox scenario where the robot body (arm) is the only missing piece. Next it`s a case of filling in the missing piece (the robot body/arm) and applying the required forces in the arm.

*almost all of them, I`m not sure physics engine can simulate interaction between fluids for example.

My project`s facebook page is “DreamLand Page”

This topic is closed to new replies.

Advertisement