Interesting topic you bring up @Gnash!
Just to summarize the previous posts, you are experiencing steady-state error and your implementation of a “fake Ki” is known as a feedforward constant.
Maybe a general answer to “integral or feedforward” is to note the pros and cons of their differences.
The main difference being: the integral term is reactive while a feedforward constant is proactive. The integral is calculated as the system is running, so any effects it has on the feedback loop would be considered reactive. Meanwhile, a feedforward term is determined either mathematically or experimentally before the action, making it proactive.
Pros and Cons of Reactive Control (Feedback Control)
In some VRC challenges, it can be widely unpredictable how much load the robot has. For example, during the ITZ season, a robot driving with no ( ~3 lb) mobile goal behaved differently than a robot with just one mobile goal or one with a full stack of cones. Now what happens if the mobile goal slipped out or the stack of cones got knocked over? A similar situation could be considered with Tower Takeover too. Using an integral term to correct the chassis movements would be beneficial since it could adapt to any number of those situations without specifying each and every case. With that being said, integral correction is not going to be perfect. Your integral may grow too slow, or it may accumulate too fast and result in an overshoot of the target. Some solutions to this may include setting a bound in which the integral is collected, reseting the integral if you pass the target, or limiting the maximum sum of the integral. In some cases, this may result in more time tuning than its worth. For that reason, @tabor473 just suggested that you retune the PD terms.
As @jrp62 mentions, feedback could be one way to hold something in place as it can determine how much power is needed.
Pros and Cons of Proactive Control (Feedforward Control)
If you have a consistent or predictable system, this is probably a quicker solution to implement. Unlike tuning a kI, this is more straightforward to determine. As mentioned above, you could experimentally determine the minimum speed to keep the system moving. However, this may not be the optimum solution for all situations. You could also use math to determine how much “holding power” is needed to counter act the force of gravity on an arm at different angles. (Try: hold a weight straight forward vs 15 degrees from your waist. Which is easier? What happens when you raise the weight past horizontal?) Another drawback with feedforward could be that you need a good approximation to begin with.
Based on your knowledge of the system you are working with, the best way to choose which approach you take is by weighing their advantages and disadvantages. Hope this gave you more insight! 