问题标签 [pybullet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - PyBullet 中的确定性OverlappingPairs 设置有什么作用?
在 PyBullet 示例中找到这一行并不罕见:
“deterministicOverlappingPairs”设置的目的是什么?我为什么要设置它?
我查看了文档,发现此设置与碰撞检测有关。但是,文档中并未解释幕后究竟发生了什么。
下面提供了一个基本脚本,它允许通过将“--dop”参数设置为 0 或 1 来调用它来测试设置。参数被传递到第 11 行的函数中:
通过使用命令行参数“--dop 0”和“--dop 1”运行此脚本,我没有注意到运行时的显着变化。
因为,我不知道确定性OverlappingPairs 应该如何影响模拟,所以我无法提供一个示例脚本,该脚本具有与确定性OverlappingPairs 相关的可测量输出。
python - 如何获得物体的线加速度和角加速度?
我知道有一些方法可以获得位置和角度,getBasePositionAndOrientation
以及线速度和角速度getBaseVelocity
。
有没有办法获得身体的加速度(+角度)?我想 pybullet 必须计算这些,但我在文档中找不到任何函数来执行它。
python - Pybullet - 不允许平行四边形关节
我有一个我导入的自定义机器人 URDF,它有平行四边形的肢体。我可以导入它的唯一方法是只在多边形上创建 4 个关节中的 3 个,并通过将所有角度设置为相同值来“强制”所有这些关节对齐。但是,机器人没有那么强壮,如果有外力,它也不会完全对齐。
我尝试使用该createConstraint
功能,但这导致我的机器人飞离屏幕......耸了耸肩
我觉得应该有一个简单的方法来做到这一点,但经过数小时的谷歌搜索后我找不到解决方案。
提前谢谢了!
javascript - 三/Ammo/enable3d js:物理体不随着网格骨骼旋转的变化而更新?
我通过以下方式加载了一个装配好的网格:
它按预期加载到场景中:
但是,当我尝试在网格上旋转单个骨骼时,网格和骨骼会按预期旋转,但物理体不会保持同步:
hand.palm.rotation.y += Math.PI / 2
有没有办法做到这一点?
文档说,对于 Kinematic body,您需要在更改旋转或位置时将 needUpdate 设置为 true。我尝试在通过 hand.Object3D.body.needUpdate = true 进行任何旋转或转换后进行设置,但这似乎也无法解决它。
我还尝试添加Object3D
到无头 GLTF 示例new ExtendedObject3D()
中的a以查看这是否会产生影响
这不起作用,而且似乎也没有必要,因为一旦hand.Object3D
添加到物理中,它似乎会自动转换为 ExtendedObject3D。
我不确定除了移除物理体然后尝试在任何转换后逐帧重新添加它之外,还能尝试什么?但是,这似乎非常低效,必须有一个已经定义的方法来做到这一点,我错过了。
我正在使用库enable3d.js,它看起来本质上是 Ammo.js 的包装库,所以我相信我的问题与 Ammo.js 的关系比 enable3d 更重要。
python - Pybullet:如何获取 getJointStates 和 setJointMotorControlArray(TORQUE_CONTROL) 之间的扭矩值关系?
在 Pybullet 仿真环境中,如何获取 getJointStates 和 setJointMotorControlArray(TORQUE_CONTROL) 之间的扭矩值关系?
使用 getJointStates 获取每个关节的扭矩值时,有一个列表,包含六个值[Fx, Fy, Fz, Mx, My, Mz]。但是,每个关节的 setJointMotorControlArray(TORQUE_CONTROL) 中只有一个扭矩值作为输入。如何通过 getJointStates 中的[Fx, Fy, Fz, Mx, My, Mz]计算 setJointMotorControlArray(TORQUE_CONTROL) 的扭矩值?
python - Python 无法加载 URDF 文件
我有以下代码:
但这给了我以下错误消息:
error: Cannot load URDF file.
这是 PyBullet 本身的示例文件之一,因此应该可以正常工作。事实上它已经奏效了,但从那以后我已经改变了我系统上的一些东西。
我怎样才能让 ik 再次工作?
(我使用的是 Windows 10、Jupyter notebook / Visual Studio 2019,两者都不工作)
python - PyBullet 无法加载 urdf 文件
当我尝试运行示例 PyBullet 文件时,如下所示,我不断收到以下错误消息:
错误显示如下:
bunnyId = p.loadSoftBody("bunny.obj")#.obj")#.vtk")
错误:无法加载柔体。
我有 Windows 10。我在笔记本(Python 3.6)上运行 PyBullet,但我在 Visual Studio(Python 3.7)上遇到了同样的错误。我能做些什么来修复它?
python - 将 STL 和 OBJ 文件转换为 PyBullet 的 URDF
我有一些 STL 和 OBJ 文件形式的 3D 模型,我想在 PyBullet 中使用它们来运行深度强化学习模拟。搜索后我找不到任何预先存在的库,而且我不熟悉任何机器人技术或设计手动转换这些文件。我在某处缺少任何非常明显的库或函数吗?
python - 如何使用 OpenCV 将 PyBullet 模拟坐标投影到渲染的帧像素坐标?
如何将 PyBullet 中的对象位置转换为像素坐标并使用 PyBullet 和 OpenCV 在框架上画一条线?
我们想这样做是因为 PyBullet 原生addUserDebugLine()
函数在 DIRECT 模式下不可用。
预期的输出将是以下帧,但原点坐标系绘制正确。例如,X、Y 和 Z 轴分别用红色、蓝色和绿色着色。
由于两个 R2D2 机器人分别位于 [1,0,0] 和 [0,1,0],我们可以看到坐标系是关闭的。(见下图)
我们尝试了以下方法:
- 转置矩阵
- 不转置矩阵
- 改变我们计算 fmat 的顺序,例如 pmat @ vmat 而不是 vmat @ pmat 等。
任何帮助表示赞赏。
python - Pybullet中的旋转矩阵是将世界坐标转换为相机还是将相机转换为世界?
我正在做一个项目,我需要将 pybullet 的渲染替换为 pytorch3d 生成的渲染。
我发现 pybullet 和 pytorch3d 对坐标系有不同的定义(请参阅这些链接:pybullet,pytorch3d; x 和 z 轴被翻转),我在我的代码中解释了这一点。但是我在渲染的对象中仍然存在不一致。我认为问题可能是,虽然 pytorch3d 需要一个 c2w 旋转矩阵(即相机到世界),但 pybullet 可能需要一个 w2c 旋转矩阵。但是,我找不到与此相关的任何文档。有没有人遇到过这个问题,或者可以就如何找出 pybullet 期望它的旋转矩阵到底是什么提供一些有用的提示?
谢谢!