Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Random Rookie Programmer Question About Timer and Watchdog (http://www.chiefdelphi.com/forums/showthread.php?t=130631)

Arbalest007 23-09-2014 16:39

Random Rookie Programmer Question About Timer and Watchdog
 
Hi guys, I just started programming for FRC this year in Java. However, I'm kinda confused over how to effectively use all the methods in the Watchdog() class like the feed method. Should I be using watchdog in the tele-operator section of the class to disable the robot in case I don't move it in a long time...or is it just for enabling safety on the robot before it is switched to autonomous or tele-operated mode? Also, I looked over the "Beginning with Java FRC" guide on Google, but I don't understand what the Timer class/methods are used for (i.e. why do I need to use Timer.delay(xx) within the teleoperated section of the class)?

mwtidd 23-09-2014 17:04

Re: Random Rookie Programmer Question About Timer and Watchdog
 
Quote:

Originally Posted by Arbalest007 (Post 1401223)
Hi guys, I just started programming for FRC this year in Java. However, I'm kinda confused over how to effectively use all the methods in the Watchdog() class like the feed method. Should I be using watchdog in the tele-operator section of the class to disable the robot in case I don't move it in a long time...or is it just for enabling safety on the robot before it is switched to autonomous or tele-operated mode? Also, I looked over the "Beginning with Java FRC" guide on Google, but I don't understand what the Timer class/methods are used for (i.e. why do I need to use Timer.delay(xx) within the teleoperated section of the class)?

You shouldn't have to touch the watchdog. I'm guessing you're seeing the watchdog not fed enough warning.

This is often the result of using Timer.delay in the wrong way.

When you call Timer.delay, it "pauses" the code for that amount of time. To the robot, it is as though you are telling it to close it's eyes and do something for that amount of time.

Your robot does however need to "blink", but I recommend trying out IterativeRobot, because the WPI code will handle that. Only if you're using SimpleRobot would I use Timer.delay at all. (One more piece of advice, a SimpleRobot is not necessarily the simplest to implement, the naming convention tricked me for quite some time)

Here is a previous post where I described how I approach time based tasks.

http://www.chiefdelphi.com/forums/sh...43#post1349743

You'll also notice that there was a post after mine, if you know why not, then you are well along your way....

Cel Skeggs 04-10-2014 13:40

Re: Random Rookie Programmer Question About Timer and Watchdog
 
Quote:

Originally Posted by lineskier (Post 1401227)
(One more piece of advice, a SimpleRobot is not necessarily the simplest to implement, the naming convention tricked me for quite some time)

Quick note about that - in the 2015 software, it's renamed to SampleRobot to attempt to clarify this issue, as lots of teams have been confused by it.

Also, good explanation!

lamk 05-10-2014 22:24

Re: Random Rookie Programmer Question About Timer and Watchdog
 
Quote:

Originally Posted by Arbalest007 (Post 1401223)
Hi guys, I just started programming for FRC this year in Java. However, I'm kinda confused over how to effectively use all the methods in the Watchdog() class like the feed method. Should I be using watchdog in the tele-operator section of the class to disable the robot in case I don't move it in a long time...or is it just for enabling safety on the robot before it is switched to autonomous or tele-operated mode? Also, I looked over the "Beginning with Java FRC" guide on Google, but I don't understand what the Timer class/methods are used for (i.e. why do I need to use Timer.delay(xx) within the teleoperated section of the class)?

In simplerobot template. you have to do your own looping. The timer.delay(xx) in teleop is to control the refresh rate. If you don't put in the timer.delay than you will be running the loop as fast as possible and tie up the cpu 100%. We learn this the hardway. In iterativerobot template the looping is done for you.
You want the teleop loop to keep pace with the driver station so each loop coincide with a new package that is send form the driver station. If you loop too fast there is no advantage except tying up your cpu and you will have problem with things like visual processing.. If you loop too slow than the robot will not react fast enough to things like joystick input.
The iterative robot/ driver station refresh at 50 hz ie every 20ms.
Watchdog is now deprecated.
Use motor safety feature instead.
http://wpilib.screenstepslive.com/s/...safety-feature


All times are GMT -5. The time now is 11:01.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi