<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article article-type="research-article" dtd-version="2.3" xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Robot. AI</journal-id>
<journal-title>Frontiers in Robotics and AI</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Robot. AI</abbrev-journal-title>
<issn pub-type="epub">2296-9144</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="publisher-id">1120658</article-id>
<article-id pub-id-type="doi">10.3389/frobt.2023.1120658</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Robotics and AI</subject>
<subj-group>
<subject>Technology and Code</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Research on automatic emergency steering collision avoidance and stability control of intelligent driving vehicle</article-title>
<alt-title alt-title-type="left-running-head">Liu et al.</alt-title>
<alt-title alt-title-type="right-running-head">
<ext-link ext-link-type="uri" xlink:href="https://doi.org/10.3389/frobt.2023.1120658">10.3389/frobt.2023.1120658</ext-link>
</alt-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name>
<surname>Liu</surname>
<given-names>Zhaoyong</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="aff" rid="aff2">
<sup>2</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Wen</surname>
<given-names>Gaobo</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/2131239/overview"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Liu</surname>
<given-names>Wudong</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Tan</surname>
<given-names>TanXiaoqiang</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<uri xlink:href="https://loop.frontiersin.org/people/211888/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Wu</surname>
<given-names>Guangqiang</given-names>
</name>
<xref ref-type="aff" rid="aff1">
<sup>1</sup>
</xref>
<xref ref-type="corresp" rid="c001">&#x2a;</xref>
</contrib>
</contrib-group>
<aff id="aff1">
<sup>1</sup>
<institution>School of Automotive Studies</institution>, <institution>Tongji University</institution>, <addr-line>Shanghai</addr-line>, <country>China</country>
</aff>
<aff id="aff2">
<sup>2</sup>
<institution>Global Technology Co.</institution>, <institution>Ltd</institution>, <addr-line>Nantong</addr-line>, <country>China</country>
</aff>
<author-notes>
<fn fn-type="edited-by">
<p>
<bold>Edited by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1986142/overview">Xin Xia</ext-link>, University of California, Los Angeles, United States</p>
</fn>
<fn fn-type="edited-by">
<p>
<bold>Reviewed by:</bold> <ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/1752210/overview">Wei Liu</ext-link>, Purdue University, United States</p>
<p>
<ext-link ext-link-type="uri" xlink:href="https://loop.frontiersin.org/people/2112694/overview">Weihua Li</ext-link>, Harbin Institute of Technology, Weihai, China</p>
</fn>
<corresp id="c001">&#x2a;Correspondence: Guangqiang Wu, <email>wuguangqiang@tongji.edu.cn</email>
</corresp>
<fn fn-type="other">
<p>This article was submitted to Robotic Control Systems, a section of the journal Frontiers in Robotics and AI</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>21</day>
<month>02</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>10</volume>
<elocation-id>1120658</elocation-id>
<history>
<date date-type="received">
<day>10</day>
<month>12</month>
<year>2022</year>
</date>
<date date-type="accepted">
<day>06</day>
<month>02</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2023 Liu, Wen, Liu, Tan and Wu.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Liu, Wen, Liu, Tan and Wu</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>In view of the need for emergency steering to avoid collision when the vehicle is in a dangerous scene, and the stability control of the vehicle during collision avoidance. This paper proposes a planning and control framework. A path planner considering the kinematics and dynamics of the vehicle system is used to formulate the safe driving path under emergency conditions. LQR lateral control algorithm is designed to calculate the output steering wheel angle. On this basis, adaptive MPC control algorithm and four-wheel braking force distribution control algorithm are designed to achieve coordinated control of vehicle driving stability and collision avoidance safety. The simulation results show that the proposed algorithm can complete the steering collision avoidance task quickly and stably.</p>
</abstract>
<kwd-group>
<kwd>trajectory planning</kwd>
<kwd>stability control</kwd>
<kwd>LQR lateral control</kwd>
<kwd>emergency collision avoidance</kwd>
<kwd>direct yaw moment control</kwd>
</kwd-group>
</article-meta>
</front>
<body>
<sec id="s1">
<title>Introduction</title>
<p>The Advanced Driver Assistance Systems (ADAS) are effective in reducing crashes. Most ADAS systems have one thing in common, that is, they all affect the longitudinal control of the vehicle to avoid the collision (<xref ref-type="bibr" rid="B1">Borrello et al., 2020</xref>; <xref ref-type="bibr" rid="B16">Rabhi et al., 2021</xref>; <xref ref-type="bibr" rid="B26">Zha et al., 2021</xref>; <xref ref-type="bibr" rid="B9">Hang et al., 2022</xref>; <xref ref-type="bibr" rid="B21">Wu et al., 2023</xref>).</p>
<p>Although, there are certain situations where a collision cannot be avoided by braking but only by steering operations. However, lots of studies show that in the case of an impending rear-end collision, many drivers tend to only brake rather than try to avoid obstacles by steering (<xref ref-type="bibr" rid="B18">Schieben et al., 2014</xref>). There are different reasons for this behavior. Firstly, it is an instinctive reaction to stop in order to reduce the impact of an impending collision. Secondly, steering is more complex than braking, so it requires the driver to have a higher awareness of the situation and a higher driving ability. Therefore, Automatic Emergency Steering System (AES) is of great significance.</p>
<p>For vehicle trajectory planning, Yang proposed a dynamic planning method for vehicle collaborative trajectory planning under the scenario of forced lane change, which aims to provide suggested lane change distance and reference trajectory for each autonomous vehicle in a coordinated manner (<xref ref-type="bibr" rid="B25">Yang et al., 2022</xref>). A dynamic programming way is established to determine the suggested distance of all vehicles and the non-convex quadratic constraint is applied to characterize the trajectory determination problem. Considering driver comfort and collision risk, <xref ref-type="bibr" rid="B11">Li et al. (2022)</xref> proposed a human-like motion planning strategy based on probabilistic prediction under dynamic environment. They realized path generation based on quintic polynomials, and optimized the target trajectory by using cost functions with four indexes including safety, consistency, smoothness and distance from local path to global path. <xref ref-type="bibr" rid="B3">Cheng et al. (2022)</xref> proposed a deep reinforcement learning method based on time difference to solve the longitudinal trajectory planning of autonomous vehicles at signal-controlled intersections. <xref ref-type="bibr" rid="B23">Xiao et al. (2021)</xref> [10] proposed the control barrier function method for critical safety control and developed a real-time control framework that combines the optimal trajectory generated with the computational efficiency method that provides safety assurance.</p>
<p>Vehicle collision risk assessment is the key to trigger AES. For vehicle risk assessment, <xref ref-type="bibr" rid="B10">Li et al., 2021</xref> proposed a multi-scene collision avoidance decision algorithm for autonomous vehicles, and used the situation assessment module based on conditional random field to assess the risk level of the surrounding traffic participants. Based on the situation assessment module, collision avoidance strategies with driving style preferences (such as aggressive or conservative) are proposed to meet the needs of different drivers. <xref ref-type="bibr" rid="B5">Cui et al. (2021)</xref> proposed a layered framework of manned or autonomous vehicles for collision avoidance in emergency situations. They adopted finite-state machine (FSM) technology to determine appropriate strategies for collision avoidance, and established a collision risk model, taking into account vehicle risks around overlapping areas, road attachment risks and vehicle stability performance. <xref ref-type="bibr" rid="B7">Gilbert et al. (2021)</xref> proposed a decision-making system that selects the lightest collision when vehicles are confronted with inevitable collisions on the highway. They applied the multi-attribute decision-making method to judge the severity of the collision. For the autonomous lane change decision of trucks, <xref ref-type="bibr" rid="B2">Chen et al. (2020)</xref> proposed a lane change decision model based on support vector machine. <xref ref-type="bibr" rid="B17">Ren and Wu, 2020</xref> proposed a fusion architecture of decision planning under dynamic Environment And Used Back Propagation Neural Network (BPNN) to predict the lane change of vehicles around the block.</p>
<p>The AES control layer will track the trajectory planned by the decision layer. For the vehicle trajectory tracking, <xref ref-type="bibr" rid="B6">Ge et al., 2022</xref> rely on the precise model for the traditional MPC. When the autonomous vehicle encounters external interference and perturbation, the steady-state non-offset tracking cannot be realized, and the MPC solver is biased to solve the coupling control problem. <xref ref-type="bibr" rid="B12">Li et al. (2021)</xref> studied that under extreme driving conditions, the coupling between the longitudinal and transverse motion of the vehicle becomes significant due to the highly non-linear force of the tire, which affects the stability of the vehicle. They proposed a model prediction controller of electric vehicle driven by four-wheel independent motor, in which changes in the longitudinal velocity are regarded as interference in the vehicle dynamics model. Then, the additional torque generated by the model-based controller with the multi-objective design is considered for balance. <xref ref-type="bibr" rid="B19">Tork et al. (2021)</xref> proposed an independent model control based on neural network for path tracking control. The control scheme utilized the input of steering Angle and torque to realize cooperative control of transverse and longitudinal motion.</p>
<p>In summary, collision avoidance and stabilization are the two critical issues when an autonomous vehicle in an emergency situation, which usually occurs in a short time and requires large actuator inputs, as well as a highly non-linear response. Real-time vehicle decision-making, planning and control plays an important role in avoiding collisions while stabilizing autonomous vehicles in extreme scenarios. <xref ref-type="bibr" rid="B14">Liu et al. (2017)</xref> proposed a method to establish the stability criterion of vehicle yaw based on the phase plane method of sideslip-yaw rate, which solved the problem of judging the type of vehicle stability region under different driving conditions, and provided a theoretical basis for the intervention algorithm of stability control system. <xref ref-type="bibr" rid="B27">Zhang et al. (2017)</xref> considered the influence of tire slip and actuator torque saturation on driving and braking, and designed a dynamic controller to overcome integral saturation by using a conditional integrator to ensure accurate tracking of the required signals under the influence of tire force and actuator constraints. Vehicle state and parameter estimation is an important part of vehicle dynamic control. <xref ref-type="bibr" rid="B13">Liu et al. (2021)</xref> proposed a new estimation method of vehicle side-slip angle based on kinematic model, which integrated the information of Global Navigation Satellite System (GNSS) and inertial Measurement Unit (IMU). <xref ref-type="bibr" rid="B22">Xia et al. (2018)</xref> proposed a method to estimate the attitude and lateral velocity of an autonomous vehicle with the assistance of vehicle dynamics using a six-degree-of-freedom IMU. <xref ref-type="bibr" rid="B15">Liu et al. (2018)</xref> proposed a method based on kinematics model that integrates intelligent vehicle sensors to estimate sideslip angle, aiming at the problem that the non-linear characteristics and parameter uncertainties of vehicles make it difficult for the method based on dynamic model to estimate the sideslip angle of vehicles under harsh working conditions. <xref ref-type="bibr" rid="B24">Xiong et al. (2020)</xref> proposed a new automatic vehicle sideslip angle and attitude estimation method based on IMU for low sampling rate GNSS speed and position parallel adaptive Kalman filters.</p>
<p>The existing steering collision avoidance system often only considers the safety risk of collision avoidance, but does not consider the impact of dynamic factors on stability. At the same time, stability has a certain impact on tracking control accuracy, which should also be considered. Therefore, the contribution of this paper is to propose a real-time emergency steering collision avoidance and stability control method, and design a simulation experiment based on the influence of stability control on tracking accuracy and other factors.</p>
<p>As shown in <xref ref-type="fig" rid="F1">Figure 1</xref>, the lateral path planning and path tracking control considering motion stability designed in this paper are parts of the coordinated control architecture of vehicle driving stability and collision avoidance safety, which can realize automatic collision avoidance control and ensure the vehicle&#x2019;s security and stability. Based on perception and state estimation information, the framework judges driving safety and collision risk and makes decisions based on TTC (time to collision), and uses dynamic programming and quadratic programming methods to plan paths and determine collision-free paths. Then, according to the characteristics of stability control in emergency collision avoidance scenarios, an adaptive MPC control algorithm is designed. Finally, the obtained steering wheel angle and four-wheel braking force are applied to the actual vehicle.</p>
<fig id="F1" position="float">
<label>FIGURE 1</label>
<caption>
<p>Coordinated control for vehicle driving stability and collision avoidance safety.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g001.tif"/>
</fig>
</sec>
<sec id="s2">
<title>Vehicle dynamics model</title>
<sec id="s2-1">
<title>3-DOF vehicle dynamics model</title>
<p>We rationally simplified the vehicle model (<xref ref-type="bibr" rid="B20">Wu G. 2021</xref>) to obtain a three-degree-of-freedom(3-DOF) vehicle dynamics model, as shown in <xref ref-type="fig" rid="F2">Figure 2</xref>, which mainly includes vehicle longitudinal, lateral and yaw motions, where <inline-formula id="inf1">
<mml:math id="m1">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the front wheel angle, and <inline-formula id="inf2">
<mml:math id="m2">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the wheel braking force, <inline-formula id="inf3">
<mml:math id="m3">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>Y</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the wheel lateral force, <inline-formula id="inf4">
<mml:math id="m4">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the longitudinal speed, <inline-formula id="inf5">
<mml:math id="m5">
<mml:mrow>
<mml:msub>
<mml:mi>v</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the lateral speed, <inline-formula id="inf6">
<mml:math id="m6">
<mml:mrow>
<mml:mi>v</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the speed of the vehicle, <inline-formula id="inf7">
<mml:math id="m7">
<mml:mrow>
<mml:mi>&#x3b2;</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the sideslip angle, <inline-formula id="inf8">
<mml:math id="m8">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf9">
<mml:math id="m9">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the distance of the center of mass and the front and rear axles, <inline-formula id="inf10">
<mml:math id="m10">
<mml:mrow>
<mml:msub>
<mml:mi>l</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the wheelbase, <inline-formula id="inf11">
<mml:math id="m11">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the sideslip angle of the front wheel, <inline-formula id="inf12">
<mml:math id="m12">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the sum of the yaw moment of the vehicle, <inline-formula id="inf13">
<mml:math id="m13">
<mml:mrow>
<mml:mi mathvariant="normal">r</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the yaw rate of the vehicle.</p>
<fig id="F2" position="float">
<label>FIGURE 2</label>
<caption>
<p>3-DOF vehicle dynamics model.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g002.tif"/>
</fig>
<p>The differential equations of motion of the vehicle:<disp-formula id="e1">
<mml:math id="m14">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2211;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#xd7;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(1)</label>
</disp-formula>
</p>
<p>So far, the establishment of the 3-DOF model of the vehicle considering the lateral, longitudinal and yaw motions has been completed, and this model will be used to describe the basic characteristics of the vehicle during motion.</p>
</sec>
<sec id="s2-2">
<title>Linear tire model</title>
<p>In the case of a small vehicle front wheel angle, the relationship between the wheel lateral force and the sideslip angle of this wheel can be approximately regarded as a linear relationship (<xref ref-type="bibr" rid="B20">Wu G. 2021</xref>), thus:<disp-formula id="e2">
<mml:math id="m15">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">Y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1,2</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">Y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">3,4</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(2)</label>
</disp-formula>Where <inline-formula id="inf14">
<mml:math id="m16">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf15">
<mml:math id="m17">
<mml:mrow>
<mml:msub>
<mml:mi>k</mml:mi>
<mml:mi>r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the cornering stiffnesses of the front and rear axles, respectively. Front and rear wheel sideslip angles, vehicle sideslip angle and their derivatives are:<disp-formula id="e3">
<mml:math id="m18">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(3)</label>
</disp-formula>
<disp-formula id="e4">
<mml:math id="m19">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(4)</label>
</disp-formula>
</p>
</sec>
</sec>
<sec id="s3">
<title>Collision avoidance trajectory planning</title>
<p>The goal of trajectory planning is to generate a smooth enough curve to change the position of the vehicle under the premise of ensuring the safety of the vehicle. The smoothness is to ensure that the vehicle can track along the trajectory. The trajectory planning module will receive the environment information including vehicle location information and road information. A planned trajectory is transmitted to the vehicle motion control module as shown in <xref ref-type="fig" rid="F3">Figure 3</xref>.</p>
<fig id="F3" position="float">
<label>FIGURE 3</label>
<caption>
<p>Trajectory planning during the steering.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g003.tif"/>
</fig>
<p>Usually trajectory planning can be decomposed into speed planning and path planning. Since the change of speed is not considered in the planning process of steering collision avoidance, we assume that the longitudinal speed is constant in the planning process, and only the path planning is designed here.</p>
<sec id="s3-1">
<title>Path planning</title>
<p>Using numerical methods, the path planning problem in discrete space can be abstracted as a quadratic programming problem, and the construction of this problem mainly includes two parts: the design cost function and the determination of the constraints of the problem. In designing the cost function, we need to consider the requirements of smoothness, not deviating from the road centerline and being away from obstacles. At the same time, in order to accelerate the solution, we first use dynamic programming to open up feasible space and therefore determine the constraints of the planning problem. After the problem is constructed, we use the iterative method to solve the quadratic programming problem.</p>
<p>The cost function of path planning can be divided into smoothing cost, reference line cost and obstacle cost. The road is discretized along the centerline and its perpendicular direction, x is the coordinate of the road centerline, and y is the coordinate of the point which is perpendicular to the road.</p>
<p>The smoothing cost <inline-formula id="inf16">
<mml:math id="m20">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is divided into three parts, <inline-formula id="inf17">
<mml:math id="m21">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf18">
<mml:math id="m22">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf19">
<mml:math id="m23">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and their meanings correspond to the cost weights generated by the first, second, and third derivatives of the path:<disp-formula id="e5">
<mml:math id="m24">
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:msup>
<mml:mo>&#x2032;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>,</mml:mo>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:msup>
<mml:mo>&#x2033;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:msup>
<mml:mo>&#x2032;</mml:mo>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>&#x2034;</mml:mo>
</mml:mrow>
</mml:math>
<label>(5)</label>
</disp-formula>
</p>
<p>The reference line cost is <inline-formula id="inf20">
<mml:math id="m25">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and <inline-formula id="inf21">
<mml:math id="m26">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the corresponding weight:<disp-formula id="e6">
<mml:math id="m27">
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:mrow>
</mml:math>
<label>(6)</label>
</disp-formula>
</p>
<p>The obstacle cost is <inline-formula id="inf22">
<mml:math id="m28">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf23">
<mml:math id="m29">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> represents the corresponding weight, and <inline-formula id="inf24">
<mml:math id="m30">
<mml:mrow>
<mml:mi mathvariant="normal">d</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> represents the distance between the obstacle and the vehicle, where <inline-formula id="inf25">
<mml:math id="m31">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>c</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>l</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>s</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a rather large value.<disp-formula id="e7">
<mml:math id="m32">
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mn mathvariant="bold">0</mml:mn>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x2265;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1000</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2004;</mml:mo>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mtext>&#x2002;</mml:mtext>
<mml:mn mathvariant="bold">3</mml:mn>
<mml:mo>&#x3c;</mml:mo>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x3c;</mml:mo>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">W</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mtext>&#x2002;</mml:mtext>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mo>&#x2264;</mml:mo>
<mml:mn mathvariant="bold">3</mml:mn>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(7)</label>
</disp-formula>
</p>
<p>Combining the above three formulas, the total planning cost <inline-formula id="inf26">
<mml:math id="m33">
<mml:mrow>
<mml:mi>C</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>n</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>e</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of each discrete point can be obtained, and its value is equal to the sum of the above three costs:<disp-formula id="e8">
<mml:math id="m34">
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">n</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">n</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(8)</label>
</disp-formula>
</p>
<p>The planned trajectory needs that the curvature is continuous. <inline-formula id="inf27">
<mml:math id="m35">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>x</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the sampling interval in the direction of the road centerline, <inline-formula id="inf28">
<mml:math id="m36">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the first derivative of y to x at the i-th sampling point, <inline-formula id="inf29">
<mml:math id="m37">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mi>i</mml:mi>
</mml:msub>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> is the second derivative of y to x at the i-th sampling point:<disp-formula id="e9">
<mml:math id="m38">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x2032;</mml:mo>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:mo>&#x394;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:mo>&#x394;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>&#x2b;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
<mml:mo>&#x2033;</mml:mo>
</mml:msup>
</mml:mrow>
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(9)</label>
</disp-formula>
</p>
<p>The solution of the planning is first to obtain the initial solution by dynamic programming, and then to obtain the final result by secondary programming, as shown in <xref ref-type="fig" rid="F4">Figure 4</xref>. In order to speed up the calculation of the quadratic programming problem, the result of the dynamic programming is regarded as a rough solution and a feasible space is opened up. <inline-formula id="inf30">
<mml:math id="m39">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf31">
<mml:math id="m40">
<mml:mrow>
<mml:msub>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the maximum and minimum value of the feasible space, <inline-formula id="inf32">
<mml:math id="m41">
<mml:mrow>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:msubsup>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="italic">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
</mml:mrow>
</mml:math>
</inline-formula> is the value range of the path restricted by the road, <inline-formula id="inf33">
<mml:math id="m42">
<mml:mrow>
<mml:mi>y</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi>o</mml:mi>
<mml:mi>b</mml:mi>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> is the position corresponding to the obstacle car, <inline-formula id="inf34">
<mml:math id="m43">
<mml:mrow>
<mml:mi>w</mml:mi>
<mml:mi>i</mml:mi>
<mml:mi>d</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula> is the width of the obstacle car:<disp-formula id="e10">
<mml:math id="m44">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
<mml:mo>&#x2004;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3e;</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">max</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msubsup>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">j</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x2032;</mml:mo>
</mml:msubsup>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mo>_</mml:mo>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">w</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mo>/</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">o</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(10)</label>
</disp-formula>
</p>
<fig id="F4" position="float">
<label>FIGURE 4</label>
<caption>
<p>Path planning feasible space(DP).</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g004.tif"/>
</fig>
<p>After a lot of tuning, the parameters of the planning algorithm are finally selected <inline-formula id="inf35">
<mml:math id="m45">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>15</mml:mn>
<mml:mo>;</mml:mo>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>20000</mml:mn>
<mml:mo>;</mml:mo>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5000</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>; <inline-formula id="inf36">
<mml:math id="m46">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>15</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
</sec>
<sec id="s3-2">
<title>Quadratic programming problem solving</title>
<p>The advantage of Dynamic Programming (DP) is to decompose each column of the discrete space into a sub-problem and solve the optimal path from the last column through the inverse method. On the basis of discretization of the solution space, the initial path can be calculated by using dynamic programming. According to this path, a preliminary decision can be made on the path planning problem to reduce the search range of the quadratic feasible space, as shown in <xref ref-type="fig" rid="F4">Figure 4</xref>. The advantage of the iterative method for solving quadratic programming problems is that it can balance the solution time and effect. This article does not focus on this aspect, so directly call the quadratic planner solution function in MATLAB.</p>
</sec>
</sec>
<sec id="s4">
<title>Control strategy of collision avoidance system</title>
<p>In this paper, a path-following control system considering motion stability is proposed. Its purpose is to judge the risk of collision when an obstacle appears in front of the vehicle, and automatically implement emergency collision avoidance with the stability of the vehicle body, as shown in <xref ref-type="fig" rid="F5">Figure 5</xref>. The structure of the system can be mainly divided into three parts: TTC risk assessment, LQR lateral control and adaptive Model Predictive Control (MPC) stability control.</p>
<fig id="F5" position="float">
<label>FIGURE 5</label>
<caption>
<p>Vehicle emergency steering and collision avoidance stability control.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g005.tif"/>
</fig>
<p>First, according to the collision risk assessment module, the collision time TTC is calculated according to the state of the vehicle and the environment perception information to judge the safety of the current vehicle. TTC refers to the time it would take for a collision to occur at the prevailing speeds, distances, and trajectories associated with the driver&#x2019;s vehicle and the closest lead vehicle. TTC can be kinematically defined as the range between a following and lead vehicle divided by the relative velocity between these vehicles. Hence, TTC provides a measure of crash risk or the time before impact if prevailing conditions continue (<xref ref-type="bibr" rid="B4">Coelingh et al., 2010</xref>; <xref ref-type="bibr" rid="B8">Han et al., 2014</xref>). We have carried out related research in this part, but it is not the focus of this article. Considering the complex and changeable traffic conditions, as well as the possible instability of the vehicle caused by the large action of the actuator, this paper designs an adaptive MPC module to control the yaw moment of the vehicle to ensure the stability of the vehicle. The module judges whether to intervene. In addition, the linear quadratic regulator (LQR) controller is proposed in this paper to calculate the output signal steering angle &#x3b4; according to the lateral error <inline-formula id="inf37">
<mml:math id="m47">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and heading angle error <inline-formula id="inf38">
<mml:math id="m48">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, so that the vehicle can always track the road centerline. Finally, in terms of braking force control and distribution, the braking force distribution and control module will calculate the braking forces <inline-formula id="inf39">
<mml:math id="m49">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> according to the expected deceleration and the expected additional yaw moment of the vehicle, and From this, the braking pressures <inline-formula id="inf40">
<mml:math id="m50">
<mml:mrow>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>3</mml:mn>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3001;</mml:mo>
<mml:msub>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mi>X</mml:mi>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of each wheel cylinder are further obtained.</p>
<sec id="s4-1">
<title>LQR lateral control</title>
<p>The main purpose of lateral control is to control the lateral error within a certain range. As a result we can get a better track of the desired path and the heading angle of the vehicle. The content of this section is mainly based on the LQR to design the controller to track path. The state variables of the control system are four parameters, including: lateral error <inline-formula id="inf41">
<mml:math id="m51">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, rate of change of lateral error <inline-formula id="inf42">
<mml:math id="m52">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>, and heading angle error <inline-formula id="inf43">
<mml:math id="m53">
<mml:mrow>
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the rate of change of heading angle error <inline-formula id="inf44">
<mml:math id="m54">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi>e</mml:mi>
<mml:mi>h</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
</inline-formula>. The following formula is the state space equation of the system:<disp-formula id="e11">
<mml:math id="m55">
<mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x00EB;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x00EB;</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
<label>(11)</label>
</disp-formula>Where:<disp-formula id="eq12">
<mml:math id="m56">
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfenced open="" close=")" separators="|">
<mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mo>(</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">a</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">b</mml:mi>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(12)</label>
</disp-formula>
</p>
<p>Eq.<xref ref-type="disp-formula" rid="e11">11</xref> can be expressed as:<disp-formula id="e13">
<mml:math id="m58">
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b8;</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
</mml:math>
<label>(13)</label>
</disp-formula>
</p>
<p>Error:<disp-formula id="e14">
<mml:math id="m59">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
</mml:mtd>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
<mml:mtd>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
<mml:mtd>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">h</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
<label>(14)</label>
</disp-formula>
</p>
<p>The control quantity is <inline-formula id="inf45">
<mml:math id="m60">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b4;</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>From the above state equation, we can get the objective function and corresponding constraints of the LQR controller:<disp-formula id="equ2">
<mml:math id="m61">
<mml:mrow>
<mml:mi mathvariant="bold-italic">Min</mml:mi>
<mml:mtext>&#x2003;</mml:mtext>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfrac>
<mml:msubsup>
<mml:mo>&#x222b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:msubsup>
<mml:mrow>
<mml:mo>(</mml:mo>
</mml:mrow>
<mml:msup>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mo>(</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">R</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mo>(</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mrow>
<mml:mo>)</mml:mo>
</mml:mrow>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">s</mml:mi>
<mml:mo>.</mml:mo>
<mml:mi mathvariant="bold-italic">t</mml:mi>
<mml:mo>.</mml:mo>
<mml:mtext>&#x2002;</mml:mtext>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:math>
<label>(15)</label>
</disp-formula>Where <inline-formula id="inf46">
<mml:math id="m63">
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mn>0</mml:mn>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>t</mml:mi>
<mml:mi>f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
</inline-formula> is the time domain, Q and R represent the weighted matrix of state and control quantity.</p>
<p>The optimal solution of this problem satisfies the following:<disp-formula id="e16">
<mml:math id="m64">
<mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mo>&#x2a;</mml:mo>
</mml:msup>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mi mathvariant="bold">T</mml:mi>
</mml:msup>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mtext>&#x2009;</mml:mtext>
<mml:msub>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(16)</label>
</disp-formula>
</p>
<p>The expression of P is:<disp-formula id="e17">
<mml:math id="m65">
<mml:mrow>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">R</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">Q</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(17)</label>
</disp-formula>
</p>
<p>The LQR controller is:<disp-formula id="e18">
<mml:math id="m66">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi mathvariant="bold-italic">X</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(18)</label>
</disp-formula>Where <inline-formula id="inf47">
<mml:math id="m67">
<mml:mrow>
<mml:mi>K</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#x2212;</mml:mo>
<mml:msup>
<mml:mi>R</mml:mi>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>1</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msup>
<mml:mi>B</mml:mi>
<mml:mi>T</mml:mi>
</mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mtext>&#x2009;</mml:mtext>
<mml:mi>P</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>t</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represents the controller gain.</p>
</sec>
<sec id="s4-2">
<title>Adaptive model predictive control stability control module</title>
<p>In order to trade off the calculation efficiency and calculation accuracy, we assume that the longitudinal velocity <inline-formula id="inf48">
<mml:math id="m68">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> in the <xref ref-type="disp-formula" rid="e1">Formula. 1</xref> of the vehicle dynamics model remains unchanged. At this time, the three-degree-of-freedom model of the vehicle is simplified to two-degree-of-freedom. At the same time, it is brought into the <xref ref-type="disp-formula" rid="e4">Formula. 4</xref>, where the longitudinal velocity <inline-formula id="inf49">
<mml:math id="m69">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a time-varying model parameter, and the sideslip angle and the yaw rate are taken as the state quantities, which can be finally simplified to obtain the following state space equation:<disp-formula id="e19">
<mml:math id="m70">
<mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mover accent="true">
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mfrac>
<mml:mrow>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
<mml:mtd>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mtd>
<mml:mtd>
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mover accent="true">
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mo>&#x2d9;</mml:mo>
</mml:mover>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mfrac>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mn mathvariant="bold">0</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mi mathvariant="bold-italic">z</mml:mi>
</mml:msub>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(19)</label>
</disp-formula>Where select <inline-formula id="inf50">
<mml:math id="m71">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msup>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mi>r</mml:mi>
</mml:mtd>
<mml:mtd>
<mml:mi>&#x3b2;</mml:mi>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi>T</mml:mi>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula> as the state quantity, and <inline-formula id="inf51">
<mml:math id="m72">
<mml:mrow>
<mml:mi>u</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> as the control quantity.</p>
<p>Eq. <xref ref-type="disp-formula" rid="e9">9</xref> will calculate the reference values of the vehicle&#x2019;s yaw rate and sideslip angle. The deviation value is used as the index of vehicle lateral stability, and the larger the value, the greater the risk of lateral instability of the vehicle.<disp-formula id="e20">
<mml:math id="m73">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mo>/</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b4;</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x3b2;</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mi mathvariant="bold-italic">e</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
<mml:mo>/</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">v</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
</mml:msub>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">K</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:mi mathvariant="bold-italic">m</mml:mi>
</mml:mrow>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:mfrac>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
<mml:mo>&#x2212;</mml:mo>
<mml:mfrac>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">l</mml:mi>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:msub>
</mml:mrow>
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mi mathvariant="bold-italic">f</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfrac>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(20)</label>
</disp-formula>
</p>
<p>
<inline-formula id="inf52">
<mml:math id="m74">
<mml:mrow>
<mml:msub>
<mml:mi>r</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf53">
<mml:math id="m75">
<mml:mrow>
<mml:msub>
<mml:mi>&#x3b2;</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>e</mml:mi>
<mml:mi>f</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the reference yaw rate and sideslip angle, respectively, and K is the stability factor.</p>
<p>MPC is a feedback control strategy that discretizes the vehicle dynamics equation, and sets the sampling time as <inline-formula id="inf54">
<mml:math id="m76">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>5</mml:mn>
<mml:mo>&#xd7;</mml:mo>
<mml:mn>1</mml:mn>
<mml:msup>
<mml:mn>0</mml:mn>
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn>4</mml:mn>
</mml:mrow>
</mml:msup>
<mml:mi>s</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>. For time k, there is the following discrete equation:<disp-formula id="e21">
<mml:math id="m77">
<mml:mrow>
<mml:mfenced open="{" close="" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mi mathvariant="bold-italic">d</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
<mml:mtr>
<mml:mtd>
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(21)</label>
</disp-formula>Where,<disp-formula id="equ3">
<mml:math id="m78">
<mml:mrow>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x2217;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">A</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:msub>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">I</mml:mi>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">B</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">c</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">C</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">D</mml:mi>
<mml:mi mathvariant="bold-italic">c</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</disp-formula>
</p>
<p>
<inline-formula id="inf55">
<mml:math id="m79">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> represent the state, control input and output of the system at time k, respectively. Assuming that the prediction time domain is <inline-formula id="inf56">
<mml:math id="m80">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, and the control time domain is <inline-formula id="inf57">
<mml:math id="m81">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>, the control quantity will not change when the time exceeds the control time domain. Then the input and output predicted by time k are:<disp-formula id="e22">
<mml:math id="m82">
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(22)</label>
</disp-formula>
<disp-formula id="e23">
<mml:math id="m83">
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(23)</label>
</disp-formula>
</p>
<p>The control goal is to track the target and reduce the tracking error, that is,<disp-formula id="e24">
<mml:math id="m84">
<mml:mrow>
<mml:mfenced open="{" close="}" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>.</mml:mo>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:math>
<label>(24)</label>
</disp-formula>
</p>
<p>At the same time, the control constraints and output constraints of the system are set. Finally the optimization goal function that can characterize the control performance of the system is proposed. It needs to consider the cost of the expected tracking error and some other performances, such as the control action as small as possible. The objective function is:<disp-formula id="e25">
<mml:math id="m85">
<mml:mrow>
<mml:mi mathvariant="bold-italic">J</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi mathvariant="bold-italic">U</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">p</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:munderover>
<mml:msub>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x393;</mml:mi>
<mml:mi mathvariant="bold-italic">y</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">y</mml:mi>
<mml:mi mathvariant="bold-italic">p</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
<mml:mo>&#x2b;</mml:mo>
<mml:msub>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">m</mml:mi>
<mml:mi mathvariant="bold-italic">s</mml:mi>
</mml:msub>
</mml:munderover>
<mml:mrow>
<mml:mfenced open="&#x2016;" close="&#x2016;" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x393;</mml:mi>
<mml:mi mathvariant="bold-italic">u</mml:mi>
</mml:msub>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mi mathvariant="bold-italic">u</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">k</mml:mi>
<mml:mo>&#x2b;</mml:mo>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
<mml:mo>&#x7c;</mml:mo>
<mml:mi mathvariant="bold-italic">k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
<mml:mn mathvariant="bold">2</mml:mn>
</mml:msub>
</mml:mrow>
</mml:math>
<label>(25)</label>
</disp-formula>
<inline-formula id="inf58">
<mml:math id="m86">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is the weight of the output quantity, and <inline-formula id="inf59">
<mml:math id="m87">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> u is the weight of the control quantity increment. For time k, the open-loop optimization problem is transformed into solving <inline-formula id="inf60">
<mml:math id="m88">
<mml:mrow>
<mml:mi mathvariant="italic">min</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>J</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>x</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:mi>U</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi>k</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula> for the control variable U.</p>
<p>In order to improve the calculation efficiency, the longitudinal velocity <inline-formula id="inf61">
<mml:math id="m89">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is assumed to be constant when calculating the state space equation, but in the process of emergency collision avoidance, its longitudinal velocity <inline-formula id="inf62">
<mml:math id="m90">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> is a time variable. At this time, the internal model of MPC will also change with time, so an adaptive MPC solution method is proposed. The longitudinal velocity and longitudinal acceleration output by the system are fed back to the MPC controller to update the internal model of the controller, which is beneficial to improve controller performance.</p>
<p>After a large number of parameter tuning and system identification, the system can maintain the best performance as much as possible, and the corresponding parameters of the adaptive MPC controller are selected: prediction time domain <inline-formula id="inf63">
<mml:math id="m91">
<mml:mrow>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; 10, control time domain <inline-formula id="inf64">
<mml:math id="m92">
<mml:mrow>
<mml:msub>
<mml:mi>m</mml:mi>
<mml:mi>s</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> &#x3d; 5, and add hard constraints to the control input, Take <inline-formula id="inf65">
<mml:math id="m93">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi mathvariant="italic">min</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>4000</mml:mn>
<mml:mi>N</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf66">
<mml:math id="m94">
<mml:mrow>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>4000</mml:mn>
<mml:mi>N</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf67">
<mml:math id="m95">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:msub>
<mml:mi>u</mml:mi>
<mml:mi mathvariant="italic">max</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mo>&#xb1;</mml:mo>
<mml:mn>1000</mml:mn>
<mml:mi>N</mml:mi>
<mml:mi>m</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf68">
<mml:math id="m96">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mi>u</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mn>0.02</mml:mn>
</mml:mrow>
</mml:math>
</inline-formula>, <inline-formula id="inf69">
<mml:math id="m97">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">&#x393;</mml:mi>
<mml:mi>y</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:mfenced open="[" close="]" separators="|">
<mml:mrow>
<mml:mtable columnalign="center">
<mml:mtr>
<mml:mtd>
<mml:mn>1</mml:mn>
</mml:mtd>
<mml:mtd>
<mml:mn>2</mml:mn>
</mml:mtd>
</mml:mtr>
</mml:mtable>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
</inline-formula>.</p>
<p>So far, the parameter setting of the adaptive MPC controller is completed, and the optimal additional yaw moment <inline-formula id="inf70">
<mml:math id="m98">
<mml:mrow>
<mml:mo>&#x394;</mml:mo>
<mml:mi>M</mml:mi>
</mml:mrow>
</mml:math>
</inline-formula> can be calculated to avoid vehicle instability.</p>
</sec>
<sec id="s4-3">
<title>Vehicle tire braking force distribution strategy</title>
<p>The additional yaw moment <inline-formula id="inf71">
<mml:math id="m99">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> required by the vehicle has been obtained from the MPC controller as shown in <xref ref-type="fig" rid="F6">Figure 6</xref>:<disp-formula id="e26">
<mml:math id="m100">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mrow>
<mml:munderover>
<mml:mstyle displaystyle="true">
<mml:mo>&#x2211;</mml:mo>
</mml:mstyle>
<mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
<mml:mo>&#x3d;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
<mml:mn mathvariant="bold">4</mml:mn>
</mml:munderover>
<mml:mrow>
<mml:msup>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mo>&#x2212;</mml:mo>
<mml:mn mathvariant="bold">1</mml:mn>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msup>
<mml:msub>
<mml:mi mathvariant="bold-italic">F</mml:mi>
<mml:mrow>
<mml:mi mathvariant="bold-italic">x</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:msub>
<mml:mi mathvariant="bold-italic">L</mml:mi>
<mml:mi mathvariant="bold-italic">i</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(26)</label>
</disp-formula>
</p>
<fig id="F6" position="float">
<label>FIGURE 6</label>
<caption>
<p>Four-wheel braking force distribution.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g006.tif"/>
</fig>
<p>
<inline-formula id="inf72">
<mml:math id="m101">
<mml:mrow>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>F</mml:mi>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the longitudinal forces of the front and rear tires, <inline-formula id="inf73">
<mml:math id="m102">
<mml:mrow>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>r</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi>d</mml:mi>
<mml:mrow>
<mml:mi>f</mml:mi>
<mml:mi>i</mml:mi>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> are the lateral distances from the front and rear tires to the center of gravity of the vehicle. I represents the left or right side of the vehicle.</p>
<p>At present, the braking force distribution schemes for active braking of vehicles can be roughly divided into two types, single-wheel braking and multi-wheel braking. The braking force provided by the multi-wheel braking scheme is greater than that of the single-wheel braking scheme, but at the same time, the impact generated by the double-wheel braking scheme in the active braking process is also relatively large. In addition, the additional yaw moment generated by the wheel braking scheme is also larger. Therefore, in the face of emergencies, a multi-wheel braking scheme with faster control speed and larger upper limit of additional yaw moment is often adopted.</p>
<p>During the turning, the effects of braking different wheels on the steering dynamic performance are different, and the single-wheel control strategy will select different wheels for control under different vehicle states. If it is a two-wheel braking scheme, when the car is about to flick or understeer, the system will adopt the method of active braking the two wheels on the outer side of the vehicle&#x2019;s rotation direction at the same time to adjust the body state. The two wheels on the inner side of the steering wheel perform active braking to correct the body condition.</p>
<p>Then, it is necessary to select the most effective wheel to generate <inline-formula id="inf74">
<mml:math id="m103">
<mml:mrow>
<mml:msub>
<mml:mi>T</mml:mi>
<mml:mi>d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> according to the actual situation. If the front wheels cannot provide enough additional yaw moment, the remaining yaw moment can be generated by the training wheels. In order to design the wheel selection strategy, define the following formula:<disp-formula id="e27">
<mml:math id="m104">
<mml:mrow>
<mml:mo mathvariant="bold-italic">&#x19b;</mml:mo>
<mml:mo>&#x3d;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x19b;</mml:mi>
<mml:mi mathvariant="bold-italic">M</mml:mi>
</mml:msub>
<mml:mo>&#x22c5;</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x19b;</mml:mi>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:msub>
<mml:mo>,</mml:mo>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x19b;</mml:mi>
<mml:mi mathvariant="bold-italic">M</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">s</mml:mi>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="bold-italic">T</mml:mi>
<mml:mi mathvariant="bold-italic">d</mml:mi>
</mml:msub>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
<mml:mo>,</mml:mo>
<mml:msub>
<mml:mi mathvariant="bold-italic">&#x19b;</mml:mi>
<mml:mi mathvariant="bold-italic">&#x3b3;</mml:mi>
</mml:msub>
<mml:mo>&#x3d;</mml:mo>
<mml:mi mathvariant="bold">s</mml:mi>
<mml:mi mathvariant="bold">g</mml:mi>
<mml:mi mathvariant="bold">n</mml:mi>
<mml:mrow>
<mml:mfenced open="(" close=")" separators="|">
<mml:mrow>
<mml:mi mathvariant="bold-italic">r</mml:mi>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:mfenced>
</mml:mrow>
</mml:mrow>
</mml:math>
<label>(27)</label>
</disp-formula>
</p>
<p>As shown in <xref ref-type="fig" rid="F7">Figure 7</xref>, the wheel selection strategy is proposed based on <inline-formula id="inf75">
<mml:math id="m105">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x19b;</mml:mi>
<mml:mi>M</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> and <inline-formula id="inf76">
<mml:math id="m106">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="italic">&#x19b;</mml:mi>
<mml:mi>&#x3b3;</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula>. In <xref ref-type="fig" rid="F7">Figure 7</xref> [left front, right front wheel, rear left and right rear wheel], when the value in the vector is set to 1, corresponding tire brakes, when the value in the vector is set to 0, tire don&#x2019;t brake, 0&#x7c;1 said whether need the auxiliary brake wheel brake, for example, if the right front wheel braking does not produce enough yawing moment, we need to brake the right rear wheel to generate enough yaw torque. If the vehicle is oversteering (<italic>&#x19b;</italic>&#x3c;0), the priority braking wheels are the front outer wheels of the vehicle. When the vehicle understeers (<italic>&#x19b;</italic>&#x3e;0), the priority braking wheel is the rear inner wheel. Once the yaw moment provided by the front wheels is not enough, the remaining yaw moment can be generated by the selected auxiliary wheels.</p>
<fig id="F7" position="float">
<label>FIGURE 7</label>
<caption>
<p>Tire selection strategy.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g007.tif"/>
</fig>
<p>Finally, according to the selected braking wheels, the distributed four-wheel braking force can be obtained from <xref ref-type="disp-formula" rid="e26">Formula. 26</xref>.</p>
</sec>
</sec>
<sec id="s5">
<title>Simulation experiments</title>
<p>In order to verify the effectiveness of the algorithm in this paper, a joint simulation model was built in Carsim and MATLAB/Simulink, as shown in <xref ref-type="fig" rid="F8">Figure 8</xref>. During the operation of the collision avoidance algorithm, the vehicle is driving at a speed of about 84&#xa0;km/h. The obstacle car is located at (40, &#x2212;2) position, as shown in <xref ref-type="fig" rid="F9">Figure 9B</xref>. At this time, the vehicle is about to have a frontal collision, and the collision avoidance algorithm starts to run and the steering wheel is turned to the right. As shown in <xref ref-type="table" rid="T1">Table 1</xref>, the simulated vehicle parameters are selected from Carsim.</p>
<fig id="F8" position="float">
<label>FIGURE 8</label>
<caption>
<p>Carsim simulation diagram.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g008.tif"/>
</fig>
<fig id="F9" position="float">
<label>FIGURE 9</label>
<caption>
<p>
<bold>(A)</bold> Ego vehicle speed <bold>(B)</bold> Obstacle avoidance trajectory.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g009.tif"/>
</fig>
<table-wrap id="T1" position="float">
<label>TABLE 1</label>
<caption>
<p>Vehicle parameters.</p>
</caption>
<table>
<thead valign="top">
<tr>
<th align="center">Parameters</th>
<th align="center">Units</th>
<th align="center">Value</th>
</tr>
</thead>
<tbody valign="top">
<tr>
<td align="left">mass</td>
<td align="left">kg</td>
<td align="center">1570</td>
</tr>
<tr>
<td align="left">The moment of inertia of the body around the <italic>z</italic>-axis</td>
<td align="left">
<inline-formula id="inf77">
<mml:math id="m107">
<mml:mrow>
<mml:mi mathvariant="normal">k</mml:mi>
<mml:mi mathvariant="normal">g</mml:mi>
<mml:mo>&#x2219;</mml:mo>
<mml:msup>
<mml:mi mathvariant="normal">m</mml:mi>
<mml:mn>2</mml:mn>
</mml:msup>
</mml:mrow>
</mml:math>
</inline-formula>
</td>
<td align="center">4192</td>
</tr>
<tr>
<td align="left">Vehicle center of mass to front axle distance</td>
<td align="left">m</td>
<td align="center">1.04</td>
</tr>
<tr>
<td align="left">Vehicle center of mass to rear axle distance</td>
<td align="left">m</td>
<td align="center">1.56</td>
</tr>
<tr>
<td align="left">Vehicle front axle cornering stiffness</td>
<td align="left">Nm/rad</td>
<td align="center">&#x2212;78329</td>
</tr>
<tr>
<td align="left">Vehicle rear axle cornering stiffness</td>
<td align="left">Nm/rad</td>
<td align="center">&#x2212;78329</td>
</tr>
</tbody>
</table>
</table-wrap>
<sec id="s5-1">
<title>Without the stability control</title>
<p>Without the stability control, the planning algorithm and the lateral control algorithm as shown in <xref ref-type="fig" rid="F9">Figures 9</xref>, <xref ref-type="fig" rid="F10">10</xref> perceive that there is a slow-moving car at a speed of 10&#xa0;km/h 40&#xa0;m ahead, and then start to perform lane change to avoid obstacles. After about 2&#xa0;s, the ego vehicle avoids obstacles, and in about 6&#xa0;s, the heading angle gradually stabilizes near 0, but the yaw angle speed stabilizes slowly. At this time, the longitudinal velocity <inline-formula id="inf78">
<mml:math id="m108">
<mml:mrow>
<mml:msub>
<mml:mi mathvariant="normal">v</mml:mi>
<mml:mi>x</mml:mi>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> of the ego vehicle remains basically unchanged.</p>
<fig id="F10" position="float">
<label>FIGURE 10</label>
<caption>
<p>
<bold>(A)</bold> Variation of yaw rate with time <bold>(B)</bold> Variation of heading angle with time.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g010.tif"/>
</fig>
<p>The tracking performance can be represented by the change of lateral error (The distance between the vehicle and its projection to the planned path) with time, as shown in the following <xref ref-type="fig" rid="F11">Figure 11</xref>.</p>
<fig id="F11" position="float">
<label>FIGURE 11</label>
<caption>
<p>Variation of lateral error with time.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g011.tif"/>
</fig>
</sec>
<sec id="s5-2">
<title>With the stability control</title>
<p>The stability control intervenes within 2&#x2013;4&#xa0;s after the vehicle avoids the obstacle as shown in <xref ref-type="fig" rid="F12">Figures 12</xref>, <xref ref-type="fig" rid="F13">13</xref>. At this time, the change of the yaw rate is quickly suppressed. At the same time, it can be seen that the heading angle stabilizes rapidly to 1&#xb0; in 2.5&#xa0;s. But there is a certain heading angle error. The reason why 2&#x2013;4&#xa0;s is chosen is due to the consideration of stability control on path tracking accuracy. Firstly, before avoiding obstacles (that is, before 2&#xa0;s, this time is calculated by TTC), the stability control has a certain impact on obstacle avoidance, and may even lead to accidents, which should be avoided as much as possible. Secondly, if the stability control intervention time is too long or the stability control intervenes when the yaw angle is large, the lateral control algorithm cannot control the heading angle error to zero. This will cause the planning control algorithm to be unable to track the path stably according to the road centerline after the lane change. The change of tyre braking force with time as shown in <xref ref-type="fig" rid="F14">Figure 14</xref>.</p>
<fig id="F12" position="float">
<label>FIGURE 12</label>
<caption>
<p>
<bold>(A)</bold> Vehicle speed <bold>(B)</bold> Obstacle avoidance trajectory.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g012.tif"/>
</fig>
<fig id="F13" position="float">
<label>FIGURE 13</label>
<caption>
<p>
<bold>(A)</bold> Changes of yaw rate with time <bold>(B)</bold> Changes of heading angle with time.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g013.tif"/>
</fig>
<fig id="F14" position="float">
<label>FIGURE 14</label>
<caption>
<p>Change of tyre braking force with time.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g014.tif"/>
</fig>
</sec>
<sec id="s5-3">
<title>Trajectory planning</title>
<p>On the premise of keeping other planning parameters consistent, we changed <inline-formula id="inf79">
<mml:math id="m109">
<mml:mrow>
<mml:mi>W</mml:mi>
<mml:msub>
<mml:mi>p</mml:mi>
<mml:mrow>
<mml:mi>s</mml:mi>
<mml:mi>m</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>o</mml:mi>
<mml:mi>t</mml:mi>
<mml:mi>h</mml:mi>
<mml:mn>2</mml:mn>
</mml:mrow>
</mml:msub>
</mml:mrow>
</mml:math>
</inline-formula> from 1000 to 20,000 for a total of 20 tests (indicated by different colored trajectories). It can be seen that our algorithm successfully avoided the obstacle car ahead under the condition of considering the smooth trajectory as shown in <xref ref-type="fig" rid="F15">Figure 15</xref>, which proves the effectiveness of our algorithm.</p>
<fig id="F15" position="float">
<label>FIGURE 15</label>
<caption>
<p>Trajectory planning.</p>
</caption>
<graphic xlink:href="frobt-10-1120658-g015.tif"/>
</fig>
</sec>
</sec>
<sec sec-type="conclusion" id="s6">
<title>6 Conclusion</title>
<p>In this paper, the planning algorithm during steering and collision avoidance is studied based on the information and data given by vehicle environmental information perception and vehicle state parameter estimation The coordinated control of vehicle stability and safety is studied. The paper has carried out the following work: 1. Considering the calculation efficiency and control requirements of the model, a three-degree-of-freedom vehicle dynamics model and a linear tire model are established. 2. The planning module is proposed by the method of quadratic programming. This module will plan the driving trajectory of the vehicle by comprehensively considering the constraints and safety of vehicle execution. 3. Considering the vehicle trajectory tracking performance and stability, LQR lateral control and adaptive MPC control algorithms are proposed and the intervention time is proposed. 4. According to the results output by the MPC algorithm, the four-wheel braking force is distributed to realize the vehicle collision avoidance control under the comprehensive consideration of safety and stability. The results show that the planning algorithm in this paper can give a safe and reliable collision-free motion trajectory, and the proposed stability and safety coordination control algorithm can track the collision avoidance trajectory with high precision and stabilize the vehicle&#x2019;s heading angle about 0.5s after avoiding obstacles.</p>
</sec>
</body>
<back>
<sec sec-type="data-availability" id="s7">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/Supplementary Material, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec id="s8">
<title>Author contributions</title>
<p>All authors listed have made a substantial, direct, and intellectual contribution to the work, and approved it for publication.</p>
</sec>
<sec id="s9">
<title>Funding</title>
<p>Project supported by National Natural Science Foundation of China (Grant No. 52075388).</p>
</sec>
<sec sec-type="COI-statement" id="s10">
<title>Conflict of interest</title>
<p>Author LZ was employed by Global Technology Co., Ltd.</p>
<p>The remaining author declares that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Borrello</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Raffone</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Rei</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Fossanetti</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Trajectory Planning and Vehicle Control at low speed for home zone manoeuvres</article-title>,&#x201d; in <conf-name>21st IFAC World Congress on Automatic Control - Meeting Societal Challenges)</conf-name>, <conf-loc>Berlin,Germany</conf-loc>, <conf-date>July12&#x2013;17,2020</conf-date>, <fpage>15516</fpage>&#x2013;<lpage>15523</lpage>.</citation>
</ref>
<ref id="B2">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Ren</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2020</year>). <article-title>Nonlinear model predictive control of autonomous vehicles considering dynamic stability constraints</article-title>. <source>SAE Int. J. Adv. Curr. Pract. Mobil.</source> <volume>2</volume> (<issue>5</issue>), <fpage>2974</fpage>&#x2013;<lpage>2986</lpage>. <pub-id pub-id-type="doi">10.4271/2020-01-1400</pub-id>
</citation>
</ref>
<ref id="B3">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cheng</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Luo</surname>
<given-names>Y.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Online longitudinal trajectory planning for connected and autonomous vehicles in mixed traffic flow with deep reinforcement learning approach</article-title>. <source>J. Intelligent Transp. Syst.</source>, <fpage>1</fpage>&#x2013;<lpage>15</lpage>. <pub-id pub-id-type="doi">10.1080/15472450.2022.2046472</pub-id>
</citation>
</ref>
<ref id="B4">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Coelingh</surname>
<given-names>E.</given-names>
</name>
<name>
<surname>Eidehall</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Bengtsson</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2010</year>). &#x201c;<article-title>Collision warning with full auto brake and pedestrian detection - a practical example of automatic emergency braking</article-title>,&#x201d; in <conf-name>13th International IEEE Conference on Intelligent Transportation Systems)</conf-name>, <conf-loc>Funchal, Portugal</conf-loc>, <conf-date>19-22 September 2010</conf-date>, <fpage>155</fpage>&#x2013;<lpage>160</lpage>.</citation>
</ref>
<ref id="B5">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Cui</surname>
<given-names>Q.</given-names>
</name>
<name>
<surname>Ding</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Wei</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>B.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>A hierarchical framework of emergency collision avoidance amid surrounding vehicles in highway driving</article-title>. <source>Control Eng. Pract.</source> <volume>109</volume>, <fpage>104751</fpage>. <pub-id pub-id-type="doi">10.1016/j.conengprac.2021.104751</pub-id>
</citation>
</ref>
<ref id="B6">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Ge</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Zhao</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Guo</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Towards longitudinal and lateral coupling control of autonomous vehicles using offset free MPC</article-title>. <source>Control Eng. Pract.</source> <volume>121</volume>, <fpage>105074</fpage>. <pub-id pub-id-type="doi">10.1016/j.conengprac.2022.105074</pub-id>
</citation>
</ref>
<ref id="B7">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gilbert</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Petrovic</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Pickering</surname>
<given-names>J. E.</given-names>
</name>
<name>
<surname>Warwick</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Multi-attribute decision making on mitigating a collision of an autonomous vehicle on motorways</article-title>. <source>Expert Syst. Appl.</source> <volume>171</volume>, <fpage>114581</fpage>. <pub-id pub-id-type="doi">10.1016/j.eswa.2021.114581</pub-id>
</citation>
</ref>
<ref id="B8">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Han</surname>
<given-names>I. C.</given-names>
</name>
<name>
<surname>Luan</surname>
<given-names>B. C.</given-names>
</name>
<name>
<surname>Hsieh</surname>
<given-names>F. C.</given-names>
</name>
</person-group> (<year>2014</year>). &#x201c;<article-title>Development of Autonomous Emergency Braking control system based on road friction</article-title>,&#x201d; in <conf-name>2014 IEEE International Conference on Automation Science and Engineering (CASE)</conf-name>, <conf-loc>New Taipei, Taiwan</conf-loc>, <conf-date>18-22 August 2014</conf-date>, <fpage>933</fpage>&#x2013;<lpage>937</lpage>.</citation>
</ref>
<ref id="B9">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hang</surname>
<given-names>J. Y.</given-names>
</name>
<name>
<surname>Yan</surname>
<given-names>X. D.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>X. M.</given-names>
</name>
<name>
<surname>Duan</surname>
<given-names>K.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>In-vehicle warnings for work zone and related rear-end collisions: A driving simulator experiment</article-title>. <source>Accid. Analysis Prev.</source> <volume>174</volume>, <fpage>106768</fpage>. <pub-id pub-id-type="doi">10.1016/j.aap.2022.106768</pub-id>
</citation>
</ref>
<ref id="B10">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Yang</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Qu</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Cao</surname>
<given-names>D.</given-names>
</name>
<name>
<surname>Cheng</surname>
<given-names>B.</given-names>
</name>
<etal/>
</person-group> (<year>2021</year>). <article-title>Risk assessment based collision avoidance decision-making for autonomous vehicles in multi-scenarios</article-title>. <source>Transp. Res. Part C-Emerging Technol.</source> <volume>122</volume>, <fpage>102820</fpage>. <pub-id pub-id-type="doi">10.1016/j.trc.2020.102820</pub-id>
</citation>
</ref>
<ref id="B11">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Pei</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Zhou</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xu</surname>
<given-names>J.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Human-like motion planning of autonomous vehicle based on probabilistic trajectory prediction</article-title>. <source>Appl. Soft Comput.</source> <volume>118</volume>, <fpage>108499</fpage>. <pub-id pub-id-type="doi">10.1016/j.asoc.2022.108499</pub-id>
</citation>
</ref>
<ref id="B12">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Li</surname>
<given-names>Z. H.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>P.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>H. H.</given-names>
</name>
<name>
<surname>Hu</surname>
<given-names>Y. F.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>H.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Coordinated longitudinal and lateral vehicle stability control based on the combined-slip tire model in the MPC framework</article-title>. <source>Mech. Syst. Signal Process.</source> <volume>161</volume>, <fpage>107947</fpage>. <pub-id pub-id-type="doi">10.1016/j.ymssp.2021.107947</pub-id>
</citation>
</ref>
<ref id="B13">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Xia</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Automated vehicle sideslip angle estimation considering signal measurement characteristic</article-title>. <source>IEEE Sensors J.</source> <volume>21</volume> (<issue>19</issue>), <fpage>21675</fpage>&#x2013;<lpage>21687</lpage>. <pub-id pub-id-type="doi">10.1109/JSEN.2021.3059050</pub-id>
</citation>
</ref>
<ref id="B14">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Leng</surname>
<given-names>B.</given-names>
</name>
<name>
<surname>Meng</surname>
<given-names>H.</given-names>
</name>
<name>
<surname>Zhang</surname>
<given-names>R.</given-names>
</name>
</person-group> (<year>2017</year>). <source>Vehicle stability criterion research based on phase plane method</source>. <comment>SAE Technical Paper 2017-01-1560</comment>. <pub-id pub-id-type="doi">10.4271/2017-01-1560</pub-id>
</citation>
</ref>
<ref id="B15">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Xia</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Intelligent vehicle sideslip angle estimation considering measurement signals delay</article-title>,&#x201d; in <conf-name>2018 IEEE Intelligent Vehicles Symposium (IV)</conf-name>, <conf-loc>Changshu, China</conf-loc>, <conf-date>26-30 June 2018</conf-date>, <fpage>1584</fpage>&#x2013;<lpage>1589</lpage>.</citation>
</ref>
<ref id="B16">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rabhi</surname>
<given-names>A. E. d.</given-names>
</name>
<name>
<surname>Hartani</surname>
<given-names>K.</given-names>
</name>
<name>
<surname>Guettaf</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Norediene</surname>
<given-names>A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Robust multimachine control for bisynchronous propulsion traction chain of an electric vehicle</article-title>. <source>Sae Int. J. Veh. Dyn. Stab. Nvh</source> <volume>5</volume> (<issue>2</issue>), <fpage>173</fpage>&#x2013;<lpage>189</lpage>. <pub-id pub-id-type="doi">10.4271/10-05-02-0012</pub-id>
</citation>
</ref>
<ref id="B17">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Ren</surname>
<given-names>M.</given-names>
</name>
<name>
<surname>Wu</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2020</year>). &#x201c;<article-title>Integrated strategy for automatic lane-changing decision and trajectory planning in dynamic scenario</article-title>,&#x201d; in <conf-name>ASME 2020 International Design Engineering Technical Conferences and Computers and Information in Engineering Conference, (V004T04A005)</conf-name>.</citation>
</ref>
<ref id="B18">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Schieben</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Griesche</surname>
<given-names>S.</given-names>
</name>
<name>
<surname>Hesse</surname>
<given-names>T.</given-names>
</name>
<name>
<surname>Fricke</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Baumann</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2014</year>). <article-title>Evaluation of three different interaction designs for an automatic steering intervention</article-title>. <source>Transp. Res. Part F-Traffic Psychol. Behav.</source> <volume>27</volume>, <fpage>238</fpage>&#x2013;<lpage>251</lpage>. <pub-id pub-id-type="doi">10.1016/j.trf.2014.06.002</pub-id>
</citation>
</ref>
<ref id="B19">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Tork</surname>
<given-names>N.</given-names>
</name>
<name>
<surname>Amirkhani</surname>
<given-names>A.</given-names>
</name>
<name>
<surname>Shokouhi</surname>
<given-names>S. B.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>An adaptive modified neural lateral-longitudinal control system for path following of autonomous vehicles</article-title>. <source>Eng. Sci. Technology-an Int. Journal-Jestech</source> <volume>24</volume> (<issue>1</issue>), <fpage>126</fpage>&#x2013;<lpage>137</lpage>. <pub-id pub-id-type="doi">10.1016/j.jestch.2020.12.004</pub-id>
</citation>
</ref>
<ref id="B20">
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Wu</surname>
<given-names>G.</given-names>
</name>
</person-group> (<year>2021</year>). <source>Automotive theory</source>. <edition>3rd ed</edition>. <publisher-loc>Beijing</publisher-loc>: <publisher-name>China Communications Press</publisher-name>.</citation>
</ref>
<ref id="B21">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wu</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Lyu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Wang</surname>
<given-names>C.</given-names>
</name>
</person-group> (<year>2023</year>). <article-title>Predictive shift strategy of dual-clutch transmission for driving safety on the curve road combined with an electronic map</article-title>. <source>SAE Int. J. Veh. Dyn. Stab. NVH</source> <volume>7</volume> (<issue>1</issue>), <fpage>1</fpage>&#x2013;<lpage>19</lpage>. <pub-id pub-id-type="doi">10.4271/10-07-01-0001</pub-id>
</citation>
</ref>
<ref id="B22">
<citation citation-type="confproc">
<person-group person-group-type="author">
<name>
<surname>Xia</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
</person-group> (<year>2018</year>). &#x201c;<article-title>Automated vehicle attitude and lateral velocity estimation using a 6-D IMU aided by vehicle dynamics</article-title>,&#x201d; in <conf-name>2018 IEEE Intelligent Vehicles Symposium (IV)</conf-name>, <conf-loc>Changshu, China</conf-loc>, <conf-date>26-30 June 2018</conf-date>, <fpage>1563</fpage>&#x2013;<lpage>1569</lpage>.</citation>
</ref>
<ref id="B23">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiao</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Cassandras</surname>
<given-names>C. G.</given-names>
</name>
<name>
<surname>Belta</surname>
<given-names>C. A.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Bridging the gap between optimal trajectory planning and safety-critical control with applications to autonomous vehicles</article-title>. <source>Automatica</source> <volume>129</volume>, <fpage>109592</fpage>. <pub-id pub-id-type="doi">10.1016/j.automatica.2021.109592</pub-id>
</citation>
</ref>
<ref id="B24">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Xia</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Lu</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
<name>
<surname>Gao</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Song</surname>
<given-names>S.</given-names>
</name>
<etal/>
</person-group> (<year>2020</year>). <article-title>IMU-based automated vehicle body sideslip angle and attitude estimation aided by GNSS using parallel adaptive kalman filters</article-title>. <source>IEEE Trans. Veh. Technol.</source> <volume>69</volume> (<issue>10</issue>), <fpage>10668</fpage>&#x2013;<lpage>10680</lpage>. <pub-id pub-id-type="doi">10.1109/TVT.2020.2983738</pub-id>
</citation>
</ref>
<ref id="B25">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Yang</surname>
<given-names>C.</given-names>
</name>
<name>
<surname>Chen</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Lin</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Li</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2022</year>). <article-title>Coordinated trajectory planning for lane-changing in the weaving areas of dedicated lanes for connected and automated vehicles</article-title>. <source>Transp. Res. Part C-Emerging Technol.</source> <volume>144</volume>, <fpage>103864</fpage>. <pub-id pub-id-type="doi">10.1016/j.trc.2022.103864</pub-id>
</citation>
</ref>
<ref id="B26">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zha</surname>
<given-names>Y.</given-names>
</name>
<name>
<surname>Quan</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Ma</surname>
<given-names>F.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>G.</given-names>
</name>
<name>
<surname>Zheng</surname>
<given-names>X.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>M.</given-names>
</name>
</person-group> (<year>2021</year>). <article-title>Stability control for a four-wheel-independent-drive electric vehicle based on model predictive control</article-title>. <source>SAE Int. J. Veh. Dyn. Stab. NVH</source> <volume>5</volume> (<issue>2</issue>), <fpage>191</fpage>&#x2013;<lpage>204</lpage>. <pub-id pub-id-type="doi">10.4271/10-05-02-0013</pub-id>
</citation>
</ref>
<ref id="B27">
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zhang</surname>
<given-names>R.</given-names>
</name>
<name>
<surname>Xiong</surname>
<given-names>L.</given-names>
</name>
<name>
<surname>Yu</surname>
<given-names>Z.</given-names>
</name>
<name>
<surname>Liu</surname>
<given-names>W.</given-names>
</name>
</person-group> (<year>2017</year>). <article-title>A nonlinear dynamic control design with conditional integrators applied to unmanned skid-steering vehicle</article-title>. <comment>SAE Technical Paper 2017-01- 1585</comment>. <pub-id pub-id-type="doi">10.4271/2017-01-1585</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>