Blowing off some CPU steam

A project log for Upkie - Homemade wheeled biped robot

A homemade wheeled biped that can balance, crouch or turn around. It proudly stands on broomsticks and 3D printed parts.

Tast's RobotsTast's Robots 06/11/2022 at 20:070 Comments

When running the Pink balancer agent on Upkie, the four CPU cores of the Raspberry Pi are used as follows:

ProcessesThreadsUsage (%)
Spine (+ other system processes)
Logger (+ other system threads)
10 ± 5
1SpineSpine loop
10 ± 5
2SpineCAN communications
50 ± 20
3AgentPython threads

On average over all cores, the ARM processor is only used at about 50% of its capacity, but that (or the fact that one core is used at 100% all the time) is enough to drive the CPU temperature up to a problematic level:

(If you were wondering why Vulp has a CPU temperature observer, now you now 😉) The issue is that to protect itself the Raspberry Pi throttles all computations if its CPU temperature hits 80 °C, which for Upkie results mostly in skipped control frames (wheels apply their commanded velocities for too long ⇒ balancing degrades) and in the worst case triggers Vulp's safety of stopping actuators when no action is sent for more than 100 ms.

Luckily it's not hard to cool down a Pi. Having a standing fan blow air at Upkie from the sides, where its wide "seal ears" are, does the job just fine. But the robot is not designed to stay near a fan, so let's give him an "earpiece" so that it carries its own fan:

There is already a second male XT-30 connector on the pi3hat in Upkie's head, so we can order a 24 V DC fan from online retail, solder a female XT-30 connector to it, and just plug it to the power bus. In this update, the fan has the following properties:

The mount is a temporary adapter to connect to the existing right plate. Once we have settled on fan dimensions, we can redesign the plate so that it plugs into it directly:

The fan is effective immediately. It brings down the CPU temperature to an equilibrium around 43 °C while the balancer is running full steam:

Now the issue has become noise 😅 The fan's continuous 32 dBA relentlessly drill into the ears of neighboring humans, whose thoughts are inevitably driven to the next revision: smaller fan, less dBA!

🔊 → 🔉