调用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
相关产品推荐
相关产品推荐

