---
title: "GAZEBO. Como cargar un archivo world"
description: "En este artículo vamos a ver como cargar en Gazebo un archivo world. Para ello vamos a usar los archivos world que Gazebo incluye como ejemplos en su instalación, los cuales se encuentran en la siguiente ruta usr/share/gazebo-/worlds. También podemos ver en este repositorio de GitHub la lista con todos los archivos world incluidos con […]"
featured_image: "https://robotica-facil-con-ros2.es/wp-content/uploads/2022/07/id2889p-gazebo-load-world.png"
url: "https://robotica-facil-con-ros2.es/?p=2889"
date_modified: "2026-07-06T07:11:50+00:00"
---

En este artículo vamos a ver como cargar en Gazebo un archivo world. Para ello vamos a usar los archivos world que Gazebo incluye como ejemplos en su instalación, los cuales se encuentran en la siguiente ruta **usr/share/gazebo-/worlds.**

![Ejemplos de archivos world incluidos en Gazebo](http://robotica-facil-con-ros2.es/wp-content/uploads/2022/07/id2889-gazebo-world-examples.png)

También podemos ver en este [repositorio de GitHub](https://github.com/osrf/gazebo/tree/gazebo11/worlds) la lista con todos los archivos *world* incluidos con Gazebo.

Los modelos de los objetos utilizados en estos ejemplos se encuentran almacenados en la siguiente ruta **~/.gazebo/models.**

### Desde la línea de comando de un terminal

Desde el terminal podemos cargar un archivo *world* de la siguiente forma:

gazebo &lt;archivo_world&gt;

Donde <archivo\_world> es la ruta al archivo world, pudiendo ser:

    - Relativa al directorio actual.
    - Absoluta.
    - Relativa a una ruta que se encuentre en la variable de entorno **GAZEBO\_RESOURCE\_PATH**.
    - ***worlds/<archivo.world>*** siendo en este caso uno de los archivos world que Gazebo incluye.

Por ejemplo, el siguiente comando ejecutará Gazebo (tanto el servidor como el cliente) y cargará el archivo *cafe.world*. 

gazebo worlds/cafe.world

![gazebo cafe.world](http://robotica-facil-con-ros2.es/wp-content/uploads/2022/07/id2889-gazebo-cafe-world.png)

Si solo queremos ejecutar el servidor pero no el cliente (interfaz gráfico), simplemente sustituimos *gazebo* por ***gzserver*** en la línea de comando.

### Desde un archivo launch usando ROS2

Para lanzar Gazebo y cargar un archivo *world* desde ROS2 tendremos que realizar los siguientes pasos:

    1. Crear un paquete Python (o usar uno que ya tengamos).
    2. Añadir una carpeta ***launch*** y crear en su interior un archivo ***.launch.py***
    3. Añadir una carpeta ***worlds*** donde ubicaremos el archivo *world* que queramos cargar.
    4. Añadir una carpeta ***models*** donde ubicaremos los archivos de los modelos que use el archivo *world*.
    5. Modificar el archivo ***setup.py*** del paquete para incorporar a ***data\_files*** las rutas de los archivos que queremos que se copien en la instalación del paquete.

Si necesitas más información sobre como realizar estos pasos puedes ver los siguientes artículos:

    - [ROS2. Cómo crear un paquete Python.](https://robotica-facil-con-ros2.es/?p=3078)
    - [ROS2. Añadiendo carpetas adicionales a nuestro paquete Python.](https://robotica-facil-con-ros2.es/?p=3186)

Vamos a usar un paquete de ejemplo, al que he llamado *gazebo\_world\_launch*, que podemos descargar desde [GitHub](https://github.com/joseecm-github/gazebo_world_launch) o clonarlo ejecutando el siguiente comando desde un teminal: 

git clone https://github.com/joseecm-github/gazebo_world_launch

Como puede verse en la siguiente imagen el paquete ya incluye las carpetas *launch*, *worlds* y *models*. En la carpeta *worlds* hemos ubicado el archivo *table.worl*d y dentro de la carpeta *models* se encuentra la información de los modelos que usa: *ground\_plane*, *sun* y *table*.

![Estructura del paquete gazebo_world_launch](http://robotica-facil-con-ros2.es/wp-content/uploads/2022/07/id2889-gazebo-world-package.png)

Si abrimos el archivo ***gazebo\_world.launch.py*** podemos ve el código empleado para lanzar Gazebo y cargar el archivo *table.world*.  En los comentarios añadidos se explica para que sirven las diferentes líneas. 

import os
from launch import LaunchDescription
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch_ros.substitutions import FindPackageShare
 
def generate_launch_description():
 
  # Obtenemos la ruta del paquete Gazebo ROS.
  pkg_gazebo_ros = FindPackageShare(package=&#039;gazebo_ros&#039;).find(&#039;gazebo_ros&#039;)   
  
  # Obtenemos la ruta de instalaci&oacute;n de nuestro paquete.
  pkg_install_path = FindPackageShare(package=&#039;gazebo_world_launch&#039;).find(&#039;gazebo_world_launch&#039;)
 
  # Obtenemos la ruta del archivo world, que est&aacute; almacenado en la
  # carpeta worlds del paquete.
  world_file = &#039;table.world&#039;
  world_path = os.path.join(pkg_install_path, &#039;worlds&#039;, world_file)
   
  # Obtenemos la ruta de la capeta models que es donde se encuentra
  # la informaci&oacute;n del modelo que es empleado en nuestro archivo world
  # y la guardamos en la variable de entorno GAZEBO_MODEL_PATH, que
  # contiene las rutas donde busca Gazebo. 
  gazebo_models_path = os.path.join(pkg_install_path, &#039;models&#039;)
  os.environ[&quot;GAZEBO_MODEL_PATH&quot;] = gazebo_models_path
   
  # Creamos una acci&oacute;n para ejecutar el archivo gzserver.launch.py,
  # que se encuentra dentro de la carpeta launch del paquete
  # Gazebo Ros. Lo que hace es arrancar el servidor de Gazebo
  # cargando el archivo world que pasamos como argumento.
  start_gazebo_server_cmd = IncludeLaunchDescription(
    PythonLaunchDescriptionSource(os.path.join(pkg_gazebo_ros, &#039;launch&#039;, &#039;gzserver.launch.py&#039;)),
    launch_arguments={&#039;world&#039;: world_path}.items())
 
  # Creamos una acci&oacute;n para ejecutar el archivo gzclient.launch.py,
  # que se encuentra dentro de la carpeta launch del paquete
  # Gazebo Ros. Lo que hace es arrancar el cliente de Gazebo, que  
  # es la interfaz gr&aacute;fica.
  start_gazebo_client_cmd = IncludeLaunchDescription(
    PythonLaunchDescriptionSource(os.path.join(pkg_gazebo_ros, &#039;launch&#039;, &#039;gzclient.launch.py&#039;)),
    )
 
  # Devolvemos un objeto LaunchDescription con las acciones que queremos 
  # realizar.
  return LaunchDescription([
    start_gazebo_server_cmd,
    start_gazebo_client_cmd
    ])

Antes de usar el paquete tenemos que compilarlo. Para ello ejecutamos colcon build desde el directorio raíz de nuestro espacio de trabajo.

colcon build --packages-select gazebo_world_launch

Y por último ejecutamos el archivo launch.

ros2 launch gazebo_world_launch gazebo_world.launch.py

![Ejemplo de archivo world de Gazebo](http://robotica-facil-con-ros2.es/wp-content/uploads/2022/07/id2889-gazebo-table-world.png)