Specifically calling for comments from @cleoqc.
(And everyone else too!)
One of the things I have been wanting to do is revamp the GoPiGo control panel and I’m looking for ideas/suggestions.
A tabbed interface to break out various functions into separate tabs.
The ability to calibrate individual wheel constants so that the robot travels in a straight line.
Explanatory text describing what changes do what things. (i.e. A larger number makes the robot travel further, etc.)
The ability to force a particular wheel encoder constant that will override the serial number checks. (Perhaps the motors have been replaced?)
I remember that there were other things I wanted to do, but I forgot what they were.
I’m wondering if the control panel is up on GitHub, and would they be interested in pull requests for upgrades?
I am also interested in comments about updating the config file to maintain the additional data.
Ambitious project. I’ve only barely used the control panel, so I don’t have any worthwhile suggestions.
The control panel is open source
I’ll accept PRs to it, yes. Code must be compatible with Python 3.7 and up.
IIRC, this is possible with the current code, but the process was trying to shield the user from having to understand what was being configured.
Variations in wheel/floor friction and slippage are likely to confound managing the path more tightly than the current PID.
Robots need error detection and adaptation after action because reality always bites into planning.
Part of the problem I want to address is giving the user the opportunity to tweak “advanced options” if they want to without having to modify fundamental libraries.
I also want to make the interface more self-explanatory, indicating which changes produce what effects.
- What change makes the robot travel further?
- What change makes the robot turn on its axis further?
- What change counteracts a tendency to drift to the right or left?
- What is the encoder constant? (Along with the ability to change it if necessary.)
IMHO, shielding the user from the picky details of the underlying libraries should be the ultimate goal, while making necessary adjustments easily available to the user.