使用Choregraphe开发NAO应用如何禁用监听时自动亮蓝灯功能
解决NAO机器人监听状态自动覆盖自定义LED灯效的方案
该问题的核心原因是Autonomous Life开启状态下,系统默认对话逻辑会自动绑定监听状态与预设蓝色LED效果,优先级高于普通自定义灯效设置。可通过以下两种方案解决:
方案1:在Dialog链路中添加高优先级覆写逻辑
该方案无需修改系统配置,仅在你的项目逻辑中添加控制代码即可生效:
- 在Choregraphe项目中添加Python脚本盒,优先级设置为高于系统默认行为,将其输入端口绑定到Dialog盒的
onListening输出端口 - 在Python脚本盒中写入如下控制代码,监听状态触发时会直接抢占LED控制权并写入你自定义的颜色:
import naoqi class LedControl(GeneratedClass): def __init__(self): GeneratedClass.__init__(self) self.leds = naoqi.ALProxy("ALLeds") def onInput_onStart(self): # 禁用系统对眼部、耳部LED的自动控制权限 self.leds.enableControl("FaceLeds", False) self.leds.enableControl("EarLeds", False) # 替换括号内的三个数值为你需要的RGB色值,范围0-1,示例为暖黄色 self.leds.fadeRGB("FaceLeds", 1, 0.7, 0.2, 0.1) self.leds.fadeRGB("EarLeds", 1, 0.7, 0.2, 0.1) self.onStopped()
方案2:直接关闭对话模块的LED自动反馈
该方案可以彻底禁用对话状态对应的自动LED变化,不会再出现自定义灯效被覆盖的情况:
- 打开Choregraphe的
Robot applications面板,找到autonomous-life组件的配置页 - 定位到Dialog子模块的
enable_led_feedback参数,将参数值修改为false即可
注意:不要禁用ALLeds模块的全局控制权限,否则会影响机器人其他必要的状态提示功能,仅按需控制FaceLeds、EarLeds两组灯的权限即可。
内容的提问来源于stack exchange,提问作者Cain
相关产品推荐
相关产品推荐

