I'm connecting to a Pixhawk2 running PX4 v1.7.3 (all versions listed at bottom) over USB with a Jetson TX1 development kit. I'm running a custom application utilizing the C MAVlink headers.
What I'm seeing is I can receive all the default message streams, however if I try to request a certain MAVlink messages at various rates I see the ACK report a failure to execute the command.
Here is the code I use to send the message interval command:
memset(&msg, 0, sizeof(msg));
mavlink_msg_command_long_pack(2, 0, &msg, m_sysId, 0,
MAV_CMD_SET_MESSAGE_INTERVAL, 1, MAVLINK_MSG_ID_RAW_IMU, 100000, 0,
0, 0, 0, 0);
The request for the RAW_IMU data reports a failure (ack.result = 4), however I cannot seem to figure out why it fails. I've tried disabling other IMU messages (e.g. HIGHRES_IMU), but it still fails.
I also tried another message - POWER_STATUS, GPS_STATUS - and it fails as well. Is there any feedback mechanism for determining why a message interval request fails? Is this documented anywhere?
I've tried using message interval to control the rates of other messages, such as ATTITUDE and HIGHRES_IMU and it works as expected. Even SCALED_IMUn requests work properly.
A related question is what data is contained in HIGHRES_IMU? Is it filtered through the EKF? Or is it more or less raw IMU data, converted to SI units? Multiple IMUs combined? Looking at the SCALED_IMUn messages, these would contain the same data? Which IMU is used to populate the RAW_IMU data?
Thanks for the help!
HW arch: PX4FMU_V2
HW type: V30
HW version: 0x0009000E
HW revision: 0x00000000
FW git-hash: 50bd148f53f1aeca6f1bd4a1caabcc18e4f2888b
FW version: Release 1.7.3 (17236991)
OS version: Release 7.22.0 (118882559)
OS git-hash: b18053574bf41712cef93e31bf178518f451a350
Build datetime: Jan 6 2018 11:33:38
Build uri: localhost
Toolchain: GNU GCC, 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
MCU: STM32F42x, rev. 3