"""The Python implementation of the PyBullet GRPC client.""" from __future__ import print_function import grpc import pybullet_pb2 import pybullet_pb2_grpc #todo: how to add this? MJCF_COLORS_FROM_FILE = 512 def run(): print("grpc.insecure_channel") channel = grpc.insecure_channel('localhost:6667') print("pybullet_pb2_grpc.PyBulletAPIStub") stub = pybullet_pb2_grpc.PyBulletAPIStub(channel) response = 0 print("submit CheckVersionCommand") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(checkVersionCommand=pybullet_pb2.CheckVersionCommand( clientVersion=123))) print("PyBullet client received: ", response) print("submit_ResetSimulationCommand") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(resetSimulationCommand=pybullet_pb2.ResetSimulationCommand())) print("PyBullet client received: ", response) print("submit LoadUrdfCommand ") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(loadUrdfCommand=pybullet_pb2.LoadUrdfCommand( fileName="door.urdf", initialPosition=pybullet_pb2.vec3(x=0, y=0, z=0), useMultiBody=True, useFixedBase=True, globalScaling=2, flags=1))) print("PyBullet client received: ", response) bodyUniqueId = response.urdfStatus.bodyUniqueId print("submit LoadSdfCommand") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(loadSdfCommand=pybullet_pb2.LoadSdfCommand( fileName="two_cubes.sdf", useMultiBody=True, globalScaling=2))) print("PyBullet client received: ", response) print("submit LoadMjcfCommand") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(loadMjcfCommand=pybullet_pb2.LoadMjcfCommand( fileName="mjcf/humanoid.xml", flags=MJCF_COLORS_FROM_FILE))) print("PyBullet client received: ", response) print("submit ChangeDynamicsCommand ") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(changeDynamicsCommand=pybullet_pb2.ChangeDynamicsCommand( bodyUniqueId=bodyUniqueId, linkIndex=-1, mass=10))) print("PyBullet client received: ", response) print("submit GetDynamicsCommand ") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(getDynamicsCommand=pybullet_pb2.GetDynamicsCommand( bodyUniqueId=bodyUniqueId, linkIndex=-1))) print("PyBullet client received: ", response) print("submit InitPoseCommand") response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(initPoseCommand=pybullet_pb2.InitPoseCommand( bodyUniqueId=bodyUniqueId, initialStateQ=[1, 2, 3], hasInitialStateQ=[1, 1, 1]))) print("PyBullet client received: ", response) print("submit RequestActualStateCommand") response = stub.SubmitCommand( pybullet_pb2. PyBulletCommand(requestActualStateCommand=pybullet_pb2.RequestActualStateCommand( bodyUniqueId=bodyUniqueId, computeForwardKinematics=True, computeLinkVelocities=True))) print("PyBullet client received: ", response) i = 0 while (True): i = i + 1 print("submit StepSimulationCommand: ", i) response = stub.SubmitCommand( pybullet_pb2.PyBulletCommand(stepSimulationCommand=pybullet_pb2.StepSimulationCommand())) print("PyBullet client received: ", response.statusType) #print("TerminateServerCommand") #response = stub.SubmitCommand(pybullet_pb2.PyBulletCommand(terminateServerCommand=pybullet_pb2.TerminateServerCommand())) #print("PyBullet client received: " , response.statusType) if __name__ == '__main__': run()