Modifying px4 multicopter code for 6DOF control

Hello, I’m trying to make my own 6DOF tilting hexacopter with reference to Voliro from ETH [https://ieeexplore.ieee.org/abstract/document/8485627]. I’ve done with the hardware and trying to modify conventional px4 4DOF multi-copter(mc) control to the 6DOF controller.

However, I’m stocked with 2 problems. First, the current px4 mc_rate_control code only outputs one combined thrust(Fz) and 3 attitudes (roll pitch yaw) rather than 3 thrusts (Fx Fy Fz) and 3 attitudes. And also the current mixer code is static but since my hexacopter is tilting hexacopter, I need to make the mixer a function of tilting angle(I’ll precompute the tilting angle and publish to the mixer). That means my mixer matrix should be changed every iteration but I have no clue where to start with the current px4 code.

So I’m just thinking to modify the current mc_rate_control to perform mixing as well and output motor desired PWM directly to the motors. But since I’m not familiar with px4, I’m not even sure it is possible. Would you please give me any suggestions or help with my situation??

Thank you all in advance.

Best,

HG LEE

@mitchell This thread might help: https://github.com/PX4/Firmware/issues/7678

Also, the control allocation will enable fully actuated systems: https://github.com/PX4/Firmware/pull/13351

1 Like

Thank you very much!

@Jaeyoung-Lim thanks for the links, I want to try and use the control allocation being developed for an overactuated hex as well.

Couldn’t find much documentation on how I can try it out ( e.g set some parameter that enables it after building). Do you know how I could enable/ use it? if there is any WIP documentation on the control allocation approach, it’d be super nice!