最好的3D库以建模机器人运动

3
不久前,我曾征求有关选择适用于Python的3D图形库以进行机器人运动建模(使用Python中的反向运动学)的建议。经过一些研究和重新定义我的目标后,我希望再次寻求一些帮助。
当时我认为Blender是最好的选择,但现在我开始怀疑了。我有一个关键目标,那就是能够将模型集成到自定义GUI(wxPython)中。看起来这可能相当困难(而且我对性能要求不确定)。
我现在认为更倾向于OpenGL(PyOpenGL + wxglcanvas),但我仍然在努力确定它是否是完成任务的合适工具。我更像是一个CAD人员,所以我很难想象如何在API中绘制复杂的对象并创建运动。我读到可以在Blender中设计对象,然后以某种方式将其导入到OpenGL中,但我不确定这个过程是什么?操作物体的运动有多难?例如,如果我在两个链接之间创建一个关节,并移动一个链接,另一个链接会根据第一个链接动态移动,还是需要分别编程每个链接的运动?
我错过了任何明显的工具吗?我不是在寻找完整的机器人建模软件包,我想从头开始,以便将其纳入到自己的程序中。主要是为了学习。到目前为止,我已经研究了vPython、Pyglet、Panda3D、Ogre和几个专业CAD软件包。
谢谢
2个回答

2

目前有一个类似的项目正在进行,它实现了matlab和python的机器人工具箱,它具有"基本的3D图形",但是你可以使用一个良好结构的脚本将其与blender进行交互,这比重新发明轮子要少些工作。


只是想提一下,你所提到的工具箱真的很混乱。大部分代码都是半移植的Matlab代码,如果不是Matlab代码本身,并且最后更新于2008年。通过一些小修复,它的某些部分可以运行,但无法可视化正在发生的事情,这可能会使故障排除/完成变得困难。 - John Lyon

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多边形,但尽量保持对象数量较少(每个移动部件一个对象)
  • 对其进行绑定,即为其创建骨架。您不需要对其进行动画处理。
  • 导出为 Collada 或 X3D
  • 在自己的 OpenGL 应用程序中重新导入
  • 按骨架指定的位置和方向绘制您的对象
  • 修改骨头之间的角度,就像操作实际步进电机一样
  • 如果第5步做得正确,机器人应该会跟随移动
  • 可选添加物理效果(例如使用 Bullet)。API 概念与 OpenGL 类似,您将能够用机械臂抓住物体。

祝好运!


就复杂度而言,我希望模拟类似于这个机械臂的东西(http://www.thinkgeek.com/images/products/zoom/b696_edge_robotic_arm_kit.jpg)。从其他使用OpenGL的人所看到的,他们倾向于绘制一个圆柱来表示连接,以及一个球体来表示关节。我只是好奇使用OpenGL建模更详细的东西会有多难,例如是否需要通过编程逐个选择坐标对,这可能非常繁琐。 - user657222

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接