(key)
| 39 | |
| 40 | def _make_viewer(self): |
| 41 | def _key_callback(key): |
| 42 | # Keyboard mapping: |
| 43 | # ---------------- |
| 44 | # | K L ; ' | |
| 45 | # | , . / | |
| 46 | # ---------------- |
| 47 | key_char = chr(key) |
| 48 | |
| 49 | print(key, key_char) |
| 50 | |
| 51 | if key == 27: # Esc |
| 52 | self.viewer.close() |
| 53 | |
| 54 | if key_char == ' ': |
| 55 | self.is_pause = not self.is_pause |
| 56 | |
| 57 | if key_char == 'w': |
| 58 | self.cmd[1] += 0.1 |
| 59 | elif key_char == 's': |
| 60 | self.cmd[1] -= 0.1 |
| 61 | elif key_char == 'a': # |
| 62 | self.cmd[0] += 0.1 |
| 63 | elif key_char == 'd': |
| 64 | self.cmd[0] -= 0.1 |
| 65 | elif key_char == 'e': |
| 66 | if self.heading_cmd: |
| 67 | self.cmd[3] = wrap_to_pi_float(self.cmd[3]+np.pi/20) |
| 68 | else: |
| 69 | self.cmd[2] += 0.1 |
| 70 | elif key_char == 'q': |
| 71 | if self.heading_cmd: |
| 72 | self.cmd[3] = wrap_to_pi_float(self.cmd[3]-np.pi/20) |
| 73 | else: |
| 74 | self.cmd[2] -= 0.1 |
| 75 | elif key_char == 'r': |
| 76 | self.cmd = np.array(self.cfg.deploy.defcmd) |
| 77 | elif key == 257: # Enter |
| 78 | # self.Reset() |
| 79 | self._ref_pid = -2 |
| 80 | elif key_char == '[': |
| 81 | self._ref_pid -= 1 |
| 82 | elif key_char == ']': |
| 83 | self._ref_pid += 1 |
| 84 | |
| 85 | print(self.cmd, self._ref_pid) |
| 86 | # glfw.set_key_callback(self.viewer.window, _key_callback) |
| 87 | ... |
| 88 | self.viewer = mujoco.viewer.launch_passive(self.model, self.data, key_callback=_key_callback) |
nothing calls this directly
no test coverage detected