PID does not always need to be reactive. In general terms, there is a further thing you can add called FeedForward, which you can apply to either velocity or acceleration, as the case may be. The basic idea with Feedforward is that you know you'll be moving in a certain direction anyway, so give a little boost to your velocity or acceleration, then let the rest of PID react once you get going.
I've taught PID to quite a range of people. I really ought to do a youtube video, so i don't have to perform it as much.
The basic idea for PID is that it corrects for errors. if you make a PID loop based on position, it will move your motors such that the position is what you want. you can replace the word position with the words velocity, angle, and even acceleration or motor current. you can also loop multiple parts of your motion. (i.e. Loop position and velocity), but for FIRST, you usually only need to put a loop around one thing.
Let's use position for discussion, which is easiest to visualize. First, you need a way to measure your position (an encoder can be used for position or velocity, the gyro or an accelerometer can measure angular data.). The difference between the position you are in, and the position you want to be in, is your error. PID acts on this error to try and make it 0.
In a typical machine tool (like a CNC machine (Hey look, FIRST applies to the real world

)), you want to position an axis. Say the axis is currently at zero, and you want to move it a meter. Your commanded position is 1m, and your actual is 0m, making your error +1m. (The sign is important!). Proportional Gain is a number we multiply by the error to get a motor command. Sometimes this is a speed (engineering unis such as m/s), or in our case, it is a motor command in the range of -1 to +1. Let's say our proportional gain is 0.5. 0.5(gain)*1m(error) = 0.5(command), which moves our motor towards where it is supposed to go.
For the sake of discussion, let's say our motor is geared such that a command of 1 means the mechanism in question is moving at 1m/s. That is also the top speed of the motion, since the command cannot be greater than 1.
PID loops execute repeatedly in your Periodic tasks, so they occur with a fixed time base. To demonstrate, I've put this together as an excel worksheet, and posted it to
my blog. The sheet lets you play with some different PID settings, and lets you look at how the mechanism will move based on the commanded velocity.
I finish the discussion of PID there. (That post is based on this one)
Simulating the bridge in excel is a bit harder, since you need to keep track of the CG of the bridge and everything on it, and use that (as well as inertia) to model the bridge actual angle. The basic PID concepts follow along, but the response of the bridge is not a 1:1 relationship with what you command for motor velocity.