Files
SpotMicroESP32-Leika/mock/simulator/util/gui.py
T
2024-03-04 15:55:45 +01:00

92 lines
3.4 KiB
Python

#!/usr/bin/env python
import pybullet as pb
import time
import numpy as np
import sys
class GUI:
def __init__(self, quadruped):
time.sleep(0.5)
self.cyaw = 0
self.cpitch = -7
self.cdist = 0.66
self.xId = pb.addUserDebugParameter("x", -0.10, 0.10, 0.)
self.yId = pb.addUserDebugParameter("y", -0.10, 0.10, 0.)
self.zId = pb.addUserDebugParameter("z", -0.055, 0.17, 0.)
self.rollId = pb.addUserDebugParameter("roll", -np.pi / 4, np.pi / 4, 0.0)
self.pitchId = pb.addUserDebugParameter("pitch", -np.pi / 4, np.pi / 4, 0.0)
self.yawId = pb.addUserDebugParameter("yaw", -np.pi / 4, np.pi / 4, 0.)
self.StepLengthID = pb.addUserDebugParameter("Step Length", -0.1, 0.1, 0.1)
self.YawRateId = pb.addUserDebugParameter("Yaw Rate", -2.0, 2.0, 0.)
self.LateralFractionId = pb.addUserDebugParameter(
"Lateral Fraction", -np.pi / 2.0, np.pi / 2.0, 0.0
)
self.StepVelocityId = pb.addUserDebugParameter(
"Step Velocity", 0.001, 3.0, 0.001
)
self.SwingPeriodId = pb.addUserDebugParameter("Swing Period", 0.1, 0.4, 0.2)
self.ClearanceHeightId = pb.addUserDebugParameter(
"Clearance Height", 0.0, 0.1, 0.045
)
self.PenetrationDepthId = pb.addUserDebugParameter(
"Penetration Depth", 0.0, 0.05, 0.003
)
self.quadruped = quadruped
def UserInput(self, bodyState, gaitState):
quadruped_pos, _ = pb.getBasePositionAndOrientation(self.quadruped)
pb.resetDebugVisualizerCamera(cameraDistance=self.cdist,
cameraYaw=self.cyaw,
cameraPitch=self.cpitch,
cameraTargetPosition=quadruped_pos)
keys = pb.getKeyboardEvents()
# Keys to change camera
if keys.get(100): # D
self.cyaw += 1
if keys.get(97): # A
self.cyaw -= 1
if keys.get(99): # C
self.cpitch += 1
if keys.get(102): # F
self.cpitch -= 1
if keys.get(122): # Z
self.cdist += .01
if keys.get(120): # X
self.cdist -= .01
if keys.get(27): # ESC
pb.disconnect()
sys.exit()
# Read Robot Transform from GUI
bodyState.position = np.array(
[
pb.readUserDebugParameter(self.xId),
pb.readUserDebugParameter(self.yId),
pb.readUserDebugParameter(self.zId),
]
)
bodyState.rotation = np.array(
[
pb.readUserDebugParameter(self.rollId),
pb.readUserDebugParameter(self.pitchId),
pb.readUserDebugParameter(self.yawId),
]
)
gaitState.target_step_length = pb.readUserDebugParameter(self.StepLengthID)
gaitState.target_yaw_rate = pb.readUserDebugParameter(self.YawRateId)
gaitState.target_lateral_fraction = pb.readUserDebugParameter(
self.LateralFractionId
)
gaitState.step_velocity = pb.readUserDebugParameter(self.StepVelocityId)
gaitState.clearance_height = pb.readUserDebugParameter(self.ClearanceHeightId)
gaitState.penetration_depth = pb.readUserDebugParameter(self.PenetrationDepthId)
gaitState.swing_period = pb.readUserDebugParameter(self.SwingPeriodId)