PDA

View Full Version : Robot seems to be Disabled when using Jaguars


Thxe
02-11-2009, 05:20 PM
ok, I am writing my first basic program for the robot. I know the robot is in functioning order because i can load and run the Simple Template and that works. Unfortunatly when I run my program, nothing happens. I know that values are being read in from the joystick because I have some printfs and the console. Here is the weird thing, even while the robot is enabled, the signal light continues to blink like its in disabled mode. When I use the Simple Template, the light works correctly.

Here is the relevant code:

class Robot : public IterativeRobot
{
Jaguar *leftDrive;
Jaguar *rightDrive;
Joystick *stick;

public:
void RobotInit(void)
{
printf("RobotInit:\n");
leftDrive = new Jaguar(4, 1);
rightDrive = new Jaguar(4, 2);
GetWatchdog().SetExpiration(0.1);
}

void TeleopPeriodic()
{
printf("TeleopPeriodic:\n");
drive();
}

void drive()
{
float joyX = stick->GetX();
float joyY = stick->GetY();
float leftPower;
float rightPower;

printf("joyX: %f\n", joyX);
printf("joyY: %f\n", joyY);
rightPower = joyY;
leftPower = joyY;
printf("rightPower: %f\n", rightPower);
printf("leftPower: %f\n", leftPower);
rightDrive->Set(rightPower);
leftDrive->Set(leftPower);
printf("rightDrive: %f\n", rightDrive->Get());
printf("leftDrive: %f\n", leftDrive->Get());
}
};

START_ROBOT_CLASS(Robot);


Here is a relevant section from the console:

TeleopPeriodic:
joyX: 0.000000
joyY: -0.476563
rightPower: -0.476563
leftPower: -0.476563
rightDrive: -0.476563
leftDrive: -0.476563


It seems to me that the code is working correctly, has anybody seen this business with the signal light showing disabled while the robot is enabled? I believe that this is the problem. Any ideas are welcome.

Thxe

Thxe
02-11-2009, 08:59 PM
Ok, I found the problem myself. I wasn't feeding the watch dog! It should be noted that the watch dog does not stop your code from executing, it only prevents commands to motors and such from going through, with no error messages at all! So if you see your signal light doing the disabled blink while your robot is enabled, it may be because the watch dog timed out.

Thxe

MattD
02-11-2009, 09:01 PM
It looks like this is because the watchdog is not being fed, so the motor outputs are disabled. Add in GetWatchdog().Feed() to your teleop function and it should work.