Registering input devices with DriverStation

Hello all!

My team is looking into creating custom control solutions. We were looking into the Wii Remote but then realized that Bluetooth communication is not allowed by first. If we decided to take up the task of creating a control solution that utilized an Arduino and an accelerometer, would it be necessary for us to register the device with DriverStation or could we just send raw data from the device to the robot through some kind of server running on the driver station computer?

Thanks!

Alex Brinister

There’s a project called UnoJoy that let’s you use an Arduino as the base for a custom gamepad. The official Arduino blog reviewed it here: http://blog.arduino.cc/2012/05/14/unojoy-a-usb-joystick-for-mac-pc-linux-or-ps3/. This should cause your custom controller to show up in the driver station just like any other.

That depends on the specific implementation of the arduino. We used on last season to turn potentiometer values into floating point numbers. While I was not directly working on the project, I have a friend who was. I would suggest looking up the UnoJoy project. From what he said, the arduino is seen as a PS3 controller with no registering required.

From my brief rereading of the rules, I don’t see any issue with incorperating the joystick reading into the dashboard (for instance), sending the information over the network via Network tables/Smart Dashboard, and using those to drive. My only caution is that the field gives driver station status packets priority over other packets, so your driver controls may experience some lag.

If a robot inspector, FTA , or another appropriate authority could clarify, that would be great.

We used something like UnoJoy this past year to input a couple toggle switches and buttons. It was called LeoJoy, the only difference I can imagine is that we used a Leonardo board and UnoJoy uses an Uno board. The good thing about a Leonardo board is that it already ships with HID implementation so you don’t have to do too much to it to get it working. It’s also about $5 cheaper than an Uno.

Hi all,
Thank you for all of your answers! I did indeed end up working on an accelerometer joystick and ended up creating a functional one. I have tested it with a robot and everything and it is awesome!

I went with the idea of using UnoJoy with an Arduino Uno I have lying around but found it nonfunctional. I never figured out why it did not work but I soon found a new method.

Using the firmware and type info from this page, I was able to get my accelerometer joystick working. The communication seems fairly straight-forward. All it does is send an array through the serial interface to the usb chip and it shows that information to a PC.

I don’t have any pictures of my controller or videos of robot driving, but I can tell you that it’s pretty great! I have an LCD screen on there to tell you the speed formatted in the way WPILib sends speeds to motor controllers (a 16-bit range mapped to a -1 to 1 range). It drives suprisingly smoothly and it is not as sensitive as I thought it would be. Overall, it was a great project to work on! I strongly encourage others to look into exploring control options outside of those provided by FIRST!

You can look at my code here. In the repository, I include the firmware files and the libraries that I used to create my joystick. I hope somebody can find this to be useful!

Once again, thank you for all of your help!

Alex Brinister

Here are some pictures of the controller! It doesn’t have a cover yet but the CAD people are promising me a 3D-printed case.

Alex Brinister