You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用NAOqi通过ALProxy访问虚拟NAO机器人时出现Socket未连接错误

解决NAO机器人Python API调用时的"Socket is not connected"错误

问题重现

开发对接NAO机器人的Python API,在Choregraphe虚拟机器人上测试,24小时前程序突然失效:执行foo = ALProxy(ALfunction, ip, port)后调用foo.do(),抛出错误:

RuntimeError: ALfunction::do
Socket is not connected

实际示例代码:

def sayText(args, ip, port):
    tts = ALProxy("ALTextToSpeech", ip, port)
    print(str(args[0]))
    tts.say(str(args[0]))

运行时报错:

File "C:\Python27\lib\site-packages\naoqi.py", line 371, in method_missing
raise e
RuntimeError: ALTextToSpeech::say
Socket is not connected

此前用PC开发正常,笔记本从一开始就有此问题,排除防火墙设置原因。

排查及解决方法

  • 核对虚拟机器人的IP与端口
    Choregraphe虚拟机器人默认监听127.0.0.1:9559,确认代码中传入的ip和port参数与Choregraphe右上角显示的连接信息完全一致。可以先硬编码"127.0.0.1"和9559进行测试,排除参数传递错误。

  • 重启虚拟机器人服务
    Choregraphe虚拟机器人的NAOqi进程可能出现异常,导致端口未正常监听。关闭Choregraphe及所有相关后台进程,重新启动虚拟机器人,等待1-2分钟让服务完全初始化后再执行代码。

  • 匹配Python SDK与Choregraphe版本
    你使用的是Python2.7,需确保安装的naoqi.py版本与当前使用的Choregraphe版本完全兼容。版本不匹配会导致通信协议不兼容,卸载现有naoqi库,重新安装对应版本的NAO机器人Python SDK。

  • 排查网络接口冲突
    笔记本多网络接口(有线、无线、虚拟网卡)可能导致连接请求路由异常。禁用多余的网络接口,仅保留本地回环接口,确保程序连接请求发送到127.0.0.1。

  • 检查端口占用情况
    用Windows命令行执行netstat -ano | findstr :9559,查看9559端口是否被其他进程占用。若有占用,结束对应进程或在Choregraphe中修改虚拟机器人的监听端口。

测试代码示例

def sayText(args):
    # 硬编码正确的本地地址和端口
    tts = ALProxy("ALTextToSpeech", "127.0.0.1", 9559)
    print(str(args[0]))
    tts.say(str(args[0]))

内容的提问来源于stack exchange,提问作者Rrrrr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 04:27:26