問題
以下のエラーが出た。
pi@raspberrypi:~/StanfordQuadruped $ sudo systemctl status joystick
● joystick.service - Pupper Joystick service
Loaded: loaded (/home/pi/PupperCommand/joystick.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since Wed 2022-08-24 01:44:50 JST; 1s ago
Process: 1872 ExecStart=/usr/bin/python3 /home/pi/PupperCommand/joystick.py (code=exited, status=1/FAILURE)
Main PID: 1872 (code=exited, status=1/FAILURE)
CPU: 132ms
重要なのは下から3行目の、この行である。
Process: 1872 ExecStart=/usr/bin/python3 /home/pi/PupperCommand/joystick.py (code=exited, status=1/FAILURE)
なぜこのエラーが発生するのか。我々は原因を解明するためアマゾンの奥地へと向かった。
原因と解決
原因を特定するため、エラーに書いてあるPythonプログラムを実行してみる。
pi@raspberrypi:~/StanfordQuadruped $ sudo python3 /home/pi/PupperCommand/joystick.py
Traceback (most recent call last):
File "/home/pi/PupperCommand/joystick.py", line 1, in <module>
from UDPComms import Publisher, Subscriber, timeout
ModuleNotFoundError: No module named 'UDPComms'
わざわざ親切に原因が書いてあるではないか。UDPCommsパッケージが無いらしい。足りないパッケージをインストール。
pi@raspberrypi:~/StanfordQuadruped $ sudo pip install UDPComms
確認。
pi@raspberrypi:~/StanfordQuadruped $ sudo systemctl status joystick.service
● joystick.service - Pupper Joystick service
Loaded: loaded (/home/pi/PupperCommand/joystick.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-08-24 01:46:09 JST; 27s ago
Main PID: 1939 (python3)
Tasks: 3 (limit: 1830)
CPU: 423ms
CGroup: /system.slice/joystick.service
tq1939 /usr/bin/python3 /home/pi/PupperCommand/joystick.py
mq1969 hcitool scan --flush
Aug 24 01:46:09 raspberrypi systemd[1]: Started Pupper Joystick service.
Aug 24 01:46:09 raspberrypi python3[1939]: [info][controller 1] Created devices /dev/input/js0 (joystick) /dev/input/event2 (evdev)
Aug 24 01:46:09 raspberrypi python3[1939]: [info][bluetooth] Scanning for devices
直った。
組込界隈だと、送られてきたコードや部品が正常に動作することの方が稀なのでエラーが出ても「ああ、いつものやつね」程度にしか思わなくなってしまった。