后来自己摸索着解决了。
URDF里面依然采用 <mesh filename="package://.... />
但在launch文件里要配置GAZEBO_MODEL_PATH环境变量
pkg_share = os.pathsep + os.path.join(get_package_prefix(package_name), 'share')

if 'GAZEBO_MODEL_PATH' in os.environ:
os.environ['GAZEBO_MODEL_PATH'] += pkg_share
else:
os.environ['GAZEBO_MODEL_PATH'] = pkg_share