From my last questions I understand that I have to do FFT on the root of I^2+Q^2
√(I2+Q2) just nets you the absolute value (amplitude) of a sample. Doing that for every sample gives you the envelope (red trace) of the signal
which isn't useful for what you want to do. Certainly not for computing distances or velocities.
Instead, treat the I, Q samples as complex numbers of the form I + Qj (where j is the imaginary unit) and compute the discrete fourier transform ("FFT") of that complex-valued data. Only then compute the absolute value (√(I2+Q2)) of each bin of the resulting spectrum.
Each spike in the spectrum then (ideally) corresponds to a target. With fixed targets, the frequencies of the spikes are proportional to the range to the respective targets while the amplitudes reflect the strength of the echoes.
- How would I get the velocity ?
With moving targets, the frequency of a spike is dependant on a combination of the radial velocity and range. With FMCW radar you are always measuring velocity as well, even when you'd rather not. This is because the doppler shift interferes with the distance-induced frequency difference being measured.
The frequency offset due to the doppler shift is unaffected by the direction and rate of a transmitted chirp (whether the frequency increases or decreases with time and how fast), while the range-induced frequency offset very much is affected. In the extreme case of transmitting a constant frequency, you are only sensing the velocity (via the doppler shift), hence such a radar is termed doppler radar.
This can be exploited to separate the range from the velocity by constantly changing chirp directions and rates and then performing some fancy math. How to do this in practice is outside the scope of an answer (and my brain).
- If the values of I/Q comes from an ADC which the values are from 0 to 2^16, is there a conversion that should be taken care?
Assuming that you are using floating point math and that you don't have a significant DC offset, I'd just map the I and Q samples from the input range [0, 216) to [-1, 1]. In essence, I = I/215-1, Q = Q/215-1.