This repository contains the implementation of Neural Internal Model Control (Neural-IMC) for quadrotor control, as presented in our IEEE Robotics and Automation Letters paper Neural Internal Model Control: Learning a Robust Control Policy Via Predictive Error Feedback. For the quadruped robot experiments, please refer to our dedicated repository.
conda create -n torchctrl python=3.9
conda activate torchctrl
pip install -e .| Trajectory Type | Description | 3D Trajectory | Per-axis Trajectory | Implementation |
|---|---|---|---|---|
| Circle | Circular trajectory | ![]() |
![]() |
circle.py |
| Poly | Chained polynomial trajectories | ![]() |
![]() |
chained_polynomial.py |
| Star | 5-pointed star trajectory | ![]() |
![]() |
pointed_star.py |
| Zigzag | Zigzag trajectory | ![]() |
![]() |
zigzag.py |
conda activate torchctrl && cd scripts
# By default, it will use wandb to log data, please make sure you have set WANDB_API_KEY in your environment variables.
python run_quadrotor.py
# To run without wandb logging, use the following command:
python run_quadrotor.py wandb.mode=disabledRefer to scripts/train/shell_scripts for more experiment scripts.
Check this repo for more details.
If you find our codebase or our proposed technique (predictive error feedback) useful, please cite our paper:
@ARTICLE{gao2025neuralimc,
author={Gao, Feng and Yu, Chao and Wang, Yu and Wu, Yi},
journal={IEEE Robotics and Automation Letters},
title={Neural Internal Model Control: Learning a Robust Control Policy Via Predictive Error Feedback},
year={2025},
volume={10},
number={7},
pages={6848-6855},
keywords={Predictive models;Robots;Quadrotors;Adaptation models;Legged locomotion;Mathematical models;Training;Robustness;Robust control;Adaptive control;Robust control;reinforcement learning (RL);sensorimotor learning},
doi={10.1109/LRA.2025.3573169}}







