Advanced pathfinding with robot in 3D
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
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!"

I think I need some kind of neural network so I thought AI was the right area to put the post.
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!"

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.
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.
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.)
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.