0

我在为 Gazebo 模拟器制作 World 插件时遇到了一些麻烦。

我有一个机械手,负责捡起一些盒子并将它们移动到特定的位置。为了模拟抓取,我只想将盒子(它们是静态模型)刚性地连接到机器人末端执行器上,并在它们就位时将它们分离。

不过,我无法执行这个简单的任务。我从课堂上找到了这个AttachStaticModel功能;physics::Model我以这种方式使用它:

robotModelPtr->AttachStaticModel(boxModelPtr, offset);

要么用作偏移量,要么ignition::math::Pose3d()boxLinkPtr->WorldPose() - robotLinkPtr->WorldPose()它什么也不做。

然后,我尝试在盒子和机器人之间手动创建一个固定关节,如下所示:

robotModelPtr->CreateJoint("connection", "fixed", robotLinkPtr, boxLinkPtr)

但是这样做会导致盒子飞走。

盒子 SDF 由一个视觉节点和一个碰撞节点组成,它们都使用 .dae 网格。

任何建议将不胜感激。非常感谢。

4

1 回答 1

0

我无法使用AttachStaticModel功能。无论如何,出于我的目的,我刚刚创建了一个世界插件,它维护指向盒子模型和机器人末端执行器链接的指针,并在世界的每个更新事件中相应地更改盒子的模型位置。

于 2020-06-22T06:48:39.227 回答