Testers Wanted: GoPiGo3 on PiOS Bookworm (Pi4 or Pi5)

I have created an unofficial install script for GoPiGo3 API on the latest PiOS Bookworm, and would like to have folks test it on their GoPiGo3 robot.

Disclaimers:

  • Not an official release - Do not ask ModRobotics for support on this configuration
  • Desktop “GoPiGo3 Calibration Panel” only works if Display manager is changed to X11 in raspi-config
  • Only hardware I2C is enabled, so I2C devices must be plugged into the hardware I2C connectors
    (outer-most white connectors on front of GoPiGo3)

REQUIREMENTS

  • System must have pi user
  • Must be user pi when running this script
  • Must be connected to the Internet
  • Do not need to enable i2c or spi - installation will configure

INSTALLATION

wget https://raw.githubusercontent.com/slowrunner/GoPiGo3_PiOS_Bookworm/main/setups/install_GoPiGo3_PiOS_Bookworm.sh
source install_GoPiGo3_PiOS_Bookworm.sh

After it reboots, first test:

python3 /home/pi/Dexter/GoPiGo3/Software/Python/Examples/Read_Info.py

If you have a speaker attached, it will announce the IP address.

Extra Credit

1 Like

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.

==================== Footnotes ====================

  1. 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.

1 Like

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”.)

1 Like

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.

1 Like