Advanced pathfinding with robot in 3D

Started by
23 comments, last by Emergent 11 years, 6 months ago
Hello,

My project:
I have a 2000 pounds real life robot with two arms. The arms are controlled by 15 motors and gets position feedback from 15 potentiometers. The robot is placed in a room with stationary objects which positions are known. The motors are only able to move with full speed.

Task:
Get the two arms of the robot from their current point to a selected point.

My current solution:
Currently the robot is moving by a big handmade table, but the problem is that if an object is moved the robot is going to collide. And it is almost impossible to imagine all possible situations.

Environment:
I have created a 3D simulation for the robot which I am planning to use when training the robot. The 3D simulation can detect collision with objects and between the two arms.

My question:
First I looked at some path finding algorithms like A* but with 15 motor in a 3D environment it is not very useful. Then I begin to look at neural network and Q-learning but I am not sure it is the right way to go. I think I need some kind of reinforcement learning.

My input and output could be something like:
Input:
15 x Current motor pos
15 x Goto pos
Obejects in room pos or the 3D simulation

Output:
15 x (maybe 5 states) sub positions for the motors

I am currently trying to figure out which network and learning method to use if I go with neural network and reinforcement learning.
Is it doable?

I hope someone can help me and maybe also point to an example.

Thank you in advance.

With best regards,
Peter
Advertisement
Wow... uh... not really a [color=#ff0000]game AI topic... *shrug* Let's see what happens.

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

Yea.. it's not a game. smile.png But I think the problem in many ways is game related.
I think I need some kind of neural network so I thought AI was the right area to put the post.
My point wasn't that it isn't AI-related but rather that the entire purpose of GameDev.net is related to games. Be that as it may...

Dave Mark - President and Lead Designer of Intrinsic Algorithm LLC
Professional consultant on game AI, mathematical modeling, simulation modeling
Co-founder and 10 year advisor of the GDC AI Summit
Author of the book, Behavioral Mathematics for Game AI
Blogs I write:
IA News - What's happening at IA | IA on AI - AI news and notes | Post-Play'em - Observations on AI of games I play

"Reducing the world to mathematical equations!"

Okay. Thanks for letting me post IADaveMark. If I find a solution for my problem I am hope it also will benefit game develops. The 3D simulation works as a sort of a game. biggrin.png

By the way, I found a neural network learning algorithms which I may be able to use. It is called Simulated Annealing. As with Genetic algorithms it is able to solve the Traveling Salesman problem. In that problem there are a group of cities and the network decides which is the best route to take. As I understand it Simulated Annealing just do it fast.



I am not sure it is the best way to go so I am open for all ideas.
Personally I find no conflict with game vs robot, many techniques used are similar, and there's probably a bigger community of game developers than robot developers. ;) And research flows both ways, so we're not exactly losing out.

I don't understand the capabilities of your robot. You mention two arms. How does it move? Wheels? Using the arms as legs? Grasping objects and pulling? What do the 15 motors do? Or are you saying that the robot itself doesn't move, you're just trying to position the arms? A picture might assist.

If you're trying to figure out how to use the motors to achieve a given effect, and you have the ability to sense the results of your movements, you might be able to use neural nets or genetic algorithms to do self-guided learning, e.g. try stuff, watch the effects, repeat.

If you're talking about physical pathfinding from one side of room to another (for example), I believe D* or D* lite are good for unknown dynamic environments.
I'd also recommend RVO's/VO's for pathing between two nodes in an environment, if you can decompose the objects into spherical representation, the problem becomes easier to solve.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.
Thank you Jefferytitan and slicer4ever,

Well, the robot is hanging from the ceiling and moves along a rail. The two arms are operating down on floor level and shall do things like go under a table without touching it.

The question is how to for example move the arms from above the table to under the table without colliding with the table and without the two arms colliding. The arms are never allowed to touch anything in the room. 1 motor is used for moving the robot along the rails and 1 motor is used to turn the main body of the robot. 7 motors in one arm and 6 motors in the other arm.

So I have two problems.
1. Is the pathfinding.
2. How to follow the path with the use of the motors in the arms and the main body.

Thanks again, I will look in to D* and RVO/VO and see if it is an solution I can use.

Thank you Jefferytitan and slicer4ever,

Well, the robot is hanging from the ceiling and moves along a rail. The two arms are operating down on floor level and shall do things like go under a table without touching it.

The question is how to for example move the arms from above the table to under the table without colliding with the table and without the two arms colliding. The arms are never allowed to touch anything in the room. 1 motor is used for moving the robot along the rails and 1 motor is used to turn the main body of the robot. 7 motors in one arm and 6 motors in the other arm.

So I have two problems.
1. Is the pathfinding.
2. How to follow the path with the use of the motors in the arms and the main body.

Thanks again, I will look in to D* and RVO/VO and see if it is an solution I can use.


So, the arms essentially extend downward, and then can extend in any other direction(if i understand correctly?)

generating a heavily subdivided voxel map might be more useful in this situations, where a voxel is either passable or not passable. if the sensor's can decompose the environment into a 3D Scene, and from their, you generate the voxel world. with the voxel world, you can then do A* combined with clerance based pathfinding

I think the result would be pretty decent for your needs, and precision would be dependent on how large a single voxel is.

I'm doubtful you'd need to go full NN's to solve this.

RVO's/VO's are probably not as useful in this situation, i'd recommend a look over, but i had thought the entire robot was tasked with reaching a destination, not just the arms(it can still be used, but it'd be much more difficult imo.)
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.
Thanks for your suggestions.

The problem is the number of axles when it comes to controlling the motors.

I have created 4 screenshot from the simulation so you are able to see have the robot works.

I am very grateful for your suggestions.

Edit:
Sorry, I was asked to remove the pictures from the forum by my boss.

This topic is closed to new replies.

Advertisement