Find the part you want to learn about
The simulator combines maps, route planning and robot control.
Try it step by step
- Create a world to see the parts working together.
- Use terrain for map and depth questions.
- Use Python control to send your own robot commands.
- For source code, follow the public library links in the advanced section below.
Advanced: details and reference
Public libraries
| Library | Use and structure |
|---|---|
| POSIM-Terrain | Python geographic sampling, land/ocean source selection, mesh/SDF export and visual textures |
| POSIM-Routing | Python global, coastal and local route planners; depends on POSIM-Terrain |
| POSIM-Control | Python motion policies and C++ Gazebo leader/follower propulsion plugins |
POSIM-Terrain
POSIM-Terrain turns a geographic region into land and seabed geometry. It combines available elevation and bathymetry sources. The numeric field supplies the terrain mesh and route collision checks; Sentinel-2 imagery supplies the land texture.
- Input: latitude, longitude, region size and grid samples
- Output: numeric elevations, meshes, SDF, textures and source manifests
- Direct use: generate a region or load a city terrain bundle
See the terrain library README for installation, satellite texture preparation and export commands.
POSIM-Routing
POSIM-Routing plans the global itinerary and connections to arrival water. OSM land polygons guide port connections. Coastal and local planners check represented terrain before selecting a path. Port catalogue positions and water arrival targets are separate inputs.
- Input: departure, destination, passage gates and numeric terrain
- Output: global routes, coastal corridors and local waypoints
- Direct use: export a maritime route or plan a path across generated terrain
See the routing library README for route commands and planner APIs. A global route alone does not establish water depth.
POSIM-Control
POSIM-Control applies propulsion to Gazebo vehicle models. The leader follows supplied waypoints; the follower follows measured leader poses. Python policies use observed motion to set speed limits and assess stability, progress and recovery.
- Input: checked waypoints, speed requests and measured vehicle state
- Output: propulsion commands, controller status and motion policy decisions
- Direct use: use Python policies or build the native leader/follower plugins
See the control library README for model requirements, plugin builds and control topics. Native plugins require Gazebo development packages in a configured POSIM environment.
Each library has English/Korean instructions, source structure, installation commands and tests. WWW-POSIM pins the engine and libraries as Git submodules. Its runtime adapters import their implementations; packaging includes the pinned source packages.
git submodule update --init --recursive
The website and workspace services coordinate the libraries. Session ownership, accounts, video delivery, voyage checkpoints and AIS display belong to WWW-POSIM.
How they work together
POSIM-Terrain generates the geographic field. POSIM-Routing uses that field to plan and check paths. POSIM-Control follows approved waypoints while Gazebo computes physical motion. WWW-POSIM observes the resulting state and coordinates subsequent terrain, route and control updates.
The web workspace and installed app use the same pinned implementations. For POSIM models, sensors and engine setup, see the POSIM library guide.
City terrain examples
POSIM-Terrain examples include New York, Busan and Tokyo. Each region contains both land and ocean terrain.
- Region size: 20 × 20 km
- Numeric grid: 257 × 257 vertices
- Grid spacing: 78.125 m
- Sources: GEBCO 2026, Copernicus GLO-30 and available regional bathymetry
The bundles include meshes, SDF, numeric arrays, Sentinel-2 land textures and source manifests. Gazebo 3D world captures accompany each city. Their README explains how to regenerate them. Output grid spacing does not increase source measurement accuracy. See terrain and datasets for source assumptions.