前提・実現したいこと
NVIDIAのJetsonNanoでJetbotを作っています。JupyterNotebookのCollision AvoidanceでBasic MotionのScript(動作確認プログラム)を実行するとエラーが出るので、解決法を教えてください。
ちなみに、Motor DriverはAdafruitのものを利用しています。PiOLED displayは何も表示されなかったので、このディスプレイを外しJetson NanoとMotor Driverを直接接続した上で実行しました。
発生している問題・エラーメッセージ
まず、from jetbot import RobotでRobot クラスをインポートし、
次に、robot = Robot()と初期化しようとすると、以下のエラーメッセージが出ます。
Python3
1--------------------------------------------------------------------------- 2TimeoutError: [Errno 110] Connection timed out
該当のソースコード
Python3
1--------------------------------------------------------------------------- 2TimeoutError Traceback (most recent call last) 3<ipython-input-4-b418ad9f6ab3> in <module> 4----> 1 robot = Robot() 5 6/usr/local/lib/python3.6/dist-packages/jetbot-0.4.0-py3.6.egg/jetbot/robot.py in __init__(self, *args, **kwargs) 7 20 def __init__(self, *args, **kwargs): 8 21 super(Robot, self).__init__(*args, **kwargs) 9---> 22 self.motor_driver = Adafruit_MotorHAT(i2c_bus=self.i2c_bus) 10 23 self.left_motor = Motor(self.motor_driver, channel=self.left_motor_channel, alpha=self.left_motor_alpha) 11 24 self.right_motor = Motor(self.motor_driver, channel=self.right_motor_channel, alpha=self.right_motor_alpha) 12 13/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_MotorHAT_Motors.py in __init__(self, addr, freq, i2c, i2c_bus) 14 229 self.motors = [ Adafruit_DCMotor(self, m) for m in range(4) ] 15 230 self.steppers = [ Adafruit_StepperMotor(self, 1), Adafruit_StepperMotor(self, 2) ] 16--> 231 self._pwm = PWM(addr, debug=False, i2c=i2c, i2c_bus=i2c_bus) 17 232 self._pwm.setPWMFreq(self._frequency) 18 233 19 20/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.py in __init__(self, address, debug, i2c, i2c_bus) 21 57 self.i2c = get_i2c_device(address, i2c, i2c_bus) 22 58 logger.debug("Reseting PCA9685 MODE1 (without SLEEP) and MODE2") 23---> 59 self.setAllPWM(0, 0) 24 60 self.i2c.write8(self.__MODE2, self.__OUTDRV) 25 61 self.i2c.write8(self.__MODE1, self.__ALLCALL) 26 27/usr/local/lib/python3.6/dist-packages/Adafruit_MotorHAT-1.4.0-py3.6.egg/Adafruit_MotorHAT/Adafruit_PWM_Servo_Driver.py in setAllPWM(self, on, off) 28 93 def setAllPWM(self, on, off): 29 94 "Sets a all PWM channels" 30---> 95 self.i2c.write8(self.__ALL_LED_ON_L, on & 0xFF) 31 96 self.i2c.write8(self.__ALL_LED_ON_H, on >> 8) 32 97 self.i2c.write8(self.__ALL_LED_OFF_L, off & 0xFF) 33 34/usr/local/lib/python3.6/dist-packages/Adafruit_GPIO-1.0.4-py3.6.egg/Adafruit_GPIO/I2C.py in write8(self, register, value) 35 114 """Write an 8-bit value to the specified register.""" 36 115 value = value & 0xFF 37--> 116 self._bus.write_byte_data(self._address, register, value) 38 117 self._logger.debug("Wrote 0x%02X to register 0x%02X", 39 118 value, register) 40 41/usr/local/lib/python3.6/dist-packages/Adafruit_PureIO-1.0.4-py3.6.egg/Adafruit_PureIO/smbus.py in write_byte_data(self, addr, cmd, val) 42 266 # Send the data to the device. 43 267 self._select_device(addr) 44--> 268 self._device.write(data) 45 269 46 270 def write_word_data(self, addr, cmd, val): 47 48TimeoutError: [Errno 110] Connection timed out
試したこと
正常と思われる項目
- Program環境:Collision AvoidanceのTrain Modelは完了
- モーター単体の動作
- モータードライバへの電源供給:緑のランプ点灯
- カメラ(他カーネル)の正常動作:Collision AvoidanceのData Collectionは完了
疑わしい項目
- リストPiOLED displayは表示されなかった。(このディスプレイを外しJetson NanoとMotor Driverを直接接続した上で実行しました。)
- i2cdetectコマンド:結果は下記の通り。i2c通信に異常があるようです。
jetbot@jetson-4-3:~$ sudo i2cdetect -y -r 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
補足情報(FW/ツールのバージョンなど)
①Motor Driverは下記です。
メーカー名:Adafruit
型番:DC Motor + Stepper Featherwin G A 【2927】
https://www.marutsu.co.jp/pc/i/10560550/
②i2c通信に原因がありそうですが、カメラは正常に動作しています。
あなたの回答
tips
プレビュー