Switching between Real and Sim Example

Description

The Switching between Real and Sim example is meant to demonstrate how to share logic between real and simulated experiments. A reach task is performed in pybullet that uses the object interface. A reach task for a randomly generated position is performed on the real robot. Both examples use the Sawyer Robots.

There are three files worth looking at for this demo:

  • Run file: run_switch_sim_real.py

  • Environment file: switch_sim_real_env.py

  • Config file: simple_reach.yaml

To run this demo in sim, go to the configuration file and set the world:type key to ‘Bullet’.

`python run_switch_sim_real.py`

To run this demo in real, change the world:type key from ‘Bullet’ to ‘Real’. Then check the wiki for instructions about running the real Sawyer robot. Set up those terminals and then in another terminal run python run_switch_sim_real.py

Run file:

The run file is almost identical to the simple_reach example. The only change is the constructing the environment. The same analytical policy is used for get_action.

Environment file:

The Environment file is also similar to the simple_reach example. To wrap code for simulation/real, we use the self.world.is_sim flag. In simulation, our goal position is determined by the pose of the object, obtained from the object_interface. In reality, our goal position is randomly generated within some bounds set in the configuration file.

Config file:

The key configuration parameter in this example is world:type. To change from a Bullet world to real change this from ‘Bullet’ to ‘Real’.

The goal_position key is a user defined parameter that limits the range of the randomly generated goal position for the real experiment.