/GMPC-Tracking-Control

[RAL'24] Official code repo for "GMPC: Geometric Model Predictive Control for Wheeled Mobile Robot Trajectory Tracking"

Primary LanguagePython

Introduction

This is the official code repository of "GMPC: Geometric Model Predictive Control for Wheeled Mobile Robot Trajectory Tracking", which is accepted by RAL'24.

GMPC leverages the geometric properties of the kinematic model to design a model predictive controller for wheeled mobile robot trajectory tracking. The controller explores the relationship between Lie group and Lie algebra, and formulates the tracking problem as a convex optimization problem on the Lie algebra. The proposed controller is validated on both simulation and real-world experiments, and is shown to outperform existing methods in terms of tracking smoothness and computational efficiency.

preprint, code

If you find this work useful, please consider citing our paper:

@misc{tang2024gmpc,
      title={GMPC: Geometric Model Predictive Control for Wheeled Mobile Robot Trajectory Tracking}, 
      author={Jiawei Tang and Shuang Wu and Bo Lan and Yahui Dong and Yuqiang Jin and Guangjian Tian and Wen-An Zhang and Ling Shi},
      year={2024},
      eprint={2403.07317},
      archivePrefix={arXiv},
      primaryClass={eess.SY}
}

Usage

We develop our GMPC controller based on the manif and CasADi libraries. The simulator is implemented in PyBullet. All components of GMPC and simulator are Python-based and ROS-free.

For physical experiments, they are conducted on Ubuntu 18.04 with ROS Melodic.

Dependencies

  1. PyBullet
  2. manif
  3. CasADi
  4. numpy
  5. matplotlib

Installation

  1. clone the repository:
git clone https://github.com/Garyandtang/GMPC-Tracking-Control.git
cd GMPC-Tracking-Control
  1. (optional) create a virtual environment
conda create -n gmpc python=3.11
conda activate gmpc
  1. install the dependencies:
pip install -r requirements.txt
  1. install the manif library:
conda install -c conda-forge manifpy
  1. Run the following command to test the GMPC controller in the simulation environment:
python problems/unicycle_traj_tracking/main_single_tracking_task.py

Visualization

GMPC Reference NMPC

Physical Experiments

We also provide the code for physical experiments in the problems/unicycle_traj_tracking folder. To run the physical experiments, please follow the instructions of ScoutMini and Turtlebot3.

Thanks

We would like to thank the authors of the following repositories for their excellent work:

  1. safe-control-gym
  2. manif