导入 URDF 引发 ros::TimeNotInitializedException

Importing URDF throws ros::TimeNotInitializedException

我正在尝试通过 trac_ik inverse kinematic solver. I need to use modified limits, because NAO has skin added onto him, which changed the limits. Tried to use pre-genrated nao.urdf without modification, but that throws the same error. When I looked up this error, I found it could be related to tf library 使用 NAO (V50)。他们包含的 trac_ik pr2 示例代码工作得很好。当我认为这是来自 trac_ik 的错误时,他们回答说这是 ROS 使用错误。

from naoqi import ALProxy
from trac_ik_python.trac_ik import IK
import rospy

with open('data.urdf', 'r') as file:
    urdf=file.read()

Solver = IK("Torso", "LShoulderPitch", urdf_string=urdf)

结束于: 在抛出 'ros::TimeNotInitializedException' 的实例后终止调用 what():在创建第一个 NodeHandle 或调用 ros::start() 之前,不能使用 ros::Time::now()。如果这是仅使用 ros::Time 且不通过 ROS 进行通信的独立应用程序或测试,您也可以调用 ros::Time::init() Neúspěšně ukončen (SIGABRT)(核心转储 [obraz paměti uložen])

也尝试在开始时使用 rospy.init_node("text"),但这也没有用。使用 ROS 旋律。我如何找到导致的原因 this/what ROS 的使用是否正确?

编辑:为什么投反对票?

确保在执行任何其他操作之前初始化 ROS 时间,因为您导入的某些内容可能需要它。

import rospy
rospy.init_node("testnode")

from naoqi import ALProxy
from trac_ik_python.trac_ik import IK

with open('data.urdf', 'r') as file:
    urdf=file.read()

Solver = IK("Torso", "LShoulderPitch", urdf_string=urdf)

更新:你说的好像是tf相关的问题。你能试试这些步骤吗:
1- 在 track_ik_python 包中找到 track_ik_wrap.i 文件。
2- 将行 "ros::Time::init();" 添加到 TRAC_IK 构造函数。 (我是在urdf::Modelrobot_model;行之前加的)
3- 使用 catkin_make --pkg track_ik_python
重新编译包 4- 运行 再次使用您的示例脚本。