public class Robot extends SampleRobot
{
RobotDrive myRobot; // class that handles basic drive operations
Joystick leftStick; // set to ID 1 in DriverStation
Joystick rightStick; // set to ID 2 in DriverStation
public Robot()
{
myRobot = new RobotDrive(0, 1);
myRobot.setExpiration(0.1);
leftStick = new Joystick(0);
rightStick = new Joystick(1);
}
public void operatorControl()
{
myRobot.setSafetyEnabled(true);
while (isOperatorControl() && isEnabled())
{
myRobot.arcadeDrive(leftStick); //myRobot.tankDrive(leftStick, rightStick);
Timer.delay(0.005); // wait for a motor update time
}
}
}
Initially, the code was working. However we then tried redeploying the code with a few changes, and the robot stopped working. So, we reverted the code back to EXACTLY what it was when it was working, and redeployed it, but the robot still does not work. I believe this to because by our code is not successfully deploying to the robot, because no matter what we do, nothing seems to change and the robot does not respond. Could someone outline the code deploying process for us to ensure we are not missing anything? Does the build.xml file need to be updated?
We have a very new and inexperienced coder this year and he is not very familiar with system.out.println statements, could you explain how we would do so? Thanks a Lot!
I get the hello world printout infinitely in the console. So, that would imply that there is an issue with my code, however i am not getting any errors, and all of the ports are correct.
All that means is that you put that statement in a loop (this is okay). More importantly, it means that your code is being deployed and updated properly.
The posted code is just for driving the robot… Have you verified through the driver station that the joysticks are still connected?. Unplugging them and then plugging them back in while the driver station is up can cause them to no longer be recognized or read.
the light on the motor controllers(talons) do not change when the robot is enabled, they are always flashing orange. I will use the code tag from now on, sorry.
No need to apologize, most people don’t know about them. It just makes it easier to read.
The flashing talons means that they are note being communicated with. Can you verify that the talons are plugged into the correct ports and that they are plugged in correctly?
I took a look at the pwm’s and it turns out that someone had put them back in incorrectly when we moved the drive base over. So now, the code is working and we have made some modifications to it. However, our left and right turning seems to be inverted. could anyone tell me how to modify it so that it turns correctly? I have tried changing the pwm ports but it has not effect.
Updated Code:
package org.usfirst.frc.team4968.robot;
import edu.wpi.first.wpilibj.SampleRobot;
import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.Joystick;
import edu.wpi.first.wpilibj.Timer;
/**
* This is a demo program showing the use of the RobotDrive class.
* The SampleRobot class is the base of a robot application that will automatically call your
* Autonomous and OperatorControl methods at the right time as controlled by the switches on
* the driver station or the field controls.
*
* The VM is configured to automatically run this class, and to call the
* functions corresponding to each mode, as described in the SampleRobot
* documentation. If you change the name of this class or the package after
* creating this project, you must also update the manifest file in the resource
* directory.
*
* WARNING: While it may look like a good choice to use for your code if you're inexperienced,
* don't. Unless you know what you are doing, complex code will be much more difficult under
* this system. Use IterativeRobot or Command-Based instead if you're new.
*/
public class Robot extends SampleRobot {
RobotDrive myRobot;
Joystick stick;
public Robot() {
myRobot = new RobotDrive(1, 0);
myRobot.setExpiration(0.1);
stick = new Joystick(1);
}
/**
* Drive left & right motors for 2 seconds then stop
*/
public void autonomous() {
myRobot.setSafetyEnabled(false);
myRobot.drive(-0.5, 0.0); // drive forwards half speed
Timer.delay(2.0); // for 2 seconds
myRobot.drive(0.0, 0.0); // stop robot
}
/**
* Runs the motors with arcade steering.
*/
public void operatorControl() {
myRobot.setSafetyEnabled(true);
while (isOperatorControl() && isEnabled()) {
myRobot.arcadeDrive(stick); // drive with arcade style (use right stick)
Timer.delay(0.005); // wait for a motor update time
}
}
/**
* Runs during test mode
*/
public void test() {
}
}
That fixed the problem! thank you so much for all the help
IF you wouldn’t mind me picker your brain a little longer however, I notice that when We Drive the robot forward, the right motor turns starts sooner and goes faster, and when we drive it backwards the left one starts sooner and goes faster.
Could this be because we have all the motors motors hooked up with the same polarity, thus when one side of the motors are going forward, the other side’s motors are technically going backwards causing a slight delay?