导入 URDF 会抛出 ros::TimeNotInitializedException



我正在尝试使用带有trac_ik反向运动学求解器的 NAO (V50(。我需要使用修改后的限制,因为NAO在他身上添加了皮肤,这改变了限制。尝试使用预生成的nao.urdf而不进行修改,但这会引发相同的错误。当我查找此错误时,我发现它可能与 tf 库有关。他们包含的 pr2 trac_ik示例代码工作得很好。当我认为这是来自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( (core dumped [obraz paměti uložen](

一开始也尝试使用rospy.init_node("文本"(,但这也没有用。使用ROS旋律。如何找到导致此问题的原因/正确的 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::Model robot_model; 行之前添加了它(
3-使用catkin_make重新编译包 --pkg track_ik_python
4-再次运行示例脚本。

最新更新