Robot With NXT Components

I want to make my first simple robot. I already have a bunch of old components from my lego NXT kit. Here is the build I'm thinking of using.

2 x 9V NXT Motors: Motor Specs 1 x Arduino Uno 1 x 9.6V NiMh Battery

Where I get confused is the motor controller. Should I buy a motor shield or can I just use an H-Bridge? I don't really understand why a motor shield is needed when a Dual H-Bridge Motor Driver does the same thing. If I should get a motor shield which one?

I don’t really understand why a motor shield is needed when a Dual H-Bridge Motor Driver does the same thing.

“does the same thing” for some motors, depending on voltage and current requirements.

Since the NXT motors are not high current/high voltage motors, use whichever device is available in the form factor that you need.

What about the battery? I'm not quite sure how to figure out what kind of battery to get. What is the math on that? I know that it has to be at least 9V to power the motor but what mAH should I get? Will 2000 work? Also, will a 9V battery be ok for powering the board?

I am starting to do the same thing. Using the Arduino Bots and Gadgets book, the first thing I need is to use the Ultrasonic sensor. I have found a forum which considers the commands needed for using a STAMP but I haven't yet found anything that uses Arduino's language. Anyone doing this?

Many of these have example code https://www.sparkfun.com/search/results?term=ultrasonic