Skip to content

MPC implementation using acados integrated with with PX4 on ROS2

License

Notifications You must be signed in to change notification settings

NamDinhRobotics/px4-mpc

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

px4-mpc

This package contains an MPC integrated with with PX4 Autopilot and ROS 2.

The MPC uses the acados framework

px4-mpc

Paper

If you find this package useful in an academic context, please consider citing the paper

  • Roque, Pedro, Sujet Phodapol, Elias Krantz, Jaeyoung Lim, Joris Verhagen, Frank Jiang, David Dorner, Roland Siegwart, Ivan Stenius, Gunnar Tibert, Huina Mao, Jana Tumova, Christer Fuglesang, Dimos V. Dimarogonas. "Towards Open-Source and Modular Space Systems with ATMOS." arXiv preprint arXiv:2501.16973 (2025). . [preprint]
@article{roque2025towards,
  title={Towards Open-Source and Modular Space Systems with ATMOS},
  author={Roque, Pedro and Phodapol, Sujet and Krantz, Elias and Lim, Jaeyoung and Verhagen, Joris and Jiang, Frank and Dorner, David and Siegwart, Roland and Stenius, Ivan and Tibert, Gunnar and others},
  journal={arXiv preprint arXiv:2501.16973},
  year={2025}
}

Setup

The MPC formulation uses acados. In order to install acados, follow the following instructions To build the code, clone the following repositories into a ros2 workspace Dependencies

colcon build --packages-up-to px4_mpc

Running MPC with PX4 SITL

In order to run the SITL(Software-In-The-Loop) simulation, the PX4 simulation environment and ROS2 needs to be setup. For instructions, follow the documentation

Run PX4 SITL

make px4_sitl gazebo

Run the micro-ros-agent

micro-ros-agent udp4 --port 8888

Quadrotor Example

In order to launch the mpc quadrotor in a ros2 launchfile,

ros2 launch px4_mpc mpc_quadrotor_launch.py 

Spacecraft Example

First, make sure that you have followed the instructions in the ATMOS guide. To control the vehicle with this package, make sure to switch the vehicle to Offboard mode in QGroundControl (see QGroundControl in ATMOS guide.

The mpc_spacecraft_launch.py file includes optional arguments:

  • mode: Control mode (wrench by default). Options: wrench, rate, direct_allocation.
  • namespace: Spacecraft namespace ('' by default).
  • setpoint_from_rviz: Use RViz for setpoints (True by default).

Example with no namespace:

ros2 launch px4_mpc mpc_spacecraft_launch.py mode:=wrench setpoint_from_rviz:=False

Example with namespace: For this example to work, make sure you have run the PX4 SITL with the same namespace. Here goes an example

PX4_UXRCE_DDS_NS=pop make px4_sitl gz_spacecraft_2d

On another terminal, run

micro-ros-agent udp4 --port 8888

Lastly, start PX4-MPC

ros2 launch px4_mpc mpc_spacecraft_launch.py mode:=wrench namespace:=pop setpoint_from_rviz:=False

About

MPC implementation using acados integrated with with PX4 on ROS2

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 98.9%
  • CMake 1.1%