【问题标题】:Importing URDF throws ros::TimeNotInitializedException导入 URDF 抛出 ros::TimeNotInitializedException
【发布时间】:2019-01-21 16:38:18
【问题描述】:

我正在尝试使用 trac_ik inverse kinematic solver 与 NAO (V50) 合作。我需要使用修改后的限制,因为 NAO 在他身上添加了皮肤,这改变了限制。尝试使用预先生成的nao.urdf 而不进行修改,但这会引发相同的错误。当我查看这个错误时,我发现它可能是related to tf library。他们包含的 pr2 的 trac_ik 示例代码工作得很好。当我认为是 trac_ik 的 bug 时,他们回答说是 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 旋律。如何找到导致此问题的原因/正确的 ROS 用法是什么?

编辑:为什么投反对票?

【问题讨论】:

    标签: python ros nao-robot inverse-kinematics


    【解决方案1】:

    确保在执行任何其他操作之前初始化 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- 再次运行您的示例脚本。

    【讨论】:

    • 谢谢,也试过了,但还是一样。
    • 好的,我尝试运行和你一样的包,你可以试试这个: 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- 再次运行您的示例脚本。
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多