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, but can be easily modified to work with JetBot.

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:

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 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 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.

IsaacQuadruped to Go2 Example

Code

Here is an example of a skill that works with IsaacQuadruped, but can be easily modified to work with Go2. There is more initial setup required for the IsaacQuadruped as IsaacLab requires ROS.

from grid.robot.locomotion.isaac_quadruped import IsaacQuadruped
from grid.utils.types import Velocity

agent = IsaacQuadruped()
agent.moveByVelocity(Velocity(0.4, 0, 0), Velocity(0, 0, 0))

This would become:

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 IsaacQuadruped can be used to control the Go2, please see the Detect and Navigate Example.