|
Re: Omini Wheels!
what do you need help with? we've been doing it for years and believe we've mastered it so ask me anything! The way we do it is first convert the joystick input into a vector(direction and magnitude) and a rotation input, this is done with simple trig(the rotation is simple just the x axis scaled by some factor). so you have your X axis and Y axis, with A^2+B^2=C^2 you can calculate the magnitude and with the sin/cos/tan you can calculate the direction(angle). when you know this you add or subtract your gyro angle and other compensation. this will give you a desired output vector. From that you just go backwards. With a desired output vector you calculate the X and Y components which you then multiply by the magnitude to get the raw values to send to your X axis wheels and Y axis wheels. The rotation is a rather simple, just add/subtract a constant value to every wheel then normalize the outputs and send it to the speed controllers. It's a very simple system that only requires basic trig.
You can do it in fancier ways but this way has worked brilliantly for us with no issues and is very simple to implement.
if you want to take it further you can also calibrate each wheel so your robot doesn't rotate as it moves. if you map the pwm value to wheel speed of each wheel with a known load, you can assure your robot will always move in straight lines without rotating or drifting. You can also use PID feedback but from what we've discovered in previous years is that while yes it works, it takes away from the responsiveness so it's better to just let the driver deal with any potential unwanted rotation.
Hope this helps if you need more information feel free to ask.
|