繁体   English   中英

如何在pydrake中使用minDistanceConstraint

How to use minDistanceConstraint in pydrake

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在这种回购 ,@Gizatt使用下列命令来组装碰撞约束库卡iiwa:
ik.MinDistanceConstraint(tree,crash_tol,list(),set())

在这里,list()和set()表示什么。 两者似乎在这里都是空的。

假设我在RigidBodyTree中有一个项目(项目1)由6个实体(在一个urdf内)和另一个对象(项目2)组成,由一个主体(在一个urdf中)组成,我只想检查碰撞在组成项目1和项目2的6个实体中的任何一个之间。是否可以设置此功能,以便它不检查项目1中所有实体内的碰撞,而仅检查项目1和项目2之间的碰撞。 ?

最后,当我使用此函数时,当前出现以下错误:[2018-11-14 19:39:20.812] [控制台] [警告]试图计算两个碰撞元素之间的距离,其中至少一个是非凸的。 我接受了@gizatt的建议,并使用meshlab将项目1中每个链接的网格转换为凸包,当我使用可视化工具查看每个网格时,它们对我来说都是凸的。 但是我仍然收到此错误。 还有其他原因会弹出此错误吗?

2 个回复

该方法的文档在这里: https : //drake.mit.edu/pydrake/pydrake.solvers.ik.html?highlight=mindistanceconstraint#pydrake.solvers.ik.MinDistanceConstraint

greg使用的最后两个参数是关于“活动”主体的。 如果您想完全忽略碰撞计算中的某些物体,这将为您提供帮助。

如果要忽略某些碰撞对,请使用碰撞过滤器组: https : //drake.mit.edu/pydrake/pydrake.multibody.rigid_body_tree.html?highlight= collision% 20filter#pydrake.multibody.rigid_body_tree.RigidBodyTree.DefineCollisionFilterGroup

我们的RBT / Bullet包装器假定每个网格都是凸形,但静态/锚定几何除外。 您似乎正在收到该警告,因为您正在针对静态/固定几何进行碰撞检查?

FWIW-关于multibodytree和刚性bodytree的文档要完整得多,但是对于这个特定的查询,我认为您使用RBT是正确的-multibody还不存在。

在这里,list()和set()表示什么。 两者似乎在这里都是空的。

这些参数是历史工件,几乎永远都不是您想要使用的参数。 我建议按照您提供的示例将其保留为空。 第一个将约束限制为仅考虑由active_bodies_idx指定的active_bodies_idx 第二个方法将约束限制为仅考虑名称包含在active_group_names的冲突组。 请注意,“碰撞组”的理念为active_group_names说法是一样的“碰撞过滤器组”的概念。

有没有一种方法可以设置此功能,以便它不检查项目1中所有物体之间的碰撞,而仅检查项目1和项目2之间的碰撞?

您在正确的轨道上。 您要添加一个包含项目1中所有实体的碰撞过滤器组,然后将该碰撞组设置为忽略自身。 以下代码需要PR #10085添加的AddCollisionFilterIgnoreTarget()绑定。

tree.DefineCollisionFilterGroup("1_filtergroup")

tree.AddCollisionFilterGroupMember("1_filtergroup", "base_link", 1_model_id)
# Repeat the previous line for all bodies in item 1.

tree.AddCollisionFilterIgnoreTarget("1_filtergroup", "1_filtergroup")

然后,可以通过调用ik.MinDistanceConstraint(tree, collision_tol, list(), set())创建具有所需行为的约束。

最后,当我使用此函数时,当前出现以下错误:[2018-11-14 19:39:20.812] [控制台] [警告]试图计算两个碰撞元素之间的距离,其中至少一个是非凸的。 ...还有其他原因会弹出此错误吗?

正如@Russ Tedrake提到的那样 ,无论原始网格的凸度如何,所有附加到锚定 (焊接到世界)物体的网格碰撞元素都将转换为Bullet后端中的非凸网格对象。 这是不幸的,但是很可能无法解决,因为所有与RigidBodyTree相关的代码RigidBodyTree 出于IK目的,您可以通过将网格附加到通过上下限均为0的棱​​柱形或旋转关节连接到世界的虚拟物体上来解决此问题。这将迫使后端与凸包一起使用提供网格的数量。 然后,您需要从IK返回的配置中删除与虚拟关节相对应的元素。

2 如何使用pydrake为Acrobot系统创建LinearQuadraticRegulator

我正在尝试从头开始为acrobot系统创建LQR: 运行此脚本,我在最后一个字符串处收到错误: 我修复/连接输入端口的方法都没有成功。 PS我知道存在AcrobotPlant ,但是这个想法是在运行时从sdf创建LQR。 PPS为什么acrobot.get_num_i ...

2019-03-18 14:57:55 1 41   drake
4 如何使用最新的 pydrake 绑定修复代码?

我在 github( https://github.com/maggiewu19/compass-gait-simulator ) 中找到了一个有用的演示。 但是,这些代码不适用于最新的 pydrake。 我在 google colab 中运行代码并出现错误。 任何答复将不胜感激。 ...

2020-07-16 11:08:50 1 66   drake
7 PyDrake ComputePointPairPenetration() 杀死内核

在 Jupyter Notebook 环境中从 Python 中 Drake 中的 QueryObject 调用ComputePointPairPenetration() , ComputePointPairPenetration()可靠地杀死了内核。 我不确定是什么原因造成的,也无法弄清楚如何获取 ...

2020-05-07 22:04:05 2 61   drake
8 pydrake 中的符号化简化

我正在处理一个( 系统识别类型)问题,其中我有一个非常复杂的符号表达式,我知道它在一组参数中是线性的。 我想在此表达式上使用DecomposeAffineExpressions ,但由于分母中未取消的项,Drake 无法将该表达式识别为线性。 我知道表达式确实是线性的,因为我可以转换为 sympy ...

2021-02-17 15:57:51 1 56   drake
9 在 PyDrake 中可视化 AutoDiff MultibodyPlant

我正在尝试使用基本的DrakeVisualizer在Drake 中构建一个简单的多体植物系统。 但是,对于我的用例,我还希望能够通过物理模拟自动跟踪导数,因此我使用 AutoDiffXd 版本的系统: 但是,当我运行它时,出现以下错误: 从这个错误来看,DrakeVisualizer 类似乎 ...

10 PyDrake SNOPT打印日志

如何从Jupyter笔记本中的PyDrake显示SNOPT打印文件? 本用户指南http://www.ccom.ucsd.edu/~peg/papers/sndoc7.pdf提到了“打印文件”选项,我尝试将其变为true 但这似乎没有做任何事情。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM