Test Report: Install GoPiGo3 libraries on Raspberry Pi O/S Bookworm.
Summary:
Installation appeared to complete without any errors that I could see. Note that, again, I forgot to “tee” to a log file.
The installation continued without stopping for each installation step, except for one stop where it appeared that something was being listed and requires the user to press “Q” to continue.
During subsequent testing there were no obvious missing dependencies as there was in the Dexter GoPiGo3 install script.
Both your test script, (listing robot’s state), and my test script, (moving and centering both servos), completed without error.
The power button and light works as expected, however the antenna light doesn’t. I suspect that there is an “antenna LED” service responsible for this action that’s not running.[1]
Running the /home/pi/Dexter/GoPiGo3/Software/Python/Examples/LED.py script behaves as expected with the two eyes, the antenna, and the two blinker LED’s fading in and out.
Running the '/home/pi/Dexter/GoPiGo3/Software/Python/Examples/Servo.py` script behave as expected with both servos moving back and forth.
The “Pi_Running” (?) pin is asserted properly which enables the +5 boost supply on my 'bots.
The robot did not speak its IP address at boot as the instructions indicated. (My wife’s happy, but that’s a discrepancy.)
Suggestion:
At the end of the script, run a [sudo] chown -R pi:pi /home/pi/Dexter to make sure that everything in the directory is runnable by pi. Many things in this directory are still owned by root and are not executable by pi. I usually end up chown’ing everything in that directory to pi:pi anyway to avoid permission issues.
BUG:
The end-of-script reboot does not pause to give the user a chance to save and close anything else that might be open/running. Since there is the real risk of loss or corruption of a user’s data, I would classify this as a Severity-1 bug, with a very high priority for fixing in a commercial environment.
Details:
I tried your installation on Bookworm as written and it appears to work using both your test and “my” test - moving the servos.
====================
One serious objection to the script as written: It reboots the system without pausing to allow the user to clean up and possibly save work.
From a usability standpoint, that’s one of the Seven Deadly Sins as it can cause a user to inadvertently loose essential data.
For example: I copied the data from the script where it pauses until the user presses “Q” and pasted it into a document so I could report it to you, but hadn’t saved it, just in case there was additional data that I wanted to capture. Fortunately, it appears that Mousepad has a save-buffer file that it periodically preserves and it reported on reboot that it had not shut down properly and allowed me to recover the session.
Suggestion:
Require user input before doing anything drastic like a reboot.
====================
The script proceeded without stopping except for one case:
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting rpi-lgpio
Downloading https://www.piwheels.org/simple/rpi-lgpio/rpi_lgpio-0.6-py3-none-any.whl (11 kB)
Requirement already satisfied: lgpio>=0.1.0.1 in /usr/lib/python3/dist-packages (from rpi-lgpio) (0.2.2.0)
Installing collected packages: rpi-lgpio
Successfully installed rpi-lgpio-0.6
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
Created symlink /etc/systemd/system/multi-user.target.wants/gpg3_power.service → /etc/systemd/system/gpg3_power.service.
● gpg3_power.service - GoPiGo3 Power Service
Loaded: loaded (/etc/systemd/system/gpg3_power.service; enabled; preset: e>
Active: active (running) since Mon 2024-09-16 15:46:28 MSK; 40ms ago
Main PID: 21016 ((env))
Tasks: 1 (limit: 8730)
CPU: 487us
CGroup: /system.slice/gpg3_power.service
└─21016 "(env)"
Sep 16 15:46:28 Charline-Bookworm systemd[1]: Started gpg3_power.service - GoPi>
lines 1-10/10 (END)
It appears to be related to the “gopigo3_power.service” listing some data. (I haven’t looked at the script so I can’t be sure, but that’s my guess.)
The calibration panel appears to work - the drive and spin buttons behave as expected - I haven’t tried actually changing the calibration settings yet.
The control panel still fails because it needs wxPython installed. I will try to install that next, though it’s not within the scope of this test.
This is correct - there is a service which is not installed by this install script.
To install it:
[GUI method] Go to /home/pi/Dexter/GoPiGo3/Install and copy the file antenna_wifi.service within a root file manager - sudo pcmanfm starts the file manager as root.
Paste the file in /etc/systemd/system/ from within the root file manager
[Command line method] sudo cp /home/pi/Dexter/GoPiGo3/Install/antenna_wifi.service /etc/systemd/system/
[Everyone] From the command line run sudo systemctl start antenna_wifi to enable the feature. sudo systemctl stop antenna_wifi will turn it off again.
Good point. I should pause with a “Press return when ready for required reboot”, (as long as the user doesn’t press ctrl-c and then immediately complain the tests don’t succeed.)
Thanks for narrowing it down. Maybe there is a --ignore-warnings or something that would avoid that. It really is weird to have an installation pause without a clear indication what is expected of the user.
If you want it to run the next boot session, the service must be enabled:
sudo systemctl enable antenna_wifi
I don’t install the antenna_wifi service so that Dave can use that LED as a flashing low battery warning. (On Carl it is used to show when Carl is listening after a user says “Hey Carl”.)
That’s an obvious keyboard-chair interface error - not in scope.
Good point. I didn’t know that. Actually, now that you mention it, that’s the way you turn off access-point mode too.
If it were me, I’d install it so the user has the choice of enabling it or not. You have an excellent use-case for disabling it. I use it as a visual indication of when the WiFi has been successfully connected.