The official blog for the Programming Group of FIRST Robotics Team 585 from Tehachapi, CA.

Sunday, December 24, 2017

Polishing the Holonomic Code for Public Release

The 2018 beta period has not technically finished up yet, and we still have some work to finish before the end of calendar 2017. For everyone new to how FIRST treats team-written software, you cannot use any code that was made prior to the new game kickoff, unless it has very publicly released to every other team. We would like to use what we discovered in the beta, and the best way to do this is to make new code that other teams can use.

The big discovery we had is that CTRE’s massive re-write of all of their software has MAJOR repercussions for all teams like ours that use encoders and closed-loop feedback. This is a huge problem for the holonomic drives that we have been using, and are currently building to write new white papers for public release.

I would like to have a new custom Holonomic drive VI, ready to release to everyone by December 31, 2017. This will allow us to use this new code for everything. The following is what I am proposing:

For now, this new custom holonomic code will only work as a robot-specific drive (not looking at field centric at this time). The additions, when compared to the WPI holonomic are the mode switch, which can deal with closed-loop speed mode. Unfortunately, WPI won’t work like this now, so this is the major reason for this code.

The other big difference is the bottom left bubble, “Drive Configuration”. This is essentially a way for us to specify what the drive is with each wheel getting a perpendicular axis, wheel type (omni or mecanum), and wheel size. This would give us a hybrid holonomic for dummies configuration. One other thing to notice is that the drive configuration will define the number of driven wheels, and the address for each. This gives us flexible n-way holonomic drive. 3, 4, 5, 6 or more motors can be configured and driven.

Internally, the functions break down like this:

There are more sub-VI’s that will be necessary. I just wanted to give the next-level-down conceptual version of what we need to do. If there is a part that you want to work on, let me know. We can break a bunch of these down into much simpler chunks that are more approachable. We have a week to make this work.