How do I make two objects collide? (Not referring to rigid body or collision physics)
The Follow Path constraint comes close to what you want to achieve.

Advanced Follow Path Setup


We need a path (curve object) to follow. If you have a mesh, you need to convert it. Go into edit mode (Tab) and select an edge loop with Alt+Click, which you want the object to follow.
Duplicate it the edges. Shift+D
Separate the duplicated edges. P > Selection
Go into object mode and select the separated edge loop.
Convert it to a curve. Alt+C This will generate a Poly curve.
[Optional] is probably a better approximation of the needed path if the curve is a bezier with automatic handles. Go into edit mode of the curve. From the Tools menu, click on Set Spline Type > BezierSelect all vertices (A) and set their Handles to Auto in the Tools menu.
In case the origin of our object is in the center and has to be offset from the ground, we will use a simple rig of empties. Create two empties and parent one (circle) to the other (cube). Ctrl+P
Select the parent empty (cube) and add a Follow Path ** constraint.Set the **Target property to the created curve. Check Fixed Position. The empty snaps to the start of the curve. By changing the Offset property, we can slide the empty along the path. Animate the Offset property, from 0 to 1 over the duration of the scene.
Position the mesh correctly above the ground at the starting position. Snap the cursor to the mesh's center. Then snap the child empty to the cursor. Add a Copy Location constraint from the child empty (circle) to the mesh.The rotation of the mesh can be easily animated.