A Linear MPC with Control Barrier Functions for Differential Drive Robots
<|reference_start|>A Linear MPC with Control Barrier Functions for Differential Drive Robots: The need for fully autonomous mobile robots has surged over the past decade, with the imperative of ensuring safe navigation in a dynamic setting emerging as a primary challenge impeding advancements in this domain. In this paper, a Safety Critical Model Predictive Control based on Dynamic Feedback Linearization tailored to the application of differential drive robots with two wheels is proposed to generate control signals that result in obstacle-free paths. A barrier function introduces a safety constraint to the optimization problem of the Model Predictive Control (MPC) to prevent collisions. Due to the intrinsic nonlinearities of the differential drive robots, computational complexity while implementing a Nonlinear Model Predictive Control (NMPC) arises. To facilitate the real-time implementation of the optimization problem and to accommodate the underactuated nature of the robot, a combination of Linear Model Predictive Control (LMPC) and Dynamic Feedback Linearization (DFL) is proposed. The MPC problem is formulated on a linear equivalent model of the differential drive robot rendered by the DFL controller. The analysis of the closed-loop stability and recursive feasibility of the proposed control design is discussed. Numerical experiments illustrate the robustness and effectiveness of the proposed control synthesis in avoiding obstacles with respect to the benchmark of using Euclidean distance constraints. Keywords: Model Predictive Control, MPC, Autonomous Ground Vehicles, Nonlinearity, Dynamic Feedback Linearization, Optimal Control, Differential Robots.<|reference_end|>
@article{ali2024a,
    title={A Linear MPC with Control Barrier Functions for Differential Drive
  Robots},
    author={Ali Mohamed Ali, Chao Shen, Hashim A. Hashim},
    journal={arXiv preprint arXiv:2404.10018},
    year={2024},
    archivePrefix={arXiv},
    eprint={2404.10018},
    primaryClass={cs.RO cs.SY eess.SY}
}