[asctec_mav_framework] Reverse rotation with angular speed above 32.7 deg/seg

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[asctec_mav_framework] Reverse rotation with angular speed above 32.7 deg/seg

AdrianGonzalez
Hi all:

After solving some issues with controlling our Astec Pelican via asctec_mav_framework we updated the firmware of the HL board and until now it seemed to work just fine.

But recently we discovered another annoying issue and we have no expanation for it. It turns out that when we start sending angular velocity commands the UAV starts rotating over the Z axis (until here everything works as expected); but when we increase the angular speed over 32.7 deg/s it starts rotating in the opposite direction.

So far we've tried this sending these commands with the asctec_mav_framework utility called "ctrl_test" and using a dummy node that publish messages to /fcu/control. The behavior is the same in both cases.

Anyone has experienced this before, or have a clue about where to start looking for a solution?

Thank you in advance. Best regards,
Adrián
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [asctec_mav_framework] Reverse rotation with angular speed above 32.7 deg/seg

David
It sounds like that field is a signed 16-bit value, and the units are mili-degrees/second. So you have a max value of 32767 millidegrees/second - or 32.7 deg/s. If you copy a value greater than 32768, then it is just wrapping around, starting at -32767.

Check the code to see what the data field is, and that should confirm if you're hitting a max value.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [asctec_mav_framework] Reverse rotation with angular speed above 32.7 deg/seg

AdrianGonzalez
David wrote
It sounds like that field is a signed 16-bit value, and the units are mili-degrees/second. So you have a max value of 32767 millidegrees/second - or 32.7 deg/s. If you copy a value greater than 32768, then it is just wrapping around, starting at -32767.

Check the code to see what the data field is, and that should confirm if you're hitting a max value.

Hi David, thank you for your response. I've taken a look to the SDK source code and it seems that you are right. For any reason, when input velocities are passed to the HL interface the units are specified in millidegrees/second and millimeters/second. This is for HL control.

It seems to be different when using position control. Thus, the conversion made here is different and I would have to see what is the difference between them.

Thanks for your response!
Loading...