How do I map a 6DOF control vector (vx, vy, vz, ax, ay, az) to RPYT? I am working on visual servo and I get controls as linear and angular x, y and z. Right now I have the following mapping but I realized that I am not using two of the angular velocities.

vx -> pitch (P)

vy -> roll (R)

vz -> thrust (T)

az ->yaw (Y)

Thanks

edit retag close merge delete

Sort by » oldest newest most voted

Well a quadrotor has only (as the name suggests) 4 rotors, and this in most cases means only 4 inputs for control.

The dynamics are non-linear, even outside of acrobatic moves, and you might need a thicker layer of control loops to map your control vector to the input vector of your quadrotor. For example, the pitch angle does not control the velocity but the acceleration on the X axis, and also has an impact on the total thrust, which can then only be mapped directly to the acceleration on the Z axis if you consider a linearised model around the hover position.

I would advise you implement small PD loops between your control vector and the aircraft's inputs. You probably don't need one for the yaw, though, as the control input for this one is most often an angular velocity already.

Even then, I would not advise you actually map the ax and ay control outputs, as you will have trouble staying within reasonable bounds for your linear model to hold.

Here's the simplest mapping I can think of:

vx -> PD -> pitch
vy -> PD -> roll
vz -> PD -> thrust
az -------> yaw velocity


Hope this helps.

more