Poor performance of ROS move_base after moving to Xavier

I recently migrated a robotics project from the TX2 to the Xavier, and my navigation has been functioning poorly. The map update loop frequently misses its update loop of 10 Hz, whereas the exact same software with the same settings very rarely had this problem on the TX2.

Things I’ve tried:

  • Checked the update rate of all sensors. All fine.
  • Used both TrajectoryPlannerROS and DWAPlannerROS. Both have the same problem
  • Tried two separate Xavier devices flashed with the newest Jetpack version.
  • Both Python 2 and Python 3
  • Checked CPU and RAM usage. Nothing is running in the background and using CPU time.

Does TX2 run with r32 too?

The TX2 is running R28. The next thing I’ll try is another TX2 with R32. I really hope it isn’t that. Is there some specific interaction between ROS and L4T that I should be aware of?

What power models are you using on each of the devices?

Whatever the maximum is on the TX2, and the ‘30W all core’ on the Xavier. It doesn’t appear to be a CPU power issue, as CPU usage remains below 50% even while move_base misses the update rate.

Found the fix; I was missing the optimizations flag in Catkin. I added the argument ‘DCMAKE_BUILD_TYPE=Release’.