0

Python で MPC コントローラーを設計しようとしていますが、どこから始めればよいかわかりません。YouTube で動画を見ましたが、さらに混乱しました。基本的に、これはシミュレートされた自動運転車用です。そのための PID コントローラーは完成しましたが、まだシミュレーターで実行していません。

    def PID(self, Kp, Ki, Kd, reference_velocity, vehicle_velocity, current_time, last_update_time):

        errors = []

        Kp = 0
        Ki = 0
        Kd = 0

        error = reference_velocity - vehicle_velocity
        delta_time = current_time - last_update_time
        last_error = errors[-1]

        proportional = Kp * error
        integral = Ki * error
        derivative = Kd * ((error - last_error) / (delta_time))

        errors.append(error)

        return proportional + integral + derivative

しかし、MPC の開始方法がわかりません。私のinit関数には、次の値があります。

 def __init__(self, waypoints):
        self.vars                = cutils.CUtils()
        self._current_x          = 0
        self._current_y          = 0
        self._current_yaw        = 0
        self._current_speed      = 0
        self._desired_speed      = 0
        self._current_frame      = 0
        self._current_timestamp  = 0
        self._start_control_loop = False
        self._set_throttle       = 0
        self._set_brake          = 0
        self._set_steer          = 0
        self._waypoints          = waypoints
        self._conv_rad_to_steer  = 180.0 / 70.0 / np.pi
        self._pi                 = np.pi
        self._2pi                = 2.0 * np.pi

次の関数定義もあります。関数の本体は省略します。MPC でこれらを使用する必要があることはわかっていますが、それについてはガイダンスが必要です。

def update_values(self, x, y, yaw, speed, timestamp, frame):
def update_desired_speed(self):
def update_waypoints(self, new_waypoints):
def get_commands(self):
def set_throttle(self, input_throttle):
def set_steer(self, input_steer_in_rad):
def set_brake(self, input_brake):
def update_controls(self):
4

1 に答える 1