Skip to content

Commit

Permalink
calculate target steering angle
Browse files Browse the repository at this point in the history
  • Loading branch information
ShisatoYano committed Jul 4, 2024
1 parent da04da4 commit b08e6e4
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/components/control/pid/pid_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ def __init__(self, spec, course=None):
self.course = course
self.look_ahead_distance_m = self.MIN_LOOK_AHEAD_DISTANCE_M
self.target_course_index = 0
self.feedforward_steer_rad = 0.0
self.target_accel_mps2 = 0.0
self.target_steer_rad = 0.0
self.target_yaw_rate_rps = 0.0
Expand All @@ -53,18 +54,16 @@ def _calculate_target_acceleration_mps2(self, state):
diff_speed_mps = self.course.calculate_speed_difference_mps(state, self.target_course_index)
self.target_accel_mps2 = self.SPEED_PROPORTIONAL_GAIN * diff_speed_mps

def _calculate_target_steer_angle_rad(self, state):
def _calculate_feedforward_steer_angle_rad(self, state):
"""
Private function to calculate steering angle input
state: Vehicle's state object
"""

target_curvature = self.course.target_point_curvature(self.target_course_index)
self.target_steer_rad = atan(self.WHEEL_BASE_M * target_curvature)
# diff_angle_rad = self.course.calculate_angle_difference_rad(state, self.target_course_index)
# self.target_steer_rad = atan2((2 * self.WHEEL_BASE_M * sin(diff_angle_rad)), self.look_ahead_distance_m)
self.feedforward_steer_rad = atan(self.WHEEL_BASE_M * target_curvature)

def _calculate_error_against_course(self, state):
def _calculate_target_steer_rad(self, state):
target_x_m = self.course.point_x_m(self.target_course_index)
target_y_m = self.course.point_y_m(self.target_course_index)
current_x_m = state.get_x_m()
Expand All @@ -79,6 +78,8 @@ def _calculate_error_against_course(self, state):
error_lonlat_m = rot_mat @ error_xy_m
error_yaw_rad = current_yaw_rad - atan2(error_y_m, error_x_m)

self.target_steer_rad = -0.3 * error_lonlat_m[1, 0] - 0.5 * error_yaw_rad + self.feedforward_steer_rad


def _calculate_target_yaw_rate_rps(self, state):
"""
Expand All @@ -100,11 +101,11 @@ def update(self, state):

self._calculate_target_acceleration_mps2(state)

self._calculate_target_steer_angle_rad(state)
self._calculate_feedforward_steer_angle_rad(state)

self._calculate_error_against_course(state)
self._calculate_target_steer_rad(state)

# self._calculate_target_yaw_rate_rps(state)
self._calculate_target_yaw_rate_rps(state)

def get_target_accel_mps2(self):
"""
Expand Down

0 comments on commit b08e6e4

Please sign in to comment.