og-nav


Nameog-nav JSON
Version 0.1.1.dev0 PyPI version JSON
download
home_pageNone
SummaryA modular navigation system for robot navigation in OmniGibson environments.
upload_time2025-07-26 04:43:07
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords robotics navigation omnigibson path-planning robot-control
VCS
bugtrack_url
requirements omnigibson matplotlib
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # OG Nav - Modular Navigation System

[![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)
[![PyPI](https://img.shields.io/pypi/v/og_nav.svg)](https://pypi.org/project/og_nav/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![OmniGibson](https://img.shields.io/badge/OmniGibson-Compatible-green.svg)](https://github.com/StanfordVL/OmniGibson)

A comprehensive, modular navigation system designed for robot navigation in OmniGibson environments. This package provides a clean, well-structured interface for path planning, robot control, occupancy grid mapping, and visualization.

## ๐Ÿš€ Features

### ๐Ÿงญ **Unified Navigation Interface**
- Clean, intuitive API for seamless robot navigation
- Automatic path planning and goal tracking
- Real-time navigation state management
- Interactive keyboard controls for manual path planning

### ๐Ÿ—บ๏ธ **Advanced Path Planning**
- Integration with OmniGibson's built-in path planning
- Point availability validation and collision checking
- Visual waypoint markers with interactive controls
- Automatic nearest available point finding

### ๐ŸŽฎ **Sophisticated Control Systems**
- **Pure Pursuit Algorithm**: Advanced path following with configurable lookahead
- **PID Controllers**: Precise velocity and heading control
- **Dynamic Action Management**: Automatic action tensor generation for Tiago robot
- Support for both base movement and arm pose management

### ๐Ÿ—บ๏ธ **Occupancy Grid Mapping**
- Real-time occupancy grid generation using OmniGibson
- Configurable map resolution and update strategies
- Automatic robot occlusion handling for accurate mapping
- Export capabilities for various map formats

### ๐ŸŽจ **Rich Visualization**
- Interactive 3D markers for start/goal/waypoints
- Real-time path visualization in OmniGibson viewer
- Keyboard shortcuts for intuitive navigation control
- Customizable marker colors and sizes

### โš™๏ธ **Flexible Configuration System**
- YAML-based configuration with intelligent defaults
- Module-specific configurations with override hierarchy
- Constructor arguments > YAML config > Module defaults
- Automatic visualization marker generation

## ๐Ÿ› ๏ธ Installation

### Prerequisites
- Python 3.8 or higher
- OmniGibson (latest version)
- NVIDIA GPU with CUDA support (recommended)

### Install from PyPI (Recommended)

```bash
pip install og_nav
```

### Development Installation

```bash
# Clone the repository
git clone https://github.com/Gonglitian/og_nav.git
cd og_nav

# Install in development mode
pip install -e .
```

### Dependencies
The package automatically installs the following dependencies:
- `omnigibson` - Physics simulation and robotics framework
- `torch` - Deep learning framework (used for tensor operations)
- `numpy` - Numerical computing
- `opencv-python` - Computer vision and image processing
- `matplotlib` - Plotting and visualization
- `pyyaml` - YAML configuration file support

## ๐Ÿ“– Quick Start

### Basic Navigation Example

```python
import omnigibson as og
from og_nav import NavigationInterface
from og_nav.core.config_loader import NavigationConfig

# Create environment
config_path = "og_nav/configs/navigation_config.yaml"
nav_config = NavigationConfig(config_path=config_path)
env = og.Environment(configs=nav_config.get_omnigibson_config())
robot = env.robots[0]

# Initialize navigation system
navigator = NavigationInterface(env, robot, nav_config.og_nav_config)

# Set navigation goal
navigator.set_goal((2.0, 3.0))  # Move to position (2.0, 3.0)

# Main navigation loop
while not navigator.is_arrived():
    navigator.update()
    env.step([])

print("๐ŸŽ‰ Navigation completed!")
```

### Advanced Usage with Custom Configuration

```python
from og_nav import NavigationInterface, NavigationConfig
from og_nav.planning import PathPlanner
from og_nav.control import PathTrackingController
from og_nav.mapping import OGMGenerator

# Custom configuration
custom_config = {
    'controller': {
        'lookahead_distance': 0.8,
        'cruise_speed': 0.7,
        'max_angular_vel': 0.3
    },
    'ogm': {
        'resolution': 0.05
    },
    'visualization': {
        'enable': True,
        'n_waypoints': 100
    }
}

# Initialize with custom config
navigator = NavigationInterface(env, robot, custom_config)

# Use individual components
planner = PathPlanner(env, robot, config=custom_config.get('planning', {}))
controller = PathTrackingController(robot, config=custom_config['controller'])
mapper = OGMGenerator(config=custom_config['ogm'])
```

## ๐ŸŽฏ Interactive Controls

When running with visualization enabled, use these keyboard shortcuts in the OmniGibson viewer:

- **Z** - Set start point at camera position
- **X** - Set goal point at camera position  
- **V** - Plan path between start and goal
- **C** - Clear all waypoints and markers

## ๐Ÿ“ Project Structure

```
og_nav/
โ”œโ”€โ”€ __init__.py                    # Main package interface
โ”œโ”€โ”€ core/                          # Core navigation components
โ”‚   โ”œโ”€โ”€ navigation.py             # Main NavigationInterface class
โ”‚   โ”œโ”€โ”€ config_loader.py          # Unified configuration management
โ”‚   โ””โ”€โ”€ constants.py              # System constants
โ”œโ”€โ”€ planning/                      # Path planning algorithms
โ”‚   โ”œโ”€โ”€ path_planning.py          # PathPlanner with OmniGibson integration
โ”‚   โ””โ”€โ”€ utils.py                  # Planning utilities
โ”œโ”€โ”€ control/                       # Robot control systems
โ”‚   โ”œโ”€โ”€ controllers.py            # Pure Pursuit and PID controllers
โ”‚   โ””โ”€โ”€ control_utils.py          # Joint and action management utilities
โ”œโ”€โ”€ mapping/                       # Occupancy grid mapping
โ”‚   โ””โ”€โ”€ occupancy_grid.py         # OGMGenerator for real-time mapping
โ”œโ”€โ”€ demos/                         # Example demonstrations
โ”‚   โ””โ”€โ”€ navigation_demo.py        # Complete navigation demo
โ”œโ”€โ”€ configs/                       # Configuration files
โ”‚   โ”œโ”€โ”€ navigation_config.yaml    # Main navigation configuration
โ”‚   โ””โ”€โ”€ config.example.yaml       # Example configuration template
โ”œโ”€โ”€ ogm_cv2_window/               # OpenCV visualization tools
โ”‚   โ””โ”€โ”€ ui.py                     # Interactive UI components
โ””โ”€โ”€ assets/                        # Documentation and resources
    โ”œโ”€โ”€ *.png                     # Example images
    โ””โ”€โ”€ *.md                      # Technical documentation
```

## โš™๏ธ Configuration

### YAML Configuration Structure

```yaml
og_nav:
  # Occupancy Grid Mapping
  ogm:
    resolution: 0.1               # Map resolution in meters
    
  # Path Planning  
  planning:
    # Algorithm-specific parameters
    
  # Path Tracking Controller
  controller:
    lookahead_distance: 0.5       # Pure pursuit lookahead (m)
    cruise_speed: 0.5             # Forward speed (m/s)
    max_angular_vel: 0.2          # Max rotation speed (rad/s)
    waypoint_threshold: 0.2       # Arrival threshold (m)
    
  # Robot Configuration
  robot:
    nav_arm_pose: [1.5, 1.5, 0, 2.3, 0, -1.4, 0]  # Arm pose during navigation
    
  # Visualization
  visualization:
    enable: true
    n_waypoints: 50               # Number of waypoint markers
    start_marker_color: [0, 1, 0, 1]  # Green
    goal_marker_color: [1, 0, 0, 1]   # Red
    waypoint_color: [0, 0, 1, 1]      # Blue

# Standard OmniGibson configuration
scene:
  type: InteractiveTraversableScene
  scene_model: Pomaria_1_int
  
robots:
  - type: Tiago
    position: [-2, -0.3, 0]
    # ... robot configuration
```

### Configuration Priority

The system follows a clear configuration priority hierarchy:

1. **Constructor Arguments** - Highest priority
2. **YAML Configuration** - Medium priority  
3. **Module Defaults** - Fallback defaults

## ๐Ÿค– Robot Support

Currently optimized for **Tiago robot** with:
- Differential drive base control
- Dual-arm manipulation capabilities
- Automatic arm pose management during navigation
- Base action tensor management (indices 0-2 for x, y, rotation)

Support for additional robots can be added by extending the base controller classes.

## ๐Ÿงช Running Demos

Explore the package capabilities with included demonstrations:

```bash
# Basic navigation demo with sequential goal visiting
python -m og_nav.demos.navigation_demo

# Test configuration system
python -c "from og_nav.core.config_loader import NavigationConfig; print('Config system working!')"

# Test with custom YAML config  
python -c "from og_nav.core.config_loader import NavigationConfig; config = NavigationConfig(config_path='og_nav/configs/navigation_config.yaml'); print('YAML config loaded successfully!')"
```

## ๐Ÿ—๏ธ Development

### Code Architecture Philosophy

- **Modular Design**: Clean separation between planning, control, mapping, and visualization
- **Configuration-Driven**: All behavior configurable through YAML files or code
- **Extensible**: Easy to add new planners, controllers, or robot types
- **Type-Safe**: Comprehensive type hints throughout the codebase
- **Well-Documented**: Detailed docstrings and inline documentation

### Adding New Components

To add a new path planner:

```python
from og_nav.planning.path_planning import PathPlanner

class MyCustomPlanner(PathPlanner):
    @staticmethod
    def get_default_cfg():
        return {
            'algorithm': 'my_algorithm',
            'param1': 1.0,
            'param2': True
        }
    
    def __init__(self, env, robot=None, config=None):
        super().__init__(env, robot, config)
        # Your custom initialization
        
    def plan_path(self):
        # Your custom planning logic
        pass
```

### Testing

```bash
# Run configuration tests
python -c "from og_nav.core.config_loader import NavigationConfig; NavigationConfig().test_config_system()"

# Run demo to test complete pipeline
python -m og_nav.demos.navigation_demo
```

## ๐Ÿ“š Documentation

- **[CLAUDE.md](CLAUDE.md)** - Comprehensive architecture documentation for AI development
- **[og_nav/README.md](og_nav/README.md)** - Package-specific technical documentation
- **[og_nav/assets/](og_nav/assets/)** - Technical analysis and robot documentation

## ๐Ÿค Contributing

We welcome contributions! Please:

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes following the existing code style
4. Add tests if applicable
5. Commit your changes (`git commit -m 'Add amazing feature'`)
6. Push to the branch (`git push origin feature/amazing-feature`)
7. Open a Pull Request

### Code Standards

- **Type Hints**: All public functions must include type annotations
- **Docstrings**: Comprehensive documentation for all public APIs
- **Configuration**: All behavior should be configurable
- **Error Handling**: Robust error handling with informative messages

## ๐Ÿ“„ License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## ๐Ÿ™ Acknowledgments

- **[OmniGibson](https://github.com/StanfordVL/OmniGibson)** - Physics simulation framework
- **[Stanford Vision and Learning Lab](https://svl.stanford.edu/)** - OmniGibson development team
- **[PyTorch](https://pytorch.org/)** - Deep learning framework used for tensor operations

## ๐Ÿ”— Links

- **Homepage**: [https://github.com/Gonglitian/og_nav](https://github.com/Gonglitian/og_nav)
- **Documentation**: [og_nav/README.md](og_nav/README.md)
- **Issues**: [https://github.com/Gonglitian/og_nav/issues](https://github.com/Gonglitian/og_nav/issues)
- **OmniGibson**: [https://github.com/StanfordVL/OmniGibson](https://github.com/StanfordVL/OmniGibson)

---

**Built with โค๏ธ for the robotics community**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "og-nav",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "robotics, navigation, omnigibson, path-planning, robot-control",
    "author": null,
    "author_email": "Litian Gong <gonglitian2002@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/f5/cc/1f43e90e1f6478b6d3069059c99513e7270115364f631c13fa9c157979e4/og_nav-0.1.1.dev0.tar.gz",
    "platform": null,
    "description": "# OG Nav - Modular Navigation System\n\n[![Python](https://img.shields.io/badge/python-3.8%2B-blue.svg)](https://www.python.org/downloads/)\n[![PyPI](https://img.shields.io/pypi/v/og_nav.svg)](https://pypi.org/project/og_nav/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![OmniGibson](https://img.shields.io/badge/OmniGibson-Compatible-green.svg)](https://github.com/StanfordVL/OmniGibson)\n\nA comprehensive, modular navigation system designed for robot navigation in OmniGibson environments. This package provides a clean, well-structured interface for path planning, robot control, occupancy grid mapping, and visualization.\n\n## \ud83d\ude80 Features\n\n### \ud83e\udded **Unified Navigation Interface**\n- Clean, intuitive API for seamless robot navigation\n- Automatic path planning and goal tracking\n- Real-time navigation state management\n- Interactive keyboard controls for manual path planning\n\n### \ud83d\uddfa\ufe0f **Advanced Path Planning**\n- Integration with OmniGibson's built-in path planning\n- Point availability validation and collision checking\n- Visual waypoint markers with interactive controls\n- Automatic nearest available point finding\n\n### \ud83c\udfae **Sophisticated Control Systems**\n- **Pure Pursuit Algorithm**: Advanced path following with configurable lookahead\n- **PID Controllers**: Precise velocity and heading control\n- **Dynamic Action Management**: Automatic action tensor generation for Tiago robot\n- Support for both base movement and arm pose management\n\n### \ud83d\uddfa\ufe0f **Occupancy Grid Mapping**\n- Real-time occupancy grid generation using OmniGibson\n- Configurable map resolution and update strategies\n- Automatic robot occlusion handling for accurate mapping\n- Export capabilities for various map formats\n\n### \ud83c\udfa8 **Rich Visualization**\n- Interactive 3D markers for start/goal/waypoints\n- Real-time path visualization in OmniGibson viewer\n- Keyboard shortcuts for intuitive navigation control\n- Customizable marker colors and sizes\n\n### \u2699\ufe0f **Flexible Configuration System**\n- YAML-based configuration with intelligent defaults\n- Module-specific configurations with override hierarchy\n- Constructor arguments > YAML config > Module defaults\n- Automatic visualization marker generation\n\n## \ud83d\udee0\ufe0f Installation\n\n### Prerequisites\n- Python 3.8 or higher\n- OmniGibson (latest version)\n- NVIDIA GPU with CUDA support (recommended)\n\n### Install from PyPI (Recommended)\n\n```bash\npip install og_nav\n```\n\n### Development Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/Gonglitian/og_nav.git\ncd og_nav\n\n# Install in development mode\npip install -e .\n```\n\n### Dependencies\nThe package automatically installs the following dependencies:\n- `omnigibson` - Physics simulation and robotics framework\n- `torch` - Deep learning framework (used for tensor operations)\n- `numpy` - Numerical computing\n- `opencv-python` - Computer vision and image processing\n- `matplotlib` - Plotting and visualization\n- `pyyaml` - YAML configuration file support\n\n## \ud83d\udcd6 Quick Start\n\n### Basic Navigation Example\n\n```python\nimport omnigibson as og\nfrom og_nav import NavigationInterface\nfrom og_nav.core.config_loader import NavigationConfig\n\n# Create environment\nconfig_path = \"og_nav/configs/navigation_config.yaml\"\nnav_config = NavigationConfig(config_path=config_path)\nenv = og.Environment(configs=nav_config.get_omnigibson_config())\nrobot = env.robots[0]\n\n# Initialize navigation system\nnavigator = NavigationInterface(env, robot, nav_config.og_nav_config)\n\n# Set navigation goal\nnavigator.set_goal((2.0, 3.0))  # Move to position (2.0, 3.0)\n\n# Main navigation loop\nwhile not navigator.is_arrived():\n    navigator.update()\n    env.step([])\n\nprint(\"\ud83c\udf89 Navigation completed!\")\n```\n\n### Advanced Usage with Custom Configuration\n\n```python\nfrom og_nav import NavigationInterface, NavigationConfig\nfrom og_nav.planning import PathPlanner\nfrom og_nav.control import PathTrackingController\nfrom og_nav.mapping import OGMGenerator\n\n# Custom configuration\ncustom_config = {\n    'controller': {\n        'lookahead_distance': 0.8,\n        'cruise_speed': 0.7,\n        'max_angular_vel': 0.3\n    },\n    'ogm': {\n        'resolution': 0.05\n    },\n    'visualization': {\n        'enable': True,\n        'n_waypoints': 100\n    }\n}\n\n# Initialize with custom config\nnavigator = NavigationInterface(env, robot, custom_config)\n\n# Use individual components\nplanner = PathPlanner(env, robot, config=custom_config.get('planning', {}))\ncontroller = PathTrackingController(robot, config=custom_config['controller'])\nmapper = OGMGenerator(config=custom_config['ogm'])\n```\n\n## \ud83c\udfaf Interactive Controls\n\nWhen running with visualization enabled, use these keyboard shortcuts in the OmniGibson viewer:\n\n- **Z** - Set start point at camera position\n- **X** - Set goal point at camera position  \n- **V** - Plan path between start and goal\n- **C** - Clear all waypoints and markers\n\n## \ud83d\udcc1 Project Structure\n\n```\nog_nav/\n\u251c\u2500\u2500 __init__.py                    # Main package interface\n\u251c\u2500\u2500 core/                          # Core navigation components\n\u2502   \u251c\u2500\u2500 navigation.py             # Main NavigationInterface class\n\u2502   \u251c\u2500\u2500 config_loader.py          # Unified configuration management\n\u2502   \u2514\u2500\u2500 constants.py              # System constants\n\u251c\u2500\u2500 planning/                      # Path planning algorithms\n\u2502   \u251c\u2500\u2500 path_planning.py          # PathPlanner with OmniGibson integration\n\u2502   \u2514\u2500\u2500 utils.py                  # Planning utilities\n\u251c\u2500\u2500 control/                       # Robot control systems\n\u2502   \u251c\u2500\u2500 controllers.py            # Pure Pursuit and PID controllers\n\u2502   \u2514\u2500\u2500 control_utils.py          # Joint and action management utilities\n\u251c\u2500\u2500 mapping/                       # Occupancy grid mapping\n\u2502   \u2514\u2500\u2500 occupancy_grid.py         # OGMGenerator for real-time mapping\n\u251c\u2500\u2500 demos/                         # Example demonstrations\n\u2502   \u2514\u2500\u2500 navigation_demo.py        # Complete navigation demo\n\u251c\u2500\u2500 configs/                       # Configuration files\n\u2502   \u251c\u2500\u2500 navigation_config.yaml    # Main navigation configuration\n\u2502   \u2514\u2500\u2500 config.example.yaml       # Example configuration template\n\u251c\u2500\u2500 ogm_cv2_window/               # OpenCV visualization tools\n\u2502   \u2514\u2500\u2500 ui.py                     # Interactive UI components\n\u2514\u2500\u2500 assets/                        # Documentation and resources\n    \u251c\u2500\u2500 *.png                     # Example images\n    \u2514\u2500\u2500 *.md                      # Technical documentation\n```\n\n## \u2699\ufe0f Configuration\n\n### YAML Configuration Structure\n\n```yaml\nog_nav:\n  # Occupancy Grid Mapping\n  ogm:\n    resolution: 0.1               # Map resolution in meters\n    \n  # Path Planning  \n  planning:\n    # Algorithm-specific parameters\n    \n  # Path Tracking Controller\n  controller:\n    lookahead_distance: 0.5       # Pure pursuit lookahead (m)\n    cruise_speed: 0.5             # Forward speed (m/s)\n    max_angular_vel: 0.2          # Max rotation speed (rad/s)\n    waypoint_threshold: 0.2       # Arrival threshold (m)\n    \n  # Robot Configuration\n  robot:\n    nav_arm_pose: [1.5, 1.5, 0, 2.3, 0, -1.4, 0]  # Arm pose during navigation\n    \n  # Visualization\n  visualization:\n    enable: true\n    n_waypoints: 50               # Number of waypoint markers\n    start_marker_color: [0, 1, 0, 1]  # Green\n    goal_marker_color: [1, 0, 0, 1]   # Red\n    waypoint_color: [0, 0, 1, 1]      # Blue\n\n# Standard OmniGibson configuration\nscene:\n  type: InteractiveTraversableScene\n  scene_model: Pomaria_1_int\n  \nrobots:\n  - type: Tiago\n    position: [-2, -0.3, 0]\n    # ... robot configuration\n```\n\n### Configuration Priority\n\nThe system follows a clear configuration priority hierarchy:\n\n1. **Constructor Arguments** - Highest priority\n2. **YAML Configuration** - Medium priority  \n3. **Module Defaults** - Fallback defaults\n\n## \ud83e\udd16 Robot Support\n\nCurrently optimized for **Tiago robot** with:\n- Differential drive base control\n- Dual-arm manipulation capabilities\n- Automatic arm pose management during navigation\n- Base action tensor management (indices 0-2 for x, y, rotation)\n\nSupport for additional robots can be added by extending the base controller classes.\n\n## \ud83e\uddea Running Demos\n\nExplore the package capabilities with included demonstrations:\n\n```bash\n# Basic navigation demo with sequential goal visiting\npython -m og_nav.demos.navigation_demo\n\n# Test configuration system\npython -c \"from og_nav.core.config_loader import NavigationConfig; print('Config system working!')\"\n\n# Test with custom YAML config  \npython -c \"from og_nav.core.config_loader import NavigationConfig; config = NavigationConfig(config_path='og_nav/configs/navigation_config.yaml'); print('YAML config loaded successfully!')\"\n```\n\n## \ud83c\udfd7\ufe0f Development\n\n### Code Architecture Philosophy\n\n- **Modular Design**: Clean separation between planning, control, mapping, and visualization\n- **Configuration-Driven**: All behavior configurable through YAML files or code\n- **Extensible**: Easy to add new planners, controllers, or robot types\n- **Type-Safe**: Comprehensive type hints throughout the codebase\n- **Well-Documented**: Detailed docstrings and inline documentation\n\n### Adding New Components\n\nTo add a new path planner:\n\n```python\nfrom og_nav.planning.path_planning import PathPlanner\n\nclass MyCustomPlanner(PathPlanner):\n    @staticmethod\n    def get_default_cfg():\n        return {\n            'algorithm': 'my_algorithm',\n            'param1': 1.0,\n            'param2': True\n        }\n    \n    def __init__(self, env, robot=None, config=None):\n        super().__init__(env, robot, config)\n        # Your custom initialization\n        \n    def plan_path(self):\n        # Your custom planning logic\n        pass\n```\n\n### Testing\n\n```bash\n# Run configuration tests\npython -c \"from og_nav.core.config_loader import NavigationConfig; NavigationConfig().test_config_system()\"\n\n# Run demo to test complete pipeline\npython -m og_nav.demos.navigation_demo\n```\n\n## \ud83d\udcda Documentation\n\n- **[CLAUDE.md](CLAUDE.md)** - Comprehensive architecture documentation for AI development\n- **[og_nav/README.md](og_nav/README.md)** - Package-specific technical documentation\n- **[og_nav/assets/](og_nav/assets/)** - Technical analysis and robot documentation\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes following the existing code style\n4. Add tests if applicable\n5. Commit your changes (`git commit -m 'Add amazing feature'`)\n6. Push to the branch (`git push origin feature/amazing-feature`)\n7. Open a Pull Request\n\n### Code Standards\n\n- **Type Hints**: All public functions must include type annotations\n- **Docstrings**: Comprehensive documentation for all public APIs\n- **Configuration**: All behavior should be configurable\n- **Error Handling**: Robust error handling with informative messages\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- **[OmniGibson](https://github.com/StanfordVL/OmniGibson)** - Physics simulation framework\n- **[Stanford Vision and Learning Lab](https://svl.stanford.edu/)** - OmniGibson development team\n- **[PyTorch](https://pytorch.org/)** - Deep learning framework used for tensor operations\n\n## \ud83d\udd17 Links\n\n- **Homepage**: [https://github.com/Gonglitian/og_nav](https://github.com/Gonglitian/og_nav)\n- **Documentation**: [og_nav/README.md](og_nav/README.md)\n- **Issues**: [https://github.com/Gonglitian/og_nav/issues](https://github.com/Gonglitian/og_nav/issues)\n- **OmniGibson**: [https://github.com/StanfordVL/OmniGibson](https://github.com/StanfordVL/OmniGibson)\n\n---\n\n**Built with \u2764\ufe0f for the robotics community**\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A modular navigation system for robot navigation in OmniGibson environments.",
    "version": "0.1.1.dev0",
    "project_urls": {
        "Homepage": "https://github.com/Gonglitian/og_nav",
        "Repository": "https://github.com/Gonglitian/og_nav"
    },
    "split_keywords": [
        "robotics",
        " navigation",
        " omnigibson",
        " path-planning",
        " robot-control"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e9085ce32150ae3bcc4519849c68ffa7a69416fae4437299129c6efb937a648e",
                "md5": "6f65345303d9890157f6b3b089979b82",
                "sha256": "ac67678edb0e023bc7a9415e46c48228347265ee8656b4e39cd0f5912e58593a"
            },
            "downloads": -1,
            "filename": "og_nav-0.1.1.dev0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "6f65345303d9890157f6b3b089979b82",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 482770,
            "upload_time": "2025-07-26T04:43:05",
            "upload_time_iso_8601": "2025-07-26T04:43:05.308558Z",
            "url": "https://files.pythonhosted.org/packages/e9/08/5ce32150ae3bcc4519849c68ffa7a69416fae4437299129c6efb937a648e/og_nav-0.1.1.dev0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f5cc1f43e90e1f6478b6d3069059c99513e7270115364f631c13fa9c157979e4",
                "md5": "e4bbc80419e38a92d2af5f242beef8f4",
                "sha256": "caf6202588fad1ff731bbd877b3ce3d7ba9cd750cc55bdf332359cc1c1fbe456"
            },
            "downloads": -1,
            "filename": "og_nav-0.1.1.dev0.tar.gz",
            "has_sig": false,
            "md5_digest": "e4bbc80419e38a92d2af5f242beef8f4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 1834353,
            "upload_time": "2025-07-26T04:43:07",
            "upload_time_iso_8601": "2025-07-26T04:43:07.164897Z",
            "url": "https://files.pythonhosted.org/packages/f5/cc/1f43e90e1f6478b6d3069059c99513e7270115364f631c13fa9c157979e4/og_nav-0.1.1.dev0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-26 04:43:07",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Gonglitian",
    "github_project": "og_nav",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "omnigibson",
            "specs": []
        },
        {
            "name": "matplotlib",
            "specs": []
        }
    ],
    "lcname": "og-nav"
}
        
Elapsed time: 1.46887s