in experiments/rolling/RollingEnv.py [0:0]
def create_scene(self):
"""
Create scene and tacto simulator
"""
# Initialize digits
digits = tacto.Sensor(
width=self.tactoResolution[0],
height=self.tactoResolution[1],
visualize_gui=self.visTacto,
)
if self.visPyBullet:
self.physicsClient = pb.connect(pb.GUI)
else:
self.physicsClient = pb.connect(pb.DIRECT)
pb.setAdditionalSearchPath(pybullet_data.getDataPath()) # optionally
pb.setGravity(0, 0, -9.81) # Major Tom to planet Earth
# Set camera view
pb.resetDebugVisualizerCamera(
cameraDistance=0.12,
cameraYaw=0,
cameraPitch=-20,
cameraTargetPosition=[0, 0, 0.02],
)
pb.loadURDF("plane.urdf") # Create plane
digitURDF = "setup/sensors/digit.urdf"
# Set upper digit
digitPos1 = [0, 0, 0.011]
digitOrn1 = pb.getQuaternionFromEuler([0, -np.pi / 2, 0])
digitID1 = pb.loadURDF(
digitURDF,
basePosition=digitPos1,
baseOrientation=digitOrn1,
useFixedBase=True,
)
digits.add_camera(digitID1, [-1])
# Set lower digit
digitPos2 = [0, 0, 0.07]
digitOrn2 = pb.getQuaternionFromEuler([0, np.pi / 2, np.pi])
digitID2 = pb.loadURDF(
digitURDF, basePosition=digitPos2, baseOrientation=digitOrn2,
)
digits.add_camera(digitID2, [-1])
# Create object and GUI controls
init_xyz = np.array([0, 0.0, 8])
# Add object to pybullet and tacto simulator
urdfObj = "setup/objects/sphere_small.urdf"
objPos = np.array([-1.5, 0, 4]) / 100
objOrn = pb.getQuaternionFromEuler([0, 0, 0])
globalScaling = 0.15
# Add ball urdf into pybullet and tacto
objId = digits.loadURDF(urdfObj, objPos, objOrn, globalScaling=globalScaling)
# Add constraint to movable digit (upper)
cid = pb.createConstraint(
digitID2, -1, -1, -1, pb.JOINT_FIXED, [0, 0, 0], [0, 0, 0], init_xyz / 100
)
# Save variables
self.digits = digits
self.digitID1, self.digitPos1, self.digitOrn1 = digitID1, digitPos1, digitOrn1
self.digitID2, self.digitPos2, self.digitOrn2 = digitID2, digitPos2, digitOrn2
self.objId, self.objPos, self.objOrn = objId, objPos, objOrn
self.cid = cid