You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用ComputeSignedDistancePairwiseClosestPoints时段错误的调试求助

调试指导请求:ComputeSignedDistancePairwiseClosestPoints长期运行后段错误

在反复调用ComputeSignedDistancePairwiseClosestPoints的优化循环中,累计运行数百小时无异常后出现段错误,现寻求调试指导;若确认是Drake的bug,也希望得到临时解决方案。

初始化时已存储diagram、plant和scene graph上下文,调用ComputeSignedDistancePairwiseClosestPoints前,会在存储的scene graph上下文上计算查询对象输出端口,相关代码结构如下:

class SimplifiedClass:

    def __init__(self, ...):
        # 初始化plant、上下文和查询对象端口
        self.diagram = function_generating_diagram_with_plant(...)
        self.plant = self.diagram.GetSubsystemByName("plant")
        self.scene_graph = self.diagram.GetSubsystemByName("scene_graph")

        _diag_context = self.diagram.CreateDefaultContext()
        self.plant_context = self.plant.GetMyMutableContextFromRoot(_diag_context)
        self.sg_context = self.scene_graph.GetMyMutableContextFromRoot(_diag_context)

        self.qo_port = self.scene_graph.get_query_output_port()

    @property
    def query_object(self):
        return self.qo_port.Eval(self.sg_context)

    def function_that_computes_signed_distances(self, ...):
        # 此函数调用ComputeSignedDistancePairClosestPoints()
        # 在优化循环中被反复调用
        
        # 执行其他操作后计算有符号距离对的代码行
        sdps = self.query_object.ComputeSignedDistancePairwiseClosestPoints(
            max_distance=some_number
        )

可通过固定随机种子复现该段错误,且发现修改ComputeSignedDistancePairwiseClosestPoints的max_distance参数后,该特定种子下不再出现段错误。

以下是gdb回溯信息:

#0  0x00007f21a9149be5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#1  0x00007f21a914cc46 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#2  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#3  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#4  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#5  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#6  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#7  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#8  0x00007f21a914cca5 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#9  0x00007f21a914d61b in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#10 0x00007f21a914ba3a in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#11 0x00007f21a914bbdc in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#12 0x00007f21a919f324 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#13 0x00007f21a9165123 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#14 0x00007f21a918961a in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#15 0x00007f21a918d29d in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#16 0x00007f21a918fdd2 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#17 0x00007f21a92a9496 in void drake::geometry::internal::shape_distance::CalcDistanceFallback<double>(fcl::CollisionObject<double> const&, fcl::CollisionObject<double> const&, fcl::DistanceRequest<double> const&, drake::geometry::SignedDistancePair<double>*) () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#18 0x00007f21a92a9aa5 in bool drake::geometry::internal::shape_distance::Callback<double>(fcl::CollisionObject<double>*, fcl::CollisionObject<double>*, void*, double&) ()
   from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#19 0x00007f21a91e98ca in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#20 0x00007f21a91e99b2 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#21 0x00007f21a91e998b in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#22 0x00007f21a91e998b in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#23 0x00007f21a91e998b in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#24 0x00007f21a91e99b2 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#25 0x00007f21a91e99b2 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#26 0x00007f21a91e998b in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#27 0x00007f21a91e9a26 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#28 0x00007f21a933a01e in drake::geometry::internal::ProximityEngine<double>::ComputeSignedDistancePairwiseClosestPoints(std::unordered_map<drake::geometry::GeometryId, drake::math::RigidTransform<double>, std::hash<drake::geometry::GeometryId>, std::equal_to<drake::geometry::GeometryId>, std::allocator<std::pair<drake::geometry::GeometryId const, drake::math::RigidTransform<double> > > > const&, double) const ()
   from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#29 0x00007f21a93ab1fc in drake::geometry::QueryObject<double>::ComputeSignedDistancePairwiseClosestPoints(double) const () from /opt/drake/lib/python3.10/site-packages/pydrake/common/../../../../libdrake.so
#30 0x00007f20bf6f2327 in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/geometry.cpython-310-x86_64-linux-gnu.so
#31 0x00007f20bf547c4f in ?? () from /opt/drake/lib/python3.10/site-packages/pydrake/geometry.cpython-310-x86_64-linux-gnu.so
#32 0x00005604e39c1b5e in ?? ()
#33 0x00005604e39b87db in _PyObject_MakeTpCall ()
#34 0x00005604e39d066b in ?? ()
#35 0x00005604e39ac2fc in _PyEval_EvalFrameDefault ()
#36 0x00005604e39c23ac in _PyFunction_Vectorcall ()
#37 0x00005604e39ab14a in _PyEval_EvalFrameDefault ()
#38 0x00005604e39d0391 in ?? ()
#39 0x00005604e39ac2fc in _PyEval_EvalFrameDefault ()
#40 0x00005604e39c23ac in _PyFunction_Vectorcall ()
#41 0x00005604e39ab14a in _PyEval_EvalFrameDefault ()
#42 0x00005604e39c23ac in _PyFunction_Vectorcall ()
... (more in this trace omitted since it's not Drake-specific)

内容的提问来源于stack exchange,提问作者robodobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:30:58