Heading controller progress

The heading controller is basically working. The big changes were reducing the maximum steering angle to reducing how much trouble the controller can get itself into, and putting the gain on the dial so I could tune it while driving. There’s still a lot of slow oscillation so I I’ll add a differential term to counter how steering angle integrates to heading.

The reliability problem has gone after switching from the golang gc compiler to gccgo. I think there’s a problem with the runtime as the whole app locks up and gdb reports all threads being in a function with ‘futex’ in the name. I want to report this to the golang team, but how do you reduce “a 10 thread 1000 line program, on ARM, on a random kernel, in the cold, in a noisy environment, sometimes locks up after 10 minutes of activity.”

Next step is the differential term. I only have GPS heading so I’ll look at the run data and see how noisy the heading differential is. Getting a gyro is tempting.

Actually, the zeroth step is replacing the front wishbone:


I must have half broken it in the first Great Crash, and last nights glue job didn’t hold. Conrad want an excessive 50 CHF including shipping for two of them and a new bumper. German word of the day: a bumper is the much more awesome Frontrammer.

Michael Hope
Software Engineer