diff --git a/control.py b/control.py index 2bbcca3..8493aa2 100644 --- a/control.py +++ b/control.py @@ -44,19 +44,19 @@ CONTROLLER_MODE = xbox.initialized xbox.mode_count = 5 neutral_position = np.array([ - [0.1, 0.16, -0.15], - [-0.1, 0.16, -0.15], - [-0.2, -0.00, -0.15], - [-0.1, -0.16, -0.15], - [0.1, -0.16, -0.15], - [0.2, 0, -0.15] + [0.08, 0.16, -0.12], + [-0.08, 0.16, -0.12], + [-0.2, -0.00, -0.12], + [-0.08, -0.16, -0.12], + [0.08, -0.16, -0.12], + [0.2, 0, -0.12] ]) REAL = 0 # Robot setup if REAL == 1: - portHandler = PortHandler("/dev/ttyUSB0") + portHandler = PortHandler("/dev/ttyUSB1") packetHandler = PacketHandler(1.0) portHandler.openPort() @@ -71,6 +71,9 @@ if REAL == 1: print(f"Found AX-12 with id: {id}") ids.append(id) time.sleep(0.01) + if len(ids) != 18: + legsLogger.error("Not all motor found. Press enter to continue") + input() # Done @@ -268,30 +271,33 @@ def stand(x1, y1, x2, y2): def walk(t, sx, sy, sr): xboxdata = xbox.get_data() - val = xboxdata["x1"] + if xbox.initialized: + max_slider = 0.200 + controllerLogger.debug(xboxdata) + if xbox.mode == 0: + positions = static() + elif xbox.mode == 1: + positions = jump(xboxdata["y2"]) + elif xbox.mode == 2: + positions = dino_naive(t, max_slider * xboxdata["y1"], max_slider * xboxdata["x1"], + max_slider * xboxdata["y2"], + max_slider * xboxdata["x2"], max_slider * (xboxdata["r2"] + 1)) + elif xbox.mode == 3: + positions = naive_walk(t, max_slider * xboxdata["x1"], max_slider * xboxdata["y1"]) + elif xbox.mode == 4: + positions = walk_v2(t, max_slider * xboxdata["y1"], -1 * max_slider * xboxdata["x1"], + xboxdata["x2"] * max_slider, + max_slider * xboxdata["y2"]) + elif xbox.mode == 5: + positions = stand(xboxdata["x1"], xboxdata["y1"], xboxdata["x2"], xboxdata["y2"]) - max_slider = 0.200 - controllerLogger.debug(xboxdata) - if xbox.mode == 0: - positions = static() - elif xbox.mode == 1: - positions = jump(xboxdata["y2"]) - elif xbox.mode == 2: - positions = dino_naive(t, max_slider * xboxdata["y1"], max_slider * xboxdata["x1"], max_slider * xboxdata["y2"], - max_slider * xboxdata["x2"], max_slider * (xboxdata["r2"] + 1)) - elif xbox.mode == 3: - positions = naive_walk(t, max_slider * xboxdata["x1"], max_slider * xboxdata["y1"]) - elif xbox.mode == 4: - positions = dev(t, max_slider * xboxdata["y1"], -1 * max_slider * xboxdata["x1"], xboxdata["x2"] * max_slider, - max_slider * xboxdata["y2"]) - elif xbox.mode == 5: - positions = stand(xboxdata["x1"], xboxdata["y1"], xboxdata["x2"], xboxdata["y2"]) + # print(positions) + if REAL == 1: + convert_to_robot(positions) - print(positions) - if REAL == 1: - convert_to_robot(positions) - - return positions + return positions + else: + return walk_v2(t, sx, sy, sr, None) def static(): @@ -299,14 +305,13 @@ def static(): # Walk V2 -def dev(t, speed_x, speed_y, speed_r, y2): +def walk_v2(t, speed_x, speed_y, speed_r, y2): """ x1: speed along the x-axis y1: speed along the y-axis x2: rotational speed along the z-axis """ max_dist = 0.3 - print(speed_r) def get_rotation_center(speed_x, speed_y, theta_point): norm = sqrt(speed_x ** 2 + speed_y ** 2) @@ -324,9 +329,9 @@ def dev(t, speed_x, speed_y, speed_r, y2): real_position = np.copy(neutral_position) movement_z = np.array([ - [0, 0, 0.02], - [0, 0, -0.01], - [0, 0, -0.01] + [0, 0, 0.03], + [0, 0, -0.02], + [0, 0, -0.02] ]) step_duration = np.array([0.15, 0.3, 0.15]) diff --git a/xbox.py b/xbox.py index caf24bc..a838836 100644 --- a/xbox.py +++ b/xbox.py @@ -15,9 +15,9 @@ class Xbox: if len(self.controllers) == 0: self.logger.critical("No controllers detected. Can't initialize remote control.") - self.initialized = True - else: self.initialized = False + else: + self.initialized = True self.data = {"x1": 0, "x2": 0, "y1": 0, "y2": 0, "up": 0, "down": 0, "left": 0, "right": 0, "r1": 0, "r2": 0, "r3": 0, "l1": 0, "l2": 0, "l3": 0}