I have been trying my hand at animating with grease pencils, but found that keyframes do not behave with grease pencils as they do with standard meshes. When you put a keyframe for the clouds in this picture for changing positions, it doesn't gradually calculate the position change from keyframe to the next keyframe like you would expect. Instead, it just jumps to the next position only when it hits the frame where you made the next keyframe. Kinda complicated, but here is a snapshot.
So a youtube suggested video showed how there is an interpolate button in the Grease Pencil Left Panel. This allows blender to calculate frames between keyframes. Here is a link to the video. https://www.youtube.com/watch?v=jULE3Gohi9I
Be careful using Bezier vs. Linear interpolation! The animated objects will get from point A to point B over the same number of frames, but the frame-by-frame motion of the two is quite different.
Linear interpolation does what it says; with every frame there is the same amount of motion.
Bezier interpolation has variable acceleration Frame by frame motion will not match the linear curve.
An example of Linear motion- A cloud drifting by usually has the same apparent speed; we are not used to seeing them speed up or slow down.
Bezier motion- A door swinging open starts slow, goes faster, and slows again before closing gently.
Under the dope sheet or graph editor "key" tab, make sure that the interpolation mode is set to either "linear" or "bezier". It might be that the default interpolation mode for grease pencil objects is constant. Constant is what makes the animation jumpy. (If you want to be able to change the acceleration at different times for the objects, choose bezier because then in the graph editor you can grab the little handles and rotate them, changing the acceleration/deceleration speeds)
Hope this works!!