I tried loading the code base from last year and noticed that there are quite a bit classes missing now. This includes things like the RobotDrive class and the DigitalInput class. I just wanted to give programmers a heads up that once you update, last years code may not work.
*and as always, remember if you plan you use last years code you MUST open source it
What? That seems odd. I was looking through the C++ documentation that detailed all of the classes, and RobotDrive was included. And I’m sure it’s not an outdated version because it includes the new Watchdog replacement.
I think that MUST should read “SHOULD HAVE ALREADY open sourceD it”. If you haven’t already open sourced it at this point, I think you are too late. The competition started yesterday.
Maybe Chief Delphi should have an open source announcements forum just for this purpose.
Where in the rules does it talk about being allowed to use open source code? I looked through the rules and couldn’t find any reference to it. I remember that last year they had a rule saying any open source code was considered COTS, but I can’t find that for this year.
a COTS item is something you can get from a distributor and can be made available to and supplied to every team if need be
software free or not falls under this definition
In the first section of the manual there is a glossary that defines COTS parts. Specifically in section 1.6 COTS the note says
For the purposes of the FRC, generally available software modules obtained from open sources (e.g. professional publications, commonly used FRC community accessible web resources, industry source code repositories, etc.) that are not specifically affiliated with individual FRC teams shall be considered COTS items.
Use the following if you want arcade drive. Tank drive is easier.
Linear Arcade drive:
int m1 = 0; //Temp Variables
int m2 = 0; //Temp Variable
int x = 0; //Joystick X
int y = 0; //Joystick Y
Joystick JoyHoy = new Joystick(1);
PWM motor1 = new PWM(1);
PWM motor2 = new PWM(2);
/*
I usually declare and initialize separately like I do for C++, but for simplicity sake I didn’t.
*/
while(teleop) //arbitrary while loop, its the teleop
{
Y = JoyHoy.getY();
X = JoyHoy.getX();
m1 = 127 * y + 127;
m2 = 127 * y + 127;
motor1.setRaw((int)(m1 + m1 * x));
motor2.setRaw((int)(m2 - m2 * x));
}
edit:
also regulate the PWM, as is, the code will generate invalid PWMs
On the topic of WPILib changes, they changed “SetLeftRightMotorSpeeds” to “SetLeftRightMotorOutputs” without updating the documentation. Took me an hour of compiler errors before I finally looked in RobotDrive and figured that out.
If you want to learn how PWM is generated, I’d start with a simple PIC or Arduino based system. The implementation isn’t the same, but the concepts are.