Command MESSAGE_INTERVAL fails for certain messages

#1

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);
  pixhawk_writemsg(msg);

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: NuttX
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]
MFGUID: 343136303136510e002f003b
MCU: STM32F42x, rev. 3
UID: 2F003B:3136510E:34313630
#2

Try your code on px4 firmware 1.5.5.

#3

I downloaded the pre-built binaries from https://github.com/PX4/Firmware/releases/download/v1.5.5/Firmware.zip and loaded px4fmu-v2 to my Pixhawk2.1 cube.

When I run the same code against that, both the RAW_IMU and SCALED_IMU message interval commands report failure (ack.result = 4).

Thoughts?

#4

Bump - any thoughts from the community? I’d really like to understand why some messages work fine with the interval and why others do not.

Thanks!