How to locate objects, and move towards them, without pre-programming the path
If the ultrasonic cannot echo-locate the objects because they're too small, even with the sensor suspended very close to the floor, I suggest using a very sensitive feeler out front. It can be sticking forward like a jousting lance, and your robot can swivel back &amp; forth while traveling to scan.

The trick to making it very sensitive is to:
(1) make it pivot at its base on the front of the robot with a smooth pin,
(2) make it long and lightweight (use long axles),
(3) mount two opposed touch sensors as close to the pivot point as possible, and
(4) pre-load the touch sensors such that minimal travel is necessary to trigger each one.

The same techniques can be applied with a large diameter roller out front (like a steam roller) to detect any bumps on the floor (if the objects are kind of flat).