Navio 2: Increase IMU output rate for MavROS


I own a Navio2 shield and I’m trying to increase the IMU stream rate from MavROS to work with a VIO solution. The recommended output is 200Hz. The rostopic /mavros/imu/data_raw is what I need to be increased and have tried a variety of methods.

The initial output is 10Hz, which is what I expect coming from the initialization of /mavros/set_stream_rate 0 10 1.

I’ve tried increasing this by setting the 10 to 200, but I see that the the max rate is only 50Hz.

I’ve also tried rosrun mavros mavsys rate --all 200 and this is still only allowing a max rate of 50Hz.

Any help you can give me would be greatly appreciated.


Hi @jeremyolsen,

This limitation might be caused by the rate ArduPilot uses to send data to GCS.

To get the IMU data with the higher frequency you need to write your own script to override this. The AP_module code might be of help here as it allows accessing high-rate sensor data from ArduPilot controlled sensors.

Hi @tatiana.andreeva,

Thanks for the reply. The APM stack being the limitation looks correct. I’ve seen other posts where it has been increased using mavlink commands on the Pixhawk, but I’m not sure if they were using APM or PX4 flight stack.

Another option I’ve been looking at is writing a custom ROS node and running that on the Navio. I came across this example on github by one of the Emlid developers. I think this is a start to creating a custom node.

And then I would be using this example to create and publish the message from the IMU.

Do you see any reasons why this approach wouldn’t work? I’m assuming that custom ROS nodes running on the Navio would work the same as anywhere else.


Hi @jeremyolsen,

I think this should work. However, I’m afraid, I can’t help you with more specific details on this question.

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.