Delaying FF1 will make the initial error spike worse.
You need to distinguish between 2 types of error spikes:
A: Errors during constant acceleration (that can be reduced with FF2)
These are relatively constant during the entire ramp up/ramp down
parts of a motion profile.
On a velocity mode servo systems these errors are for 2 reasons:
1. Finite servo drive velocity loop gain
2. Time delay between reading position and drives response to command
#1 can likely just be guessed at, #2 needs setting FF2 to the time (in seconds) between
position read and drive response.
B: Errors just at the beginning and end of motion.
These are due to the step in acceleration (infinite jerk) at the beginning and end of motion
and are unavoidable with 2nd order trajectory planners. This is because a step in acceleration
requires the force/torque to change instantly and this is not physically possible in servo systems.
The error can be minimized with better drive tuning or lowering the acceleration but the real solution
is to use a higher order trajectory planner. You might want to try LinuxCNC master's relatively new
jerk limited trajectory planner, it could use more testers...