An Arduino Uno contains a microcontroller, so you're all set there. Unless your friend had some other reason, like available code space.
A motor drive shield is certainly helpful for where you want an Arduino Uno to drive motors.
Power source would be a battery, which will contribute to the weight of the vehicle. The size of the battery would depend on the time of movement. Small battery for something that has to move for a few seconds, or a large battery for something that has to do it all day. Lightest batteries are lithium polymer.
Here's a design sequence;
- work out the time of movement you need,
- choose a chassis and motor set that will do what you need; 5kg at 6km/h,
- based on the current and voltage of the motors, calculate the power,
- based on the time of movement and the power, choose a battery that holds that much power for that much time,
- based on the current and voltage of the motors, select a motor drive shield, or make your own.
You may need to go through the design sequence a few times Hope that helps.