0

我正在尝试使用trac_ik inverse kinematic solver与 NAO (V50) 一起工作。我需要使用修改后的限制,因为 NAO 在他身上添加了皮肤,这改变了限制。尝试使用预先生成的nao.urdf而不进行修改,但这会引发相同的错误。当我查看这个错误时,我发现它可能与 tf library 有关。他们包含的 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)(核心转储 [obraz paměti uložen])

还尝试在开始时使用 rospy.init_node("text") ,但这也不起作用。使用 ROS 旋律。如何找到导致此问题的原因/正确的 ROS 用法是什么?

编辑:为什么投反对票?

4

1 回答 1

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)

Update: It seems this is a tf related issue as you said. Can you try these steps:
1- Find track_ik_wrap.i file in track_ik_python package.
2- add line "ros::Time::init();" to TRAC_IK constructor. (I added it before urdf::Model robot_model; line)
3- Recompile package with catkin_make --pkg track_ik_python
4- Run your example script again.

于 2018-08-14T18:56:06.593 回答