Unmanned Ground Vehicle - Motor control

I'm working on a project for a vehicle capable of driving itself through unknown terrain, and I'm having issues with the motor controller.

It uses
ARDUINO UNO Rev 3 as microcontroler
3x 12V DC motors

I have little time and budget so I cannot buy a motorshield that takes more than 3A in each motor.
It was suggested to use MUSFET to control the motors without damaging the arduino board, but only 1 MUSFET cannot control all the motors separately.

It doesn't have to run the motors on reverse, but it must allow them to be controlled separately.

What kind of circuit would allow me that? Would multiple MOSFET allow that?
Thank you~~

Yes, simple, inexpensive, logic level, Low Rds, N-channel MOSFET
AOI514

Get one for each motor.

For N-channel MOSFET, GateSignal = 1023 is equivalent to logic 1, so, in order to control the vehicle's speed, I would need to change the speed. Is the relationship between the voltage on the circuit linearly proportional to the GateSignal number?

What is "GateSignal"? It sounds like that's a variable within your program or library.

The Arduino analogWrite() can be used for values between 0 and 255. The average output voltage is linear with the value. The power isn't, which is why you will need to experiment to find what works for your motors.