rangefinder accuracy is a bit sketchy from what I have seen also but this is not meant to be a high precision sensor. For the rover's purposes, it does the job very well. Occasionally you will get some fluctuations but also keep in mind, the graphs have auto scale, so what looks like a huge jump or fall in the range may actually be only a few mm. Like in the case of your screenshot, the fall is just a few mm but it looks huge because the scale on Y-axis is only a few mm also.
i'm glad it works for you. Thanks for spotting the mistake on the second line of navlights.py, I have fixed it now. Funny enough it never complained so i am guessing it is not used in the code. You can run the sensors demo in parallel to manual control or AI. It shouldn't affect the performance since the Pi will transmit packets to both anyway the moment you initiate the clouddemo.py.
I will add some extra info in the documentation. I also thought about config file to have all the settings in one place.
I also need to add a few things in the documentation, particularly things you need to install with pip but at the moment only pynput comes to mind.
Keep in mind that on ubuntu 17 i found the manual control does not work when you have the terminal window selected. You need to open up another application like a text editor and press keyboard buttons while you are in that application otherwise they don't register as events in python and the rover won't move. This only happens on ubuntu 17 laptop. Ubuntu 16 VMs grab keyboard from inside the terminal also. I have no idea why this happens.
You may also get a bit better responses if you install lowlatency kernel on linux. And there is also a lowlatency kernel project for raspi but I am not using it.
Also keep in mind, the new Raspi3 B+ is not compatible with the top plate of the rover due to the new pins it has for PoE. I found out the hard way today. I had to settle for a Pi3 B as an upgrade to my Pi2.