# Robot Simulator, suggestions?

I’ve been experimenting with the idea of writing a robot Simulator for one of my projects (http://networkbot.wordpress.com/) for a while now, and i think jME is probably the best system to use to make it, Basically the idea would be that the simulator (for starters) would simply simulate a robot on a flat surface, controllable by a network based framework. So yeah, seems relatively simple if you used vehicle controller or something… except for one complication, the robot doesn’t work like a normal vehicle, the robot uses an Omni-Directional drive train, meaning it can drive in any direction (basically meaning it can Strafe left and right as well as drive forward, backward, and rotate side to side), To allow it to drive in any direction it uses what are known as Omni-Wheels, are basically wheels with rollers attached around the rim allowing the wheel to slide sideways with relatively low friction(check the image below). By using 3 Omni-wheels positioned at 120 degree angles from each-other, everything cancels out so that you can control precisely which direction the robot will go by moving the wheels as specific speeds.

The math isn’t exactly simple, but it works pretty well, anyway, if you’ve followed me this far you should be able to see where the problem is, How do you simulate an Omni-Wheel in a physics simulator? i don’t think simulating every single roller on the omni-wheel is the right way to approach the problem, but is there a way to decrease the friction along the x axis of the wheel or something?

Heres a simpler way of explaining all this if the above was too confusing (i’m really sorry i’m not better at explaining this), i want to simulate this:

http://dl.dropbox.com/u/5171147/NetBotRenderHighest.jpg

And heres a closer look at the wheel:

Also for the record, those rollers are actually rubber, not chrome plated as they appear to be in that render, i don’t know why they rendered as chrome plated

Maybe you should use a character control and simulate the behavior you want over the walkdirection of it.

So you would calculate the direction it would go in a real physicslocation and use the (nromalized and multiplied with your speed) resulting direction vector…

Thats the approach i would do.

Since they cancel each other out, I would just calculatte wich is the final movedirection, and apply appopiate force in that direction.

I’d say you should be able to do this with a VehicleControl with 3 wheels.