如何通过Linux电脑控制旧版Codey Rocky机器人并解决程序执行与调试相关问题
如何通过Linux电脑控制旧版Codey Rocky机器人并解决程序执行与调试相关问题
我太懂你这种想用自己的Linux电脑操控旧版Codey Rocky当常规机器人的需求了,之前踩的这些坑——看不到程序输出、脚本执行报错、固件更新后还添了新麻烦,确实挺闹心的。结合你的情况,给你整理几个实用的解决思路:
一、先搞定Linux下的输出与调试问题
你说Windows虚拟机能看到stdout但Linux不行,大概率是串口权限或通信配置的问题:
- 首先确认机器人和Linux电脑的USB连接:插上USB线后,用
ls /dev/ttyUSB*或ls /dev/ttyACM*找到对应的串口设备(比如/dev/ttyUSB0)。 - 给当前用户添加串口访问权限,避免通信被限制:
执行完后重启一下电脑,权限才会生效。sudo usermod -aG dialout $USER - 不用mblock web界面,直接用
screen工具连接串口看实时输出,波特率一般是115200(如果不对可以查旧版Codey Rocky的文档):
进去后直接输入screen /dev/ttyUSB0 115200ls /就能立刻看到结果,调试脚本时的print输出也会在这里显示,比web界面靠谱多了。
二、解决脚本执行与shebang失效的问题
固件更新后#!/bin/sh失效,说明机器人内置的执行环境变了,现在默认是用内置Python解释器,没法直接调用shell了:
- 别再用
os.system()执行shell命令,换成Python的subprocess模块,既能执行命令又能稳定获取输出,还不容易抛异常:import subprocess try: # 执行ls /命令,捕获输出 result = subprocess.run(["ls", "/"], capture_output=True, text=True) print("命令输出:", result.stdout) # 如果有错误也能看到 if result.stderr: print("错误信息:", result.stderr) except Exception as e: print("执行出错:", str(e)) - 不要修改脚本开头的shebang,mblock的运行环境本来就是绑定内置Python的,强行改shebang会让固件识别不了脚本。如果要运行自定义程序,建议把脚本传到机器人的用户存储目录(比如
/mnt/user,可以用ls /mnt确认),然后用内置Python直接执行:python3 /mnt/user/your_custom_script.py
三、Linux下远程控制机器人的可行方案
如果想直接从Linux电脑发指令控制机器人(比如移动、读取传感器数据),可以试试这两种方式:
- 串口直接控制:用Python的
pyserial库写个简单的控制脚本,直接给串口发送旧版Codey Rocky支持的指令集(比如官方文档里的移动、传感器读取指令),这样能实现实时操控。 - WiFi远程控制:如果你的旧版Codey Rocky支持WiFi,可以开启它的热点模式,然后在Linux电脑上连接这个热点,通过TCP/IP协议发送控制命令,摆脱USB线的限制。
四、实用调试小技巧
- 脚本里多写
print()语句输出关键变量和执行状态,只要串口连接正常,这些信息都会实时传到Linux的screen终端里。 - 给所有可能出错的代码块加上
try-except捕获异常,像上面subprocess的例子那样,能快速定位问题所在。
备注:内容来源于stack exchange,提问作者jp_
相关产品推荐
相关产品推荐

