Valet Parking with Model Predictive Control - MATLAB
Video Player is loading.
Current Time 0:00
Duration 3:52
Loaded: 1.00%
Stream Type LIVE
Remaining Time 3:52
 
1x
  • Chapters
  • descriptions off, selected
  • captions off, selected
      Video length is 3:52

      Valet Parking with Model Predictive Control

      Use the new Vehicle Path Planner System block from Model Predictive Control Toolbox™ to calculate a collision-free path to park a car in a garage. Unlike model-free planners, the Vehicle Path Planner System block uses a kinematic vehicle model for prediction, therefore guaranteeing feasibility of the planned path.

      Published: 6 Oct 2022

      In this video, we showcase the new Vehicle Path Planner block for a model predictive control toolbox. The VPP block can be used to generate a collision-free path for a mobile robot or vehicle from a starting pose to a target pose. The VPP block is an enabled subsystem. You can enable the block when it's needed-- for example, when the vehicle is near a vacant parking lot.

      The block runs multi-stage nonlinear model predictive control under the hood. It's easy to set constraints on the control variables such as velocity and steering angle. By using model predictive control the generated path is dynamically feasible since the vehicle dynamics are considered when solving the planning problem.

      Now let's see an example where we use the VPP block for parking a vehicle in a garage. The model contains four major components. The Decision Logic subsystem selects when to use each of the control modes-- driving, planning, parking, and waiting. For this example, the decision logic is time-based. The Control Commands subsystem outputs the control commands based on the selected control mode. Steering angle and velocity are the control commands for this example.

      Ego Vehicle Model-- this subsystem models the vehicle dynamics with a basic kinematic model. Parking Visualizer subsystem visualizes the simulation results using animation and scopes.

      In this example, the parking garage contains an Ego vehicle and eight static obstacles. The obstacles are given by 6 parked vehicles, a reserved parking area, and its garage border. The goal of the Ego vehicle is to park at our target post without colliding with any of the obstacles. The reference point on our Ego pose is located at the center of the rear axle.

      Let's take a deeper look at the VPP block. Each vehicle is modeled as a typical sedan. The parameters for Ego vehicle can be specified here, such as its length and width. The eight obstacles are specified in the block mask. The minimum distance to obstacles is said to be 0.1 meters. You can specify a subset of obstacles that is close to the desired parking lot.

      The MPC Controller parameters can be specified here. You can set explicitly the velocity range and the steering angle range. With the VPP parameters set up for our application, let's go ahead and simulate the model. In the first five seconds the vehicle drives and finds a parking lot. After that, the planner generates a path to the target parking lot. A tracking controller takes over and it drives the vehicle to the target parking lot, following the planned path.

      We can take a closer look at the simulation results. The vehicle drives at constant velocity until five seconds. From five to seven seconds the vehicle waits for the planner to complete planning, and the tracking controller is ready. You can change the target parking lot and number of obstacles and view the performance. For example, let's park the vehicle at a different location.

      Again, the VPP block parks the vehicle successfully. This concludes the video.

      View more related videos