ethz-asl / asctec_mav_framework

Framework for data aquisition and position control to be used with the highlevel processor of Ascending Technologies helicopters
http://www.ros.org/wiki/asctec_mav_framework
36 stars 40 forks source link

Implement our own attitude control algorithms #76

Open IamARR opened 6 years ago

IamARR commented 6 years ago

Hi,

Our platform is a Hummingbird with ros_mav_framework. We are trying to implement our own attitude control algorithms (different from PID) but cannot find the way to disable the LL attitude controller and issue motor control commands directly from our code. We have spent several weeks trying to do that by modifying the ctrl_test example and other ways unsuccessfully.

Before modifying the code in the hl_interface and in the hl_firmware, which we think is a bit radical, I thought it would be sensible to ask in the forum.

So, is it possible to send motor control commands directly to the LLP? If so, how?

If not, is there any other way to implement your own attitude controller and make it work?

Finally, if we have to modify the asctec_mav_framework, is there a reasonable way to do it without breaking the driver or the hummingbird?

Thanks in advance,

andre-ryll commented 6 years ago

The asctec_mav_framework does not support direct motor commands. It only supports attitude, velocity, or position commands. If you want to implement a custom attitude controller it is best to do that directly on the HLP. There you can send direct individual motor commands to the LLP and you also have all sensor information with high update rates. Have a look at the HL SDK or the Simulink Toolkit: http://wiki.asctec.de/display/AR/AscTec+SDK http://wiki.asctec.de/display/AR/AscTec+Simulink+Toolkit

IamARR commented 6 years ago

@asctec-andre

What we do not fully understand if that it is possible to do still working with the ROS drivers (and framework). Can we, for instance, design a simulink controller and keep the ROS framework working along with it?

Thanks.

andre-nguyen commented 6 years ago

@asctec-andre Speaking of this, what's your opinion on modifying this framework to allow for passthrough comands directly to the motors?

andre-ryll commented 6 years ago

Unfortunately, you cannot modify large parts of the firmware that is part of this package. Forwarding and control is implemented via a compiled Simulink file (SSDK). The original Simulink files of this compiled library are unavailable. Hence, you will need to implement this on your own, based on the SDK or the official AscTec Simulink Toolkit.