First a few good things done this year:
-new radio has more than 1 Ethernet port making tethering so much easier.
-ability to send camera images back directly (although I haven’t used this myself)
-ability to use any laptop (although I still used the Classmate).
Now a few requests for next year, by category:
A. Driver Station
-Return to Teleoperated whenever comm is dropped for more than a second or so, when robot is rebooted, when the computer exits standby, and basically any time when you might not have meant to leave it in Autonomous mode. We used to have a “big red button” with a missile-switch style cover to run auto. Now we have a little light which never ever resets itself if we forget. While we should always check before enabling, sometimes we forget. This is more of a safety issue than anything else.
-Remove the stop button wait time. The spacebar does just as good of a job at stopping a robot as the stop button.
-FMS unlockability. It would be nice to be able to clear the FMS lock. On any laptop but the Classmate, it is possible to just kill the DS app and restart it, but having a way to clear the FMS lock would be nice.
B. WPI library (LabVIEW)
-Battery voltage. I dug into Driver Station Start Comm and it has the battery voltage as a decimal only one VI down, but there is no place where it is ever given to the user. I needed it, then had to find a way to tunnel the voltage back out without essentially making my copy of Start Comm dependent on a file in my project. It would be very easy to just make another data store (or add battery voltage as an element of a pre-existing one) to make it available to users. See attachments for a zip of my fix, neatened up for release.
-Gyro self-center. I would like the ability to force a known centerpoint, to avoid the “don’t touch the robot because it’s initializing” before matches. I implemented a fix, see attachments. If the input is set to 0, it will find its own centerpoint and tell the user the result on the “Center” output. Else, it will set the centerpoint to the user input. I also pulled the “Gain” input out to the connector, so I don’t have to call another VI to set the gain.
-Independent setting of relay coils. It is possible to set them in the same place if you use stacked case structures, but setting the two relay coils to separate values (especially unrelated values in different parts of the code) is nasty. If there were two additional Relay Set vi’s which set only the forward or reverse coil (but allowed the relay to be opened as Both Directions) that would be awesome. Code written, see zip.
-Way to formally determine if in FMS mode - I know the raw control byte will tell me this, but since I have no idea what most of the bits in the raw control byte are, a formal description of the byte would be nice. I have heard conflicting information about which one is actually FMS mode - The Dashboard does actually know, and if it has the same packet (which I assume it does), then the bit 0 is FMS mode, but I have also heard that the bit 2 is FMS mode. Anyway, just a little clarification on this would be awesome. Maybe you could have a whole “Get General Data” VI which could include FMS mode, robot mode, enabled, and battery voltage.
C. FPGA image/other black box code
-Code dies while robot is moving. This is a safety issue. If the running code stops (say, I press the red stop button in Robot Main.vi or the user code crashes for some reason), and outputs are running, the robot keeps running until it is disabled by the driver station. It should automatically disable itself whenever the user code stops responding for any reason.
-Encoder fix. I do like the encoder workaround, it would be nice to publish it somewhere meaningful (such as where the LabVIEW updates are).
I am planning on sending the above to NI after STL. Before I do, can anyone think of suggestions to add to this list? My code zip is designed to be unzipped into C:\Program Files\National Instruments\LabVIEW 8.6, so the vi.lib is merged with vi.lib and menus are merged with menus. All of my user-accessible VI’s (Get Battery Voltage and the two Relay Set VI’s) are in the menu files, and all of the modified files are there.
apalrds_WPIlib_fixes.zip (95.1 KB)
apalrds_WPIlib_fixes.zip (95.1 KB)