(self, target, far_target, tick_data)
| 129 | return angle |
| 130 | |
| 131 | def _get_control(self, target, far_target, tick_data): |
| 132 | pos = self._get_position(tick_data) |
| 133 | theta = tick_data['compass'] |
| 134 | speed = tick_data['speed'] |
| 135 | |
| 136 | # Steering. |
| 137 | angle_unnorm = self._get_angle_to(pos, theta, target) |
| 138 | angle = angle_unnorm / 90 |
| 139 | |
| 140 | steer = self._turn_controller.step(angle) |
| 141 | steer = np.clip(steer, -1.0, 1.0) |
| 142 | steer = round(steer, 3) |
| 143 | |
| 144 | # Acceleration. |
| 145 | angle_far_unnorm = self._get_angle_to(pos, theta, far_target) |
| 146 | should_slow = abs(angle_far_unnorm) > 45.0 or abs(angle_unnorm) > 5.0 |
| 147 | target_speed = 4.0 if should_slow else 7.0 |
| 148 | brake = self._should_brake() |
| 149 | target_speed = target_speed if not brake else 0.0 |
| 150 | |
| 151 | self.should_slow = int(should_slow) |
| 152 | self.should_brake = int(brake) |
| 153 | self.angle = angle |
| 154 | self.angle_unnorm = angle_unnorm |
| 155 | self.angle_far_unnorm = angle_far_unnorm |
| 156 | |
| 157 | delta = np.clip(target_speed - speed, 0.0, 0.25) |
| 158 | throttle = self._speed_controller.step(delta) |
| 159 | throttle = np.clip(throttle, 0.0, 0.75) |
| 160 | |
| 161 | if brake: |
| 162 | steer *= 0.5 |
| 163 | throttle = 0.0 |
| 164 | |
| 165 | return steer, throttle, brake, target_speed |
| 166 | |
| 167 | def run_step(self, input_data, timestamp): |
| 168 | if not self.initialized: |
no test coverage detected