【发布时间】:2022-10-25 15:35:56
【问题描述】:
我正在尝试将模型在我的工厂中的位置设置为状态向量 q,由我的数学程序生成作为决策变量,以测试该状态是否有效(检查模型是否在有效位置距离查询)。
据我了解,这需要根据 q 的类型将植物和场景图连接到的图表转换为适当的类型(根据 q 进行自动差异或浮动,如果图表转换为自动差异,则浮动以进行距离查询) .
如果 q 是 autodiff 类型,则将图表转换为 autodiff 很好,但将其转换为浮点数(以便 query_object.ComputeSignedDistanceQuerry 工作)会产生此错误:
RuntimeError: System ::_ of type drake::systems::Diagramdrake::AutoDiffXd 不支持标量转换为 double 类型(因为 System ::_::scene_graph 类型 drake::geometry::SceneGraphdrake::AutoDiffXd 不支持标量转换为 double 类型)
那么问题是 AutoDiff 类型的场景图不能转换为浮点数。
我能想到的“最简单”的解决方案是通过强制数学程序生成的状态向量不能是 AutoDiff 类型来防止必须转换为 AutoDiff。这可能吗?
如果没有,是否还有其他方法可以避免将场景图转换为 autodiff(考虑到只有植物需要转换为 set_position)?
将提取值与决策变量矩阵的切片 (q[1, :]) 一起使用(q.dtype == AutoDiffXd 评估为真)会产生以下类型错误:
TypeError: ExtractValue(): 不兼容的函数参数。支持以下参数类型: 1. (auto_diff_matrix: numpy.ndarray[object[m, n]]) -> numpy.ndarray[numpy.float64[m, n]]
【问题讨论】:
标签: drake