What is the correct control mode for Zubax Myxa ESCs via FMU PX4 Autopilot with Cyphal

Hi, i’m buidling UAV using FMU (Pixhawk V5X) - PX4 Autopilot and 4 Zubax Myxa ESCs for controlling motor (Flycat i-rotor 5010-750kv) via Cyphal. Which motor control mode should I use?
In my case:
FMU PX4 Autopilot ( current latest firmware of PX4 Autopiot used) : 2 main outputs to control :

uavcan.pub.udral.esc.0.id: 111
uavcan.pub.udral.readiness.0.id: 112

first 4 index of udral.esc.0 will give output to control for 4 ESCs (min:0 - max:1) below is sreenshot from Yukon:
image

  1. When i used ratiometric torque ( setpoint_rat_torque ) => but It can accelerate motors to the maximum velocity even at very low setpoint values.( from FMU output), it can take off and fly up vertically and i can not control its velocity to land.
uavcan.sub.setpoint_rat_torque.id:        111
uavcan.sub.readiness.id:                  112

video flying with setpoint_rat_torque:

  1. When i used ratiometric voltage ( setpoint_rat_voltage) => with this mode, i can control the velocity by Throttle Sitck (throttle stick increased => velocity increased and vice versa) from Remote Control (Flysky i6s) but it makes a grinding sounds when rotors ramping And Velocity ouputs are not asynchronous => UAV can lift up a little bit and fall down.
uavcan.sub.setpoint_rat_voltage.id:        111
uavcan.sub.readiness.id:                  112
mns.ratiometric_to_absolute_mul: 20 # battery: 20V
  1. When i used velocity control mode => setpoint_velocity not working, setpoint_rat_velocity_u9 can work but not like what i expected ( Rotos ramping did not follow Throttle Sitck, and still grinding sounds )
uavcan.sub.setpoint_rat_velocity_u9.id:        111
uavcan.sub.readiness.id:                  112
mns.ratiometric_to_absolute_mul: 5000

And for each mode above, i have tried to change also other parameters to make my UAV flying as what i expected but still can not!
I researched alot and it looks like : velocity control mode is high recommeded But what i tried is above result.
Please help.

Apologies for the delayed response.

Sounds like the maximum current is set too high, or the value of mns.ratiometric_setpoint_min is non-default and high. Regardless, the torque control mode is poorly suited for multicopters because most (all?) flight controllers attempt to control the propeller thrust rather than torque; the torque is proportional to the derivative of thrust as you can see from a standard propeller equation (more on this in the reference manual).

The grinding sound indicates that the controller loses the synchronization, which could be caused by rapid transients. Consider reducing the motor.voltage_ramp parameter if you are keen on using the voltage control mode. It is not recommended, however, as explained in the reference manual; normally you should prefer the velocity control mode.

As far as I know, PX4 cannot publish setpoints as uint9. What you’re seeing is caused by a type mismatch because you make the ESC subscribe to a float16[] topic using uint9[]; the ESC reads misformatted inputs and behaves erratically.

Ideally the PX4 firmware should be extended to support publication of velocity setpoints as float16[] instead of just ratiometric setpoints. Alternatively, we could add a new float16[] subscription to Telega similar to setpoint_rat_torque and setpoint_rat_voltage that accepts ratiometric velocity; that would be setpoint_rat_velocity.