Acados NMPC - Lower performance on ARM CPUs?

Hello everyone,

I am running an NMPC position controller for a UAV quadcopter. I have done some testing both on Software in the loop simulations (SITL) on my PC and Hardware in the loop simulation (HITL), in this case the NMPC runs on a Jetson Xavier NX.

In order to debug i am saving the time_tot received from the python interface which should be the time taken by the solver to produce the control inputs, at least to my understanding.

The controller is a ROS 2 node which calls on acados to solve the nonlinear control problem.

The controller runs with no issues both on my PC and on the Jetson Xavier NX but what I am noticing is that the controller is faster on the PC than on the Jetson (0.004 s vs 0.0073 s average solver time).

This is not what I expected since in the HITL tests the Gazebo simulation is run on the PC while the Jetson is used solely for the control algorithm, while in the SITL case the PC runs both the simulation and the control nodes.

Any help on understanding why this is the case would be greatly appreciated,
Thanks,
Riccardo

Anyway here are some graphs of the solver times:
HITL

SITL

Here are the details of the two CPUs
Jetson Xavier NX (HITL testing)
6-core NVIDIA Carmel Arm®v8.2 64-bit CPU
6MB L2 + 4MB L3
Max CPU frequency 1.9 Ghz

Intel core i7 (SITL testing)
i7-6500U - 2 cores / 4 threads
Max CPU frequency 3.1 Ghz

Sorry,
I just stumbled on this post here on the forum.

It basically says that I should compile BLASFEO with the dedicated target. I will do that and update the post. Otherwise I will delete the post since the issue has been already pointed out.

Sorry again,
Riccardo

1 Like