()
| 82 | |
| 83 | @app.route("/robot", methods = ["POST"]) |
| 84 | def robot_commands(): |
| 85 | |
| 86 | # get the query |
| 87 | args = request.args |
| 88 | state = args['state'] |
| 89 | angle_degrees = int(float(args['angle_degrees'])) |
| 90 | angle_dir = args['angle_dir'] |
| 91 | force = float(args['force']) |
| 92 | determined_speed = MIN_SPEED + force * (MAX_SPEED - MIN_SPEED) / MAX_FORCE |
| 93 | if determined_speed > MAX_SPEED: |
| 94 | determined_speed = MAX_SPEED |
| 95 | |
| 96 | if state == 'move': |
| 97 | # for moving backward |
| 98 | if angle_degrees >= 260 and angle_degrees <= 280: |
| 99 | gopigo3_robot.set_speed(determined_speed) |
| 100 | gopigo3_robot.backward() |
| 101 | |
| 102 | # for moving to the left or forward |
| 103 | if angle_degrees > 90 and angle_degrees < 260: |
| 104 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_RIGHT, determined_speed) |
| 105 | |
| 106 | left_motor_percentage = abs((angle_degrees - 170) / 90) |
| 107 | sign = -1 if angle_degrees >= 180 else 1 |
| 108 | |
| 109 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_LEFT, determined_speed * left_motor_percentage * sign) |
| 110 | |
| 111 | # for moving to the right (or forward)- upper half |
| 112 | if angle_degrees < 90 and angle_degrees >= 0: |
| 113 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_LEFT, determined_speed) |
| 114 | |
| 115 | right_motor_percentage = angle_degrees / 90 |
| 116 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_RIGHT, determined_speed * right_motor_percentage) |
| 117 | # for moving to the right (or forward)- bottom half |
| 118 | if angle_degrees <= 360 and angle_degrees > 280: |
| 119 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_LEFT, determined_speed) |
| 120 | |
| 121 | right_motor_percentage = (angle_degrees - 280) / 80 - 1 |
| 122 | gopigo3_robot.set_motor_dps(gopigo3_robot.MOTOR_RIGHT, determined_speed * right_motor_percentage) |
| 123 | |
| 124 | elif state == 'stop': |
| 125 | gopigo3_robot.stop() |
| 126 | else: |
| 127 | app.logging.warning('unknown state sent') |
| 128 | |
| 129 | resp = Response() |
| 130 | resp.mimetype = "application/json" |
| 131 | resp.status = "OK" |
| 132 | resp.status_code = 200 |
| 133 | |
| 134 | return resp |
| 135 | |
| 136 | @app.route("/") |
| 137 | def index(): |
nothing calls this directly
no test coverage detected