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

ROS运行报错TypeError: must be real number, not RestMode如何修复?

问题根本原因
  • 核心错误是你调用IK类实例方法calculateAngles时多传入了冗余的self参数:
    self.rb是你提前实例化的IK类对象,Python调用类的实例方法时,会自动将实例本身作为第一个self参数传入方法,你手动额外传入了当前RestMode类的实例self,导致整个参数列表完全错位。
两个报错的对应逻辑
  1. 当calculateAngles参数定义为calculateAngles(self,roll,pitch,yaw,dx,dy,dz,leg)时:
    实际接收到的参数依次为:自动传入的IK实例(对应第一个参数self)、你手动传入的RestMode实例(对应第二个参数roll)、你传入的roll数值(对应pitch参数)……所有参数全部错位,方法需要数值类型的roll时拿到了RestMode实例,因此抛出must be real number, not RestMode错误。
  2. 当你将leg调整到参数第一位,定义改为calculateAngles(self,leg,roll,pitch,yaw,dx,dy,dz)时:
    实际接收到的参数里,本该接收数值的位置被你传的leg字符串(如FL/RL等)占用,因此抛出must be real number, not str错误。
修复方案

仅需要修改调用calculateAngles的代码行,删除冗余的第一个self参数即可,同时将calculateAngles的参数定义恢复为最初的顺序:

# 把原来的调用代码
(q1,q2,q3,ht) = self.rb.calculateAngles(self,roll,pitch,yaw,dx,dy,dz,leg)
# 修改为
(q1,q2,q3,ht) = self.rb.calculateAngles(roll,pitch,yaw,dx,dy,dz,leg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:45:04