Skip to content

Andeshog/thrust_allocation_methods

Repository files navigation

Thrust Allocation Methods

This repository contains a collection of thrust allocation methods and a ROS 2 node. Each method is implemented in both C++ and Python. The methods are implemented on milliAmpere1, which has four azimuth thrustersFor information about the theory, check out my thesis (link comes soon).

Prerequisites

The following dependencies are needed:

Methods

There are five methods:

  • Pseudoinverse: Simple unconstrained, fixed-angle thrust allocation.
  • QP: The baseline method. Optimization-based.
  • Maneuvering-based: A thrust allocation method based on the maneuvering-problem. Solves the thrust allocation problem as a tracking problem, and is able to handle secondary objectives.
  • Power-aware maneuvering-based: An implementation of the maneuvering-based method where the secondary objective is to minimize the power consumption by utilizing the most power-efficient thrust direction of each thruster.

Usage

(It is assumed that the user is familiar with ROS 2 and the build system, if not check out the ROS 2 docs.)

Configure the parameters in config.

The Python node can be launched with

ros2 launch thrust_allocation thrust_allocation_py.launch.py allocator:=XXX

where allocator can be pseudo_inverse, maneuvering, nlp, or qp, and it will default to pseudo_inverse.

The C++ node can be launched in a similar way

ros2 launch thrust_allocation thrust_allocation_cpp.launch.py allocator:=XXX

About

A collection of thrust allocation methods used on milliAmpere1 for my Master's thesis in 2025.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published