It's where TF comes handy:
A nav_msgs::Odometry is published within a certain frame (field frame_id).
In the same time, your URDF model is also attached to some frame.
To make the robot move according to your odometry, you will need to produce a tf frame that describe where the robot is relative to the world. This transform correspond to the pose field of the odometry message.
Imagine you have a robot which main frame is "base_frame" and you are already producing an odometry message. Just produce a tf frame from "world" to "base_frame" that contains the pose values of your odometry message.
For more information and code example, see this tutorial.
Raph