code: def stage0(object_folder: Path, logger=_DEFAULT_LOGGER):
      source_path = object_folder / "models" / "model_normalized.obj"
      target_path = object_folder / "kubric" / "visual_geometry_pre.glb"
  
      if target_path.is_file():
          logger.debug(f'skipping stage0 on "{object_folder}"')
          return  # stage already completed; skipping
  
      # --- pre-condition
      if not source_path.is_file():
          logger.error(
              f'stage0 pre-condition failed, file does not exist "{source_path}"'
          )
  
      # --- body
      logger.debug(f'stage0 running on "{object_folder}"')
      cmd = f"obj2gltf -i {source_path} -o {target_path}"
      retobj = subprocess.run(
          cmd, capture_output=True, shell=True, text=True
      )
      if "ENOENT" in retobj.stdout:
          logger.error(f"{retobj.stdout}")
      if retobj.returncode != 0:
          logger.error(f'obj2gltf failed on "f{object_folder}"')
          if retobj.stdout != "":
              logger.error(f"{retobj.stdout}")
          if retobj.stderr != "":
              logger.error(f"{retobj.stderr}")
  
      # --- post-condition
      if not target_path.is_file():
          logger.error(
              f'Post-condition failed, file does not exist "{target_path}"'
          )
  
imports: import argparse
  import json
  import logging
  from pathlib import Path
  import shutil
  import subprocess
  import sys
  import tarfile
  from typing import Tuple
  import trimesh
  from shapenet_synsets import CATEGORY_NAMES
  from trimesh_utils import get_object_properties
  import trimesh_utils
  from urdf_template import URDF_TEMPLATE
label_desc: Use image node_id 1 for calling a global function with example usage: stage0(object_folder, logger) without return types