First Simulation#
This tutorial will guide you through running a simple navigation simulation example.
Prerequisites#
Ensure you have completed the Installation steps.
Basic Example#
Create a new file my_first_sim.py:
import omninav
from omninav import OmniNavEnv
# Initialize environment
env = OmniNavEnv(config_path="configs/config.yaml")
# Reset environment, get initial observation
obs = env.reset()
print(f"Robot initial position: {obs['robot_state'].position}")
print(f"Goal position: {obs.get('goal_position', 'N/A')}")
# Run simulation loop
step_count = 0
while not env.is_done:
# Calculate action using algorithm specified in config
action = env.algorithm.step(obs)
# Execute one simulation step
obs, info = env.step(action)
step_count += 1
if step_count % 100 == 0:
print(f"Step {step_count}: Position = {obs['robot_state'].position[:2]}")
# Get evaluation result
result = env.get_result()
print(f"\n=== Simulation Ended ===")
print(f"Success: {result.success}")
print(f"Total steps: {step_count}")
print(f"Metrics: {result.metrics}")
# Cleanup resources
env.close()
Run:
python my_first_sim.py
Using Visualization#
Enable Genesis Viewer to see the simulation process:
# Method 1: Via config file
# Set in configs/config.yaml:
# simulation:
# show_viewer: true
# Method 2: Via code override
from omegaconf import OmegaConf
cfg = OmegaConf.load("configs/config.yaml")
cfg.simulation.show_viewer = True
env = OmniNavEnv(cfg=cfg)
Custom Configuration#
You can custom the simulation by modifying the config file:
# configs/config.yaml
defaults:
- robot: go2 # Use Go2 robot
- algorithm: apf # Use Artificial Potential Field algorithm
- task: point_nav # Point-to-Point Navigation task
simulation:
backend: "gpu" # Use GPU acceleration
dt: 0.01 # Simulation step size
show_viewer: true # Show visualization window
Next Steps#
Check out Robot Configuration
Learn how to Integrate Custom Algorithms
Explore Evaluation System