Holonomic Drive Example?

Does anyone know if first has a an example of the Holonomic Drive in labview. I know there is a blovk for it, but i dont understand how the crontrols work with it. If anyone knows or has an example that would be great thanks.

Haven’t found any FIRST resources but we have been referring to this paper: http://www.scipub.org/fulltext/ajas/ajas351831-1835.pdf

In addition we set up a simple PC simulator that allows us to take PC joystick, pass them through a modified Holonomic Drive algorithm and output respective PWMs on each wheel’s channel. Theres a diagram in the paper above that shows how wheel speeds and directions cause different vehicle reactions. Very very handy.

Here’s a very oversimplified way to do it.

You need to open four motors in begin.vi (Open4Motors.vi) instead of the 2 motors.

You need to make the refnums agree as well.

The following would be what your teleop.vi would look like. The case structure would be the inner case that already exists and the open and get blocks would be outside the outer case.

I don’t show anything connected to the rotate input, but you can add that pretty simply. Generally, you’d connect the Y-axis to the rotate input and keep both the other inputs set to 0 to use the rotate. Just add another case and feed it with a button.

http://files.myopera.com/DocWu/albums/1939471/Simple%20Holo%20Drive.JPG

This is not meant to be complete. It’s more an idea what you might change within teleop.vi.

Thanks…, but can you also show the rotation to? Thanks again

where would i find polar to rect

There should be a picture attached of our FAILING holonomic drive example. There is a boolean that leads into the case statement you see there. This is so we can have a false case where the robot flips out (as a test) and then the true case that is our actual program. The inputs are just constants in the false case, but not in the true case shown below. The robot will drive in circles when I tell it too (the false case), but when set up like below, it doesn’t work. Why is this? Does it have to do with the scalar input? Please help!





When it doesn’t work, what does it do?

It might be helpful to see what is in the false case.

I would double check the location of every motor/PWM and make sure it is where the program thinks it is. Also you probably need to invert the left side, if your motors are mirrors of each other.

this is the false case, and it is operating like this because the highlighted connector is set to false. It’s for testing only. As you can see, it is set to drive around in circles, and it does that. But when you switch to the true case, it fails and DOES NOTHING. Therefore, the error is likely in the true case.





What is LeftStick? It doesn’t appear to have a value. Without a proper USB# there when you run the code, I think the Joystick Open will fail.

Note that changing the value of the control after the vi is running will do nothing helpful. The Joystick Open has already been executed, and the invalid reference being fed to the Joystick Get will not change.

Either replace the control with a constant and set it appropriately, or set the control to the right value and choose “make default” before you run the vi.