Metadata-Version: 2.4
Name: oculus-robotics
Version: 1.0.0
Summary: Real-time observability and safety for robotics simulations across all platforms
Author-email: Oculus Robotics <support@oculusrobotics.com>
License-Expression: MIT
Project-URL: Homepage, https://oculusrobotics.com
Project-URL: Documentation, https://docs.oculusrobotics.com
Project-URL: Repository, https://github.com/oculus-robotics/oculus-sdk
Project-URL: Issues, https://github.com/oculus-robotics/oculus-sdk/issues
Keywords: robotics,observability,isaac-sim,isaac-lab,ros2,mujoco,pybullet,gazebo,safety,prediction
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: python-socketio[client]>=5.10.0
Requires-Dist: numpy>=1.20.0
Requires-Dist: requests>=2.28.0
Provides-Extra: isaac-sim
Provides-Extra: isaac-lab
Provides-Extra: ros2
Requires-Dist: rclpy>=3.0; extra == "ros2"
Provides-Extra: mujoco
Requires-Dist: mujoco>=2.3.0; extra == "mujoco"
Provides-Extra: pybullet
Requires-Dist: pybullet>=3.2.0; extra == "pybullet"
Provides-Extra: gazebo
Requires-Dist: rclpy>=3.0; extra == "gazebo"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: black>=22.0; extra == "dev"
Requires-Dist: mypy>=0.950; extra == "dev"
Requires-Dist: flake8>=5.0; extra == "dev"
Provides-Extra: all
Requires-Dist: rclpy>=3.0; extra == "all"
Requires-Dist: mujoco>=2.3.0; extra == "all"
Requires-Dist: pybullet>=3.2.0; extra == "all"
Dynamic: license-file

# Oculus SDK - Research & Implementation

Modular, scalable SDK for robotics observability and safety.

## Installation

```bash
# Basic (all platforms)
pip install oculus-robotics

# With platform-specific extras
pip install oculus-robotics[isaac-lab]
pip install oculus-robotics[ros2]
pip install oculus-robotics[mujoco]
```

## Quick Start

```python
from oculus.platforms.isaac_lab import IsaacLabTracer

with IsaacLabTracer(project="my_simulation") as tracer:
    for step in range(1000):
        # Your simulation code
        state = get_robot_state()
        tracer.auto_capture(state)
```

## Development Setup

```bash
# Clone and install in dev mode
cd oculus-sdk
pip install -e ".[dev]"

# Run tests
pytest tests/
```

## Package Structure

```
oculus/
├── core/              # Base tracer, connection, auth
├── platforms/         # Isaac Sim, Lab, ROS2, Mujoco, etc.
├── safety/            # Fall prevention, collision avoidance
├── prediction/        # Fall prediction, anomaly detection
└── research/          # Research paper implementations
```

## Platform-Specific Usage

### Isaac Sim
```python
from oculus.platforms.isaac_sim import IsaacSimTracer
```

### Isaac Lab
```python
from oculus.platforms.isaac_lab import IsaacLabTracer
```

### ROS 2
```python
from oculus.platforms.ros2 import ROS2Tracer
```

### Mujoco
```python
from oculus.platforms.mujoco import MujocoTracer
```

## Safety Algorithms

```python
from oculus.safety.fall_prevention import QuadrupedSafeFall
from oculus.prediction import FallPredictor

safety = QuadrupedSafeFall(robot_type="unitree_go1")
predictor = FallPredictor()

result = safety.check_fall_risk(robot_state)
if result.intervention_needed:
    correction = safety.prevent_fall(robot_state, result)
```

## Research Implementations

See `oculus/research/` for implementations of:
- Radium paper (Unitree safe fall)
- Custom algorithms from latest research

## Contributing

1. Study research paper
2. Implement in `oculus/research/new_algorithm/`
3. Test in `oculus-testing/`
4. Submit PR with paper reference

## Publishing

```bash
python -m build
twine upload dist/*
```
