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.
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}
}
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.
- clone the repository:
git clone https://github.com/Garyandtang/GMPC-Tracking-Control.git
cd GMPC-Tracking-Control
- (optional) create a virtual environment
conda create -n gmpc python=3.11
conda activate gmpc
- install the dependencies:
pip install -r requirements.txt
- install the manif library:
conda install -c conda-forge manifpy
- Run the following command to test the GMPC controller in the simulation environment:
python problems/unicycle_traj_tracking/main_single_tracking_task.py
GMPC | Reference | NMPC |
---|---|---|
![]() |
![]() |
![]() |
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.
We would like to thank the authors of the following repositories for their excellent work: