CentraleNantesROV / thruster_manager

Generic thruster manager tools for ROV/AUV described with Gazebo-Ignition plugins
MIT License
3 stars 1 forks source link

Featuring this module on ros-maritime/awesome-maritime-robotics #2

Open bartboogmans opened 2 months ago

bartboogmans commented 2 months ago

I occasionally do some effort to bundle nice maritime ros tools in ros-maritime/awesome-maritime-robotics

This PR attempts to represent this repository under the thrust allocation section. I invite you to check the short description, if the functionality was interpreted correctly, or if you have something else to add here.

oKermorgant commented 2 months ago

Thanks for listing this repo. In addition to $f = T^{-1} \tau$ (or better $f = T^+ \tau$) our work also handles deadzone if there is something to do about it (e.g. a non-null kernel exists in $T$). This is identified from the matrix $T$, which is itself computed from the URDF. Basically the user has nothing to do to have it work.

bartboogmans commented 2 months ago

To further clarify I have some questions:

1) Just to check

The + sign in your alternative suggestion formula represents it does something more than simply inverting?

2) Interpretation of the handling of dead zones

Does your mentioned functionality about handling deadzones represent:

3) Does the system deal with over-actuation? If so, how?

Once over-actuated there are infinite combinations of $f$ to yield desired $\tau$. There are many ways to deal with this, where there is no singular correct solution, although it would be a nice detail to mention if this functionality is present.

oKermorgant commented 2 months ago

Hi, good to be able to give some details.

1)

The plus sign means the Moore-Penrose pseudo-inverse that generalizes the inverse for non-square matrices. Basically:

I think all other packages you have mentioned also use this as it naturally deals with over-actuation (case a) and impossible motions (case b).

2)

We handle actuator dead zone, that is try to find a solution to $arg min_f ||T.f - \tau||$ where $f$ is outside the deadzone. I have added a figure to show the behavior, where $(f_x,f_y,m_z)$ (robot should stand still horizontally) yet $f \neq 0$ as there is a solution outside the deadzone for the 4 horizontal thrusters.

bartboogmans commented 2 months ago

1)

I never saw this naming before (or quickly forgot about it after my Linear Algebra exams), but with some thought on how to physically interpret this, it makes quite alot of sense. (Your explanation here is helpful to me, and maybe also to others. Maybe include this in the readme?)

2)

Just for my curiousity: How do you get to this described solution, given these additional constraints?

Proposed change of description into:

Feel invited to give alternatives to the description if you believe another way of phrasing it would better cover the content.