3

不久,我询问了有关为机器人运动建模(使用 Python 中的逆运动学)选择兼容 Python 的 3D 图形库的建议。在做了一些研究并重新定义了我的目标之后,我希望我能再次寻求一些帮助。

当时我认为 Blender 是最好的选择 - 但现在我有疑问了。我的一个关键目标是能够将模型集成到自定义 GUI (wxPython) 中。似乎这可能相当困难(而且我不确定性能要求)。

我想我现在更倾向于 OpenGL (PyOpenGL + wxglcanvas),但我仍在努力确定它是否适合这项工作。我更像是一个 CAD 人,所以我很难想象如何在 API 中绘制复杂的对象并创建运动。我读到我可以在 Blender 中设计对象,然后以某种方式将其导入 OpenGL,但我不确定这个过程?操纵物体的运动有多难?例如,如果我在两个链接之间创建一个关节,并且我移动一个链接,另一个链接是否会根据第一个链接动态移动,或者我是否需要独立编程每个链接的移动?

我错过了任何明显的工具吗?我不是在寻找完整的机器人建模包,我想从头开始,以便将其合并到我自己的程序中。因为学习比什么都重要。到目前为止,我已经研究了 vPython、Pyglet、Panda3D、Ogre 和几个专业的 CAD 软件包。

谢谢

4

2 回答 2

2

有一个类似的项目正在进行中,它为 matlab 和 python 实现了一个机器人工具箱,它有“基本的 3D 图形”,但你总是可以用一个编写良好的脚本将它与搅拌机接口,它比重新发明轮子工作更少

于 2011-04-01T01:55:57.413 回答
0

如果可以预先计算运动,您可以使用 Blender,手工制作动画,以某种动画文件格式(cal3d ?)烘焙它们,然后在 wxPython OpenGL 窗口中进行渲染。

如果您需要处理用户输入,您可以使用物理引擎...我听说 Bullet 具有 Python 绑定:http ://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?p=&f=9&t=4030 (可能仍然不稳定)。

关于您对 Blender/OpenGL 的怀疑:“复杂对象”是什么意思?有多少“机器人/随便什么”?每个机器人有多少个三角形?每个机器人有多少个关节?(我会根据你的来编辑我的答案)

无论如何,OpenGL 本身不会做任何“显示三角形”的事情;其他一切都必须在其他地方完成。

编辑

抱歉耽搁了,我完全忘记了。

所以这是我的建议:

  • 在 Blender 中使用多边形建模您的机器人。您可以轻松地使用 >10k 多边形,但尽量保持对象数量较少(每个移动部件 1 个对象)
  • 装配它,即为它创建一个骨架。您不需要对其进行动画处理。
  • 导出为 Collada 或 X3D
  • 在您自己的 OpenGL 应用程序中,重新导入
  • 在骨架指定的位置和方向上绘制对象
  • 修改骨骼之间的角度,就像使用真正的步进电机一样
  • 如果步骤 #5 正确完成,机器人应该跟随动作
  • 可选地添加物理(例如使用 Bullet )。该 API 在概念上与 OpenGL 相似,您将能够用机械臂捕捉物体。

祝你好运 !

于 2011-04-01T10:22:04.967 回答