> ## Documentation Index
> Fetch the complete documentation index at: https://scaledfoundations-rebrand.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Simulated to Physical Deployment

> Learn how to deploy a simulated robot to a physical robot

## Overview

Deploying between simulation and a physical robot is extremely simple with GRID due to the parity between simulated and physical robots.

The easiest way to do this, is to take a skill that works with a simulated robot and replace the simulated robot with a physical robot. In many cases, this is as simple as changing the object instantiation. Both agents have access to the rest of GRID and the other functionality that we offer.

## AirGenCar to JetBot Example

### Code

Here is an example of a skill that works with [AirGenCar](/robot-api/grid/robot/wheeled/airgen_car#airgencar), but can be easily modified to work with [JetBot](/robot-api/grid/robot/wheeled/jetbot#jetbot).

```python
from grid.robot.wheeled.airgen_car import AirGenCar
from grid.utils.types import Velocity
agent = AirGenCar()
agent.moveByVelocity(Velocity(0.4, 0, 0), Velocity(0, 0, 0))
```

This would become:

```python
from grid.robot.wheeled.jetbot import JetBot
from grid.utils.types import Velocity
agent = JetBot()
agent.moveByVelocity(Velocity(0.4, 0, 0), Velocity(0, 0, 0))
```

### Key Differences

The main difference between the two is that [AirGenCar](/robot-api/grid/robot/wheeled/airgen_car#airgencar) has access to the underlying AirGen API, enabling it to control the environment, receive ground truth data, etc. This can be accessed by using the `AirGenCar.client` field.

[JetBot](/robot-api/grid/robot/wheeled/jetbot#jetbot) does not have this access, but it does have access to the rest of GRID and the other functionality that we offer.

### Further Reading

To see another example of how AirGenCar can be used to control the JetBot, please see the [Safe Navigation Example](/deployment/deployment_examples/safenav).

## IsaacLocomotion to Go2 Example

### Code

Here is an example of a skill that works with [IsaacLocomotion](/robot-api/grid/robot/locomotion/isaac_locomotion#isaaclocomotion), but can be easily modified to work with [Go2](/robot-api/grid/robot/locomotion/go2#go2real). There is more initial setup required for the IsaacLocomotion as IsaacLab requires ROS.

```python
from grid.robot.locomotion.isaac_locomotion import IsaacLocomotion
from grid.utils.types import Velocity

agent = IsaacLocomotion()
agent.moveByVelocity(Velocity(0.4, 0, 0), Velocity(0, 0, 0))
```

This would become:

```python
from grid.robot.locomotion.go2 import Go2Real
from grid.utils.types import Velocity

agent = Go2Real()
agent.moveByVelocity(Velocity(0.4, 0, 0), Velocity(0, 0, 0))
```

### Further Reading

To see another example of how IsaacLocomotion can be used to control the Go2, please see the [Safe Navigation Example](/deployment/deployment_examples/safenav).
