乐高Mindstorms机器人:Python脚本与Shell执行rshell的异常差异
乐高Mindstorms Inventor脚本执行时无法检测电机的问题
我正在用Python结合mindstorms包编程乐高Mindstorms Inventor机器人,该包基于rshell与运行MicroPython的机器人通信。
测试代码如下:
from mindstorms import Hub hub = Hub() motor = hub.port.E.motor print(motor) motor.run_for_degrees(270)
在终端Python交互Shell中逐行运行时,一切正常,电机可转动;但将代码放入.py文件执行时,出现错误:
rshell.pyboard.PyboardError: ('exception', b'', b'Traceback (most recent call last):\r\n File "<stdin>", line 1, in <module>\r\nAttributeError: \'NoneType\' object has no attribute \'run_for_degrees\'\r\n')
看起来问题在于执行脚本时机器人未检测到电机。我编写了诊断脚本直接与机器人通信,不依赖上述包:
board = Pyboard(device) board.enter_raw_repl() print(board.exec_("import hub;print(hub.port.A.info())"))
结果返回None,但执行print(board.exec_("import hub;print(hub.info())"))可成功运行,说明机器人本体可被检测,但端口信息无法获取——即.py文件无法检测到连接的电机。而在交互Shell中运行该诊断代码则完全正常。
我已尝试以下排查步骤,但均无效:
- 使用exec()函数在终端运行.py文件,仍提示motor为None;
- 确认交互Shell与执行脚本的Python版本一致;
- 在不同设备上运行脚本;
- 重装乐高Mindstorms固件并确保为最新版本。
请问该异常问题的原因可能是什么?
内容的提问来源于stack exchange,提问作者Kyrylo Kalashnikov
相关产品推荐
相关产品推荐

