跳转到内容

9. 接口调用问题排查

针对 HTTP JSON RPC 和 ROS2 Topic 一般排查思路是不同的,针对机上问题也有一些共性的排查方法。

  1. 检查对应 IP 是否为正确的 x86 工控机 IP,且能够 ping 通。
  2. 检查 HTTP URL 是否正确,可参考各个示例脚本或接口文档。
  3. 检查对应 port 是否有服务启动,ssh 连接到 x86 后命令行执行 lsof -i:xxxx 可查看对应端口是否有服务启动。
  4. 如果报 Connection Refused,说明 IP 可能不通或 port 服务未启动。
  5. 如果报 HTTP deserialize failed,说明 JSON body 字段可能填写有误,可参考示例脚本或接口文档进行对照查看。
  1. 机上 ROS2 dds 配置是否增加对应使用的网卡 IP,privileged 和非 privileged 配置是否都正确添加网卡 IP,正确添加后需整体重启。

  2. 是否使用的 ROS2 Humble with Fastdds 版本。

  3. 本地是否加载 ROS_DOMAIN_ID=232和 ROS_LOCALHOST_ONLY=0,export 的环境变量只会在当前终端生效,新开终端需要重新 export,可用 env | grep ROS命令查看当前终端的相关环境变量设置。

  4. 话题 QoS 是否保持与机上默认 QoS 一致。

    history: keep_last
    depth: 10
    reliability: best_effort
  5. ssh 连接上 x86 工控机后,执行 aima em load-env (加载 ROS2 环境变量)后使用 ros2 topic 命令查看相关话题是否有模块在正常发送或接收。

  1. 可通过 AimMaster 查看机器人有无健康告警,在机器人本身故障的情况下可能会影响部分接口调用,例如关节故障,则运控接口可能无法正常调用。
  2. 未连接 AimMaster 时也可通过登录机器人 x86 工控机执行 aima doctor 命令快速查看健康告警信息。
  1. 为什么调用上肢动作接口或脖子接口没反应或者强烈抖动

    1. 首先确认机器人是否处于对应 Action 下,需要处于后缀为 JOINT_SERVO 的模式。
    2. JOINT_SERVO 模式下,上半身上肢和脖子的控制权会被动作播放模块抢占,需要调用 DisableMotionPlayer 接口关闭动作播放模块的控制后才可以正常调用上肢或脖子控制接口。
    curl -i \
    -H 'content-type:application/json' \
    -H 'timeout: 1000' \
    -X POST http://127.0.0.1:56444/rpc/aimdk.protocol.MotionCommandService/DisableMotionPlayer \
    -d '{}'
  2. 为什么调用任何动作播放都只会做抬右手动作

    1. 因为这是动作播放模块的默认动作,当 motion_id 参数有误时,会默认做此动作

    2. 一个正确的动作路径应该找到对应动作的 .db 文件,传入完整去掉 .db 后缀的路径,例如

      Terminal window
      /agibot/data/resources/default/motion/motion_player/default/双手挥手/双手挥手

如遇二次开发接口 bug,可通过如下渠道进行问题反馈

https://agirobot.feishu.cn/share/base/form/shrcndpGW6r8FIdt2mT3uX02z6k

注意

  1. 该渠道仅用于二次开发接口问题答疑或 bug 反馈,机器人本体故障或售后维修等请直接联系交付、运维、售后等相关团队。无关问题将不回复。
  2. 表单中请详细描述问题,最好给出可复现步骤,信息丰富、问题描述清晰的问题将会优先回复解决,含糊不清、笼统的问题优先级靠后且可能被忽略。
  3. 请认真填写各项信息,信息不一致或随意填写的工单将会被忽略。
  4. 单个工单请聚焦单个/类问题,请不要将多个问题混在一个工单中,这将大大延缓您的问题处理时间。