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

如何通过Python获取NAO机器人的时间线及绑定的动作?

通过Python获取NAO机器人的时间线及绑定动作

完全可以通过Python代码实现这个需求,核心是借助NAOqi框架提供的ALTimeline模块操作时间线,结合其他相关模块提取动作内容。

操作步骤与代码示例

  1. 环境准备
    确保Python环境已安装NAOqi Python SDK,且开发机器与NAO机器人处于同一局域网,能正常通信。

  2. 连接机器人并获取时间线服务

    from naoqi import ALProxy
    
    # 替换为你的机器人IP和默认端口9559
    robot_ip = "192.168.1.100"
    robot_port = 9559
    
    # 初始化ALTimeline代理
    timeline_proxy = ALProxy("ALTimeline", robot_ip, robot_port)
    
  3. 获取已配置的时间线列表
    调用getTimelines()方法可获取机器人上所有已保存的时间线名称:

    timeline_list = timeline_proxy.getTimelines()
    print("已配置的时间线:", timeline_list)
    
  4. 提取指定时间线的绑定动作
    针对目标时间线,通过getTracks()方法获取时间线内的轨道数据,从中解析动作信息(如动作名称、起始时间、时长等):

    target_timeline = "MyDanceTimeline"  # 替换为你的目标时间线名称
    tracks = timeline_proxy.getTracks(target_timeline)
    
    # 遍历轨道,提取动作相关内容
    for track in tracks:
        # 过滤出动作类型轨道(类型标识通常为"Animation")
        if track["type"] == "Animation":
            action_name = track["content"]
            start_time = track["startTime"]
            duration = track["duration"]
            print(f"动作名称:{action_name},起始时间:{start_time}s,时长:{duration}s")
    

补充说明

  • 如果需要查看动作的具体细节(比如关节运动数据),可以结合ALAnimationPlayer模块,调用getAnimation()方法获取动作的完整定义:
    animation_proxy = ALProxy("ALAnimationPlayer", robot_ip, robot_port)
     animation_data = animation_proxy.getAnimation(action_name)
     print("动作详细数据:", animation_data)
    
  • 部分时间线可能包含音效、事件等其他类型轨道,需根据type字段过滤出动作类轨道。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:13:23