最好的3D库来模拟机器人运动

时间:2011-03-31 23:54:08

标签: python opengl robotics modeling

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

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

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

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

由于

2 个答案:

答案 0 :(得分:2)

有一个类似的项目正在为matlab和python实现robotic toolbox,它有“基本的3D图形”,但是你总是可以用一个编织良好的script的blender连接它,它比重新发明轮子更少的工作

答案 1 :(得分:-1)

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

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

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

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

编辑

对不起,我完全忘了。

所以这就是我的建议:

  • 使用多边形在Blender中为您的机器人建模。您可以轻松地选择> 10k多边形,但尝试保持较小的对象数(每个移动部件1个对象)
  • 装备它,即为它创建一个骨架。您无需为其设置动画。
  • 导出为Collada或X3D
  • 在您自己的OpenGL应用中,重新导入
  • 在骨架指定的位置和方向上绘制对象
  • 修改骨骼之间的角度,就像修改真正的步进电机一样
  • 如果步骤#5做得正确,机器人应该遵循动作
  • 可选择添加物理(例如使用Bullet)。 API在概念上与OpenGL类似,您将能够使用机械臂捕获对象。
祝你好运!