View Single Post
  #18   Spotlight this post!  
Unread 28-10-2013, 22:04
EricH's Avatar
EricH EricH is offline
New year, new team
FRC #1197 (Torbots)
Team Role: Engineer
 
Join Date: Jan 2005
Rookie Year: 2003
Location: SoCal
Posts: 19,827
EricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond reputeEricH has a reputation beyond repute
Re: Optical sensors getting tricked

Quote:
Originally Posted by Ether View Post
The above makes no sense. I think perhaps you are misunderstanding what "closed loop" means.
Perhaps I should take a stab at explaining exactly what it means as we're referring to it...

...And reducing the variables (very few of the ones mentioned actually apply in closed-loop control).

Actually, I'll start out with: The only variables listed that would have ANY effect at ALL on, say, a shooter, would be the battery voltage (which really only affects open-loop controls--unless it's totally dead) and the load on the motors (they do have to take a bit of load when the disc goes through--but that's why you have closed-loop control). All of the others have no effect on the control system, or should have been dealt with in the design of the robot (like bearing stress--just get a bearing rated for the load, don't worry about the bearing stress).

Closed-loop control goes something like this: The cRIO sends a command to the speed controller to have the motor go speed X. The controller boosts the motor to speed X (as the controller sees it) by boosting power. A sensor on the shooter wheel indicates speed and sends a signal to the cRIO indicating the actual speed. The cRIO then compares the actual speed to the set speed and then tells the controller to increase power, decrease power, or keep the same power.

cRIO->Controller->Motor->Sensor->cRIO->Controller...

The program could look something like:
speed = 100
if (sensor < 95)
//speed increase
else if (sensor > 105)
//speed decrease


An open-loop control, by contrast, goes:
cRIO->Controller->Motor

and looks like:
speed = 100

in code.
__________________
Past teams:
2003-2007: FRC0330 BeachBots
2008: FRC1135 Shmoebotics
2012: FRC4046 Schroedinger's Dragons

"Rockets are tricky..."--Elon Musk