After a great @CotswoldJam 6th #PiParty yesterday, it’s back to bug fixing; trouble is I only have symptoms and no idea of the cure.
Here’s the various processes running, all connected by shared-memory FIFO streams:
+—————+ (1) |Sweep|——————>——————+ +—————+ | +—————+———+ (3) +——————+ |Autopilot|——————>——————|Motion| +—————+———+ +———+——+ +———+ | | |GPS|———————>———————+ | +———+ (2) | | +—————+ (4) | |Video|——————>——————+ +—————+
The problem is this: when using the GPS and Sweep processes individually, the system works beautifully, but together, the Motion process poll.poll() doesn’t pick up what the Autopilot process sends it. From the logs for each process, GPS, Sweep, Video and Autopilot are working, sending their data to their neighbour; it’s just Motion that picks up just Video not Autopilot data from the FIFOs.
I can’t help but suspect that is hardware in some way: The Raspberry Pi 3B has 4 CPUs; I have 5 processes and 4 FIFOs between them.
While I could continue working on the pond or object avoidance enhancements without GPS and Sweep working together, I’d very much like not to. There’s will now be a short delay until I work out what to do next.
P.S. Ideas gratfully received!
Bug fixed, code updated on GitHub