I think I understand the difficulties of accurately turning (and stopping) the GoPiGo3 with only encoder feedback. In my case, turn_degrees(360,blocking=False) seems to be stopping about 5 degrees short consistently. I have not tested with a blocking=True case; (I would need to launch a distance sensor reading thread in that case).
I think my tires are 65.9 instead of the default 66.5 mm, but I have not compared how drive_cm() does to be sure this is a contributing factor.
Is there any difference between with and without blocking? The board does the stopping in both cases? The class only figures out when to return if blocking is True?