You could do this with a pencil and a paper. I'm not going to go into all the steps because it would devalue your learning.
First draw your control system and label each 'thing' in your system (controllers, motors, ADC's, encoders, ect) and also figure out what the relationship of the control signal and relationship of the physical units (voltage, current, RPM and digtial signals if you have them) of your system between them. Once you have an idea of how you would drive you system and what it looks like.
Then record some data to build a model for the motor (and drivers)
First do this open loop, vary the input out of the controller and record the values going into the controller. Put a step input into the 'Plant' and figure out what the open loop response is. Find the steady state response. Does it have overshoot? (hint the step response has a frequency response in the laplace domain and FFT's are a great way to get stuff into the frequency world)
Figure out what kind of 'plant' you have from this data(its probably only going to have 1 or 2 poles and zeros) by using the steady state response.
You could also input a known frequency and then sweep the frequency higher and higher and then observe the output. This can be useful for finding frequency cutoffs.
Once you have figured out a model for your plant, from the open loop case you can start designing a controller. Do you have a digital or analog controller. If it's digital you will probably want to transfer the open loop plant to the z-domain and do your analysis there.
Another option is to run a digital PID controller on your Arudino and tune it.