MAVROS: question about /odometry and /local_position

Hi all. I am having some difficulty finding any documentation about the /mavros/odometry topics. So a couple questions regarding that:

  • From my understanding, /mavros/local_position outputs the current pose/twist of the quad as estimated by PX4. Is this the same estimate that is published on /mavros/odometry/in? If not, how do they differ, aside from the fact that they are different message types?
  • What happens when I publish data to /mavros/odometry/out? Is it used in the estimate for either /local_position or /odometry or both?

Thanks in advance for any help!

Well first, I believe the odometry data is totally separate from local position data, because:

  • Odometry data comes from the sensor (like camera)
  • local position is a filtered internal state of the flight controller, which *can take odometry data into account as well, but it also takes GPS, Accelerometer, Gyro data, etc.
  1. I am not 100% sure, but the difference is the source of that information (camera vs Filter), I believe
  2. If, you set up the flight controller to take odometry data into account (for the EKF2 Filter), thrn yes I believe it would be fused into the local position estimate!
1 Like

So in theory, if there were no sensors (like camera) providing odometry to the flight controller, would there be nothing publishing on /mavros/odometry/in? What is the odometry source for the iris drone in PX4 Gazebo SITL?

Hi, I also noticed that there is a topic called local_position/odom with similar data but the covariance matrix is all 0 and the orientation is negative that of odometry/in. Do you know what the difference between local_position/odom and odometry/in is?