7.3 TCP Socket 远程控制
TCP Socket 模式在 PC 端运行 Python 客户端。UNO Q 上的服务接收客户端命令后,通过 Bridge RPC 与机械臂通信。使用前需要在 PC 安装 Python 3 和包含 MyCobot280Socket 的 pymycobot 库。
1. PC 端 Python 环境
Windows
- 从 Python 官网安装 Python 3,安装时勾选 Add Python to PATH。
- 打开 PowerShell 或命令提示符,确认环境:
python --version
python -m pip --version
- 建议创建独立虚拟环境并安装最新版
pymycobot:
python -m venv .venv
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install --upgrade pymycobot
macOS / Linux
确认系统已安装 Python 3 和 venv,然后执行:
python3 --version
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install --upgrade pymycobot
验证客户端类
python -c "from pymycobot import MyCobot280Socket; print('MyCobot280Socket ready')"
看到 MyCobot280Socket ready 表示客户端环境可用。如果导入失败,确认当前终端已经激活正确的虚拟环境,并重新升级 pymycobot。
PC 端只创建
MyCobot280Socket,不要使用板端的unoq_bridge=True初始化方式。
2. 检查 UNO Q 服务
在 UNO Q 终端执行:
hostname -I
systemctl is-active mycobot-server.service
ss -lntp | grep ':9000'
服务应显示 active,端口 9000 应处于监听状态。hostname -I 可能返回多个地址,应选择与 PC 处于同一网段的 UNO Q 地址;不要将 0.0.0.0 当作客户端连接地址。
如果服务异常,先查看日志:
systemctl status mycobot-server.service --no-pager
journalctl -u mycobot-server.service -n 100 --no-pager
3. 检查网络
确保 PC 与 UNO Q 位于同一可信局域网。Windows 可以检查端口:
Test-NetConnection UNO_Q_IP -Port 9000
macOS 或 Linux 可使用系统已有的网络工具检查 UNO_Q_IP:9000。若端口不可达,应先处理 IP、网络隔离、防火墙或 UNO Q 服务状态问题。
4. PC 客户端连接
将示例中的 UNO_Q_IP 替换为 UNO Q 的实际地址,保存为 uno_q_socket_test.py,先执行只读测试:
from pymycobot import MyCobot280Socket
mc = MyCobot280Socket("UNO_Q_IP", 9000, debug=True)
print("version:", mc.get_system_version())
print("angles:", mc.get_angles())
在 PC 的虚拟环境中运行:
python uno_q_socket_test.py
读取正常后,再执行已经确认安全的运动命令:
mc.send_angles([0, 0, 0, 0, 0, 0], 30)
5. 使用限制
- 服务按单客户端顺序处理,不应同时连接多个控制客户端。
- 切换到 App Lab 或板端脚本前,先正常退出 TCP 客户端。
- 不要将
9000端口暴露到公网。 debug=True适合排查问题;性能测量时应关闭调试输出。- 服务重启前先确认没有其他程序正在控制机械臂:
sudo systemctl restart mycobot-server.service
systemctl status mycobot-server.service --no-pager