Polysim

The package containing the Polymetis simulation client. Includes a wrapper around PyBullet.

Developing custom environments

All simulation environments must inherit from the abstract simulation environment class AbstractControlledEnv to work with the Simulation Client.

from polysim.envs import AbstractControlledEnv

class MyCustomEnv(AbstractControlledEnv):
    ... # define methods here

The created simulation environment must define the following functions (see abstract_env.py for details):

  • reset

  • get_num_dofs

  • get_current_joint_pos_vel

  • get_current_joint_torques

  • apply_joint_torques

Sample simulation environments can also be found in polysim/envs

You must also define metadata around your simulation environment which instantiates a RobotClientMetadata object. An example configuration is in the default config under metadata_cfg.

The Simulation Client is implemented as a wrapper around the simulation environment. To connect a simulation environment to a local server and run for 1000 steps:

from polysim import GrpcSimulationClient
from polymetis.robot_client_metadata import RobotClientMetadata

env = MyCustomEnv(...)
metadata_cfg = {"key": "value"}

sim = GrpcSimulationClient(
    env=env,
    metadata=metadata_cfg,
    ip="localhost",
)
sim.run(time_horizon=1000)

Notes:

  • ip is the IP of the Controller Manager Server.

  • If the time_horizon argument is not specified, the simulation will run indefinitely unless terminated.