我的环境是Ubuntu24.04的ros2的jazzy版本
我在按照moveit2给的教程一步一步运行时,在示例中的与新机器人集成的moveit设置助手中,设置robot pose时闪退,请问有没有大佬知道是什么原因?
我搜了一下说是moveit_setup_assistant 程序崩溃了,崩溃原因是 moveit::core::RobotState::getCollisionBodyTransform 函数里的断言 checkCollisionTransforms() 失败,请教一下有没有什么解决办法?
moveit.core.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[moveit_setup_assistant-1] Error: Virtual joint does not attach to a link on the robot (link '' is not known)
[moveit_setup_assistant-1] at line 104 in ./src/model.cpp
[moveit_setup_assistant-1] [INFO] [1746411226.290223960] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [INFO] [1746411226.290290451] [moveit_3648284124.moveit.core.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[moveit_setup_assistant-1] [INFO] [1746411226.301623446] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [INFO] [1746411226.315506811] [moveit_3648284124.moveit.ros.rdf_loader]: Loaded robot model in 0.00213362 seconds
[moveit_setup_assistant-1] [INFO] [1746411226.315543618] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [INFO] [1746411226.315557866] [moveit_3648284124.moveit.core.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[moveit_setup_assistant-1] Warning: Group 'panda_arm' is empty.
[moveit_setup_assistant-1] at line 262 in ./src/model.cpp
[moveit_setup_assistant-1] [INFO] [1746411240.082504367] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [WARN] [1746411240.093801741] [moveit_3648284124.moveit.core.robot_model]: Group 'panda_arm' must have at least one valid joint
[moveit_setup_assistant-1] [WARN] [1746411240.093825487] [moveit_3648284124.moveit.core.robot_model]: Failed to add group 'panda_arm'
[moveit_setup_assistant-1] [INFO] [1746411248.739835954] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] Warning: Group 'hand' is empty.
[moveit_setup_assistant-1] at line 262 in ./src/model.cpp
[moveit_setup_assistant-1] [INFO] [1746411253.859376020] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [WARN] [1746411253.870377748] [moveit_3648284124.moveit.core.robot_model]: Group 'hand' must have at least one valid joint
[moveit_setup_assistant-1] [WARN] [1746411253.870402681] [moveit_3648284124.moveit.core.robot_model]: Failed to add group 'hand'
[moveit_setup_assistant-1] [INFO] [1746411256.657937157] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [INFO] [1746411360.736098454] [moveit_3648284124.moveit.core.robot_model]: Loading robot model 'panda'...
[moveit_setup_assistant-1] [WARN] [1746411373.492043737] [moveit_3648284124.moveit.core.robot_state]: Returning dirty collision body transforms
[moveit_setup_assistant-1] moveit_setup_assistant: /home/ls/ws_moveit/src/moveit2/moveit_core/robot_state/include/moveit/robot_state/robot_state.hpp:1305: const Isometry3d& moveit::core::RobotState::getCollisionBodyTransform(const moveit::core::LinkModel*, std::size_t) const: 断言 "checkCollisionTransforms()" 失败。
[moveit_setup_assistant-1] Stack trace (most recent call last):
[moveit_setup_assistant-1] #31 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.13", at 0x77b2f3ad8117, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
[moveit_setup_assistant-1] #30 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f476bd44, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
[moveit_setup_assistant-1] #29 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f47cdfbe, in
[moveit_setup_assistant-1] #28 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f47caa38, in
[moveit_setup_assistant-1] #27 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f4772873, in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool)
[moveit_setup_assistant-1] #26 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.13", at 0x77b2f3ad8117, in QCoreApplication::notifyInternal2(QObject*, QEvent*)
[moveit_setup_assistant-1] #25 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f47746af, in QApplication::notify(QObject*, QEvent*)
[moveit_setup_assistant-1] #24 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f476bd44, in QApplicationPrivate::notify_helper(QObject*, QEvent*)
[moveit_setup_assistant-1] #23 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f47b0df7, in QWidget::event(QEvent*)
[moveit_setup_assistant-1] #22 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f492071a, in QSlider::mouseMoveEvent(QMouseEvent*)
[moveit_setup_assistant-1] #21 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f486b8e2, in QAbstractSlider::setValue(int)
[moveit_setup_assistant-1] #20 Object "/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5.15.13", at 0x77b2f486b0ef, in QAbstractSlider::valueChanged(int)
[moveit_setup_assistant-1] #19 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.13", at 0x77b2f3b12dbe, in
[moveit_setup_assistant-1] #18 Source "/home/ls/ws_moveit/build/moveit_setup_srdf_plugins/include/moveit_setup_srdf_plugins/moc_robot_poses_widget.cpp", line 247, in qt_static_metacall [0x77b2c2d8e818]
[moveit_setup_assistant-1] 244: (void)t;
[moveit_setup_assistant-1] 245: switch (id) {
[moveit_setup_assistant-1] 246: case 0: t->jointValueChanged((reinterpret_cast< const std::string()>(a[1])),(reinterpret_cast< double()>(a[2]))); break;
[moveit_setup_assistant-1] > 247: case 1: t->changeJointValue((reinterpret_cast< int()>(a[1]))); break;
[moveit_setup_assistant-1] 248: case 2: t->changeJointSlider(); break;
[moveit_setup_assistant-1] 249: default: ;
[moveit_setup_assistant-1] 250: }
[moveit_setup_assistant-1] #17 Source "/home/ls/ws_moveit/src/moveit2/moveit_setup_assistant/moveit_setup_srdf_plugins/src/robot_poses_widget.cpp", line 790, in changeJointValue [0x77b2c2d7ed87]
[moveit_setup_assistant-1] 787: joint_value->setText(QString("%1").arg(double_value, 0, 'f', 4));
[moveit_setup_assistant-1] 788:
[moveit_setup_assistant-1] 789: // Send event to parent widget
[moveit_setup_assistant-1] > 790: Q_EMIT jointValueChanged(joint_model->getName(), double_value);
[moveit_setup_assistant-1] 791: }
[moveit_setup_assistant-1] 792:
[moveit_setup_assistant-1] 793: // ******************************************************************************************
[moveit_setup_assistant-1] #16 Source "/home/ls/ws_moveit/build/moveit_setup_srdf_plugins/include/moveit_setup_srdf_plugins/moc_robot_poses_widget.cpp", line 318, in jointValueChanged [0x77b2c2d8eaa8]
[moveit_setup_assistant-1] 315: void moveit_setup::srdf_setup::SliderWidget::jointValueChanged(const std::string & t1, double t2)
[moveit_setup_assistant-1] 316: {
[moveit_setup_assistant-1] 317: void _a[] = { nullptr, const_cast<void>(reinterpret_cast<const void*>(std::addressof(t1))), const_cast<void*>(reinterpret_cast<const void*>(std::addressof(t2))) };
[moveit_setup_assistant-1] > 318: QMetaObject::activate(this, &staticMetaObject, 0, a);
[moveit_setup_assistant-1] 319: }
[moveit_setup_assistant-1] 320: QT_WARNING_POP
[moveit_setup_assistant-1] 321: QT_END_MOC_NAMESPACE
[moveit_setup_assistant-1] #15 Object "/usr/lib/x86_64-linux-gnu/libQt5Core.so.5.15.13", at 0x77b2f3b12dbe, in
[moveit_setup_assistant-1] #14 Source "/home/ls/ws_moveit/build/moveit_setup_srdf_plugins/include/moveit_setup_srdf_plugins/moc_robot_poses_widget.cpp", line 127, in qt_static_metacall [0x77b2c2d8e5f3]
[moveit_setup_assistant-1] 124: case 7: t->loadJointSliders((reinterpret_cast< const QString()>(a[1]))); break;
[moveit_setup_assistant-1] 125: case 8: t->showDefaultPose(); break;
[moveit_setup_assistant-1] 126: case 9: t->playPoses(); break;
[moveit_setup_assistant-1] > 127: case 10: t->updateRobotModel((reinterpret_cast< const std::string()>(a[1])),(reinterpret_cast< double()>(a[2]))); break;
[moveit_setup_assistant-1] 128: default: ;
[moveit_setup_assistant-1] 129: }
[moveit_setup_assistant-1] 130: } else if (c == QMetaObject::RegisterMethodArgumentMetaType) {
[moveit_setup_assistant-1] #13 Source "/home/ls/ws_moveit/src/moveit2/moveit_setup_assistant/moveit_setup_srdf_plugins/src/robot_poses_widget.cpp", line 687, in updateRobotModel [0x77b2c2d7e3bd]
[moveit_setup_assistant-1] 684: robot_state.setVariablePosition(name, value);
[moveit_setup_assistant-1] 685:
[moveit_setup_assistant-1] 686: // Update the robot model/rviz
[moveit_setup_assistant-1] > 687: updateStateAndCollision(robot_state);
[moveit_setup_assistant-1] 688: }
[moveit_setup_assistant-1] 689:
[moveit_setup_assistant-1] 690: void RobotPosesWidget::updateStateAndCollision(const moveit::core::RobotState& robot_state)
[moveit_setup_assistant-1] #12 Source "/home/ls/ws_moveit/src/moveit2/moveit_setup_assistant/moveit_setup_srdf_plugins/src/robot_poses_widget.cpp", line 696, in updateStateAndCollision [0x77b2c2d7e418]
[moveit_setup_assistant-1] 694: // if in collision, show warning
[moveit_setup_assistant-1] 695: // if no collision, hide warning
[moveit_setup_assistant-1] > 696: collision_warning->setHidden(!setup_step.checkSelfCollision(robot_state));
[moveit_setup_assistant-1] 697: }
[moveit_setup_assistant-1] 698:
[moveit_setup_assistant-1] 699: // ******************************************************************************************
[moveit_setup_assistant-1] #11 Source "/home/ls/ws_moveit/src/moveit2/moveit_setup_assistant/moveit_setup_srdf_plugins/src/robot_poses.cpp", line 115, in checkSelfCollision [0x77b2c2d4c57a]
[moveit_setup_assistant-1] 112: {
[moveit_setup_assistant-1] 113: // Decide if current state is in collision
[moveit_setup_assistant-1] 114: collision_detection::CollisionResult result;
[moveit_setup_assistant-1] > 115: srdf_config->getPlanningScene()->checkSelfCollision(request, result, robot_state, allowed_collision_matrix);
[moveit_setup_assistant-1] 116: return !result.contacts.empty();
[moveit_setup_assistant-1] 117: }
[moveit_setup_assistant-1] #10 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/planning_scene/src/planning_scene.cpp", line 559, in checkSelfCollision [0x77b2f25f7cf5]
[moveit_setup_assistant-1] 556: const collision_detection::AllowedCollisionMatrix& acm) const
[moveit_setup_assistant-1] 557: {
[moveit_setup_assistant-1] 558: req.pad_self_collisions ? getCollisionEnv()->checkSelfCollision(req, res, robot_state, acm) :
[moveit_setup_assistant-1] > 559: getCollisionEnvUnpadded()->checkSelfCollision(req, res, robot_state, acm);
[moveit_setup_assistant-1] 560: }
[moveit_setup_assistant-1] 561:
[moveit_setup_assistant-1] 562: void PlanningScene::getCollidingPairs(collision_detection::CollisionResult::ContactMap& contacts)
[moveit_setup_assistant-1] #9 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp", line 271, in checkSelfCollision [0x77b2eefc45b6]
[moveit_setup_assistant-1] 268: void CollisionEnvFCL::checkSelfCollision(const CollisionRequest& req, CollisionResult& res,
[moveit_setup_assistant-1] 269: const moveit::core::RobotState& state, const AllowedCollisionMatrix& acm) const
[moveit_setup_assistant-1] 270: {
[moveit_setup_assistant-1] > 271: checkSelfCollisionHelper(req, res, state, &acm);
[moveit_setup_assistant-1] 272: }
[moveit_setup_assistant-1] 273:
[moveit_setup_assistant-1] 274: void CollisionEnvFCL::checkSelfCollisionHelper(const CollisionRequest& req, CollisionResult& res,
[moveit_setup_assistant-1] #8 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp", line 279, in checkSelfCollisionHelper [0x77b2eefc462a]
[moveit_setup_assistant-1] 276: const AllowedCollisionMatrix* acm) const
[moveit_setup_assistant-1] 277: {
[moveit_setup_assistant-1] 278: FCLManager manager;
[moveit_setup_assistant-1] > 279: allocSelfCollisionBroadPhase(state, manager);
[moveit_setup_assistant-1] 280: CollisionData cd(&req, &res, acm);
[moveit_setup_assistant-1] 281: cd.enableGroup(getRobotModel());
[moveit_setup_assistant-1] 282: manager.manager->collide(&cd, &collisionCallback);
[moveit_setup_assistant-1] #7 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp", line 258, in allocSelfCollisionBroadPhase [0x77b2eefc44df]
[moveit_setup_assistant-1] 255: {
[moveit_setup_assistant-1] 256: manager.manager = std::make_uniquefcl::DynamicAABBTreeCollisionManagerd();
[moveit_setup_assistant-1] 257:
[moveit_setup_assistant-1] > 258: constructFCLObjectRobot(state, manager.object);
[moveit_setup_assistant-1] 259: manager.object.registerTo(manager.manager.get());
[moveit_setup_assistant-1] 260: }
[moveit_setup_assistant-1] #6 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/collision_detection_fcl/src/collision_env_fcl.cpp", line 221, in constructFCLObjectRobot [0x77b2eefc407e]
[moveit_setup_assistant-1] 218: {
[moveit_setup_assistant-1] 219: if (robot_geoms[i] && robot_geoms[i]->collision_geometry)
[moveit_setup_assistant-1] 220: {
[moveit_setup_assistant-1] > 221: transform2fcl(state.getCollisionBodyTransform(robot_geoms[i]->collision_geometry_data->ptr.link,
[moveit_setup_assistant-1] 222: robot_geoms[i]->collision_geometry_data->shape_index),
[moveit_setup_assistant-1] 223: fcl_tf);
[moveit_setup_assistant-1] 224: auto coll_obj = new fcl::CollisionObjectd(*robot_fcl_objs[i]);
[moveit_setup_assistant-1] #5 Source "/home/ls/ws_moveit/src/moveit2/moveit_core/robot_state/include/moveit/robot_state/robot_state.hpp", line 1305, in getCollisionBodyTransform [0x77b2eefc8772]
[moveit_setup_assistant-1] 1303: const Eigen::Isometry3d& getCollisionBodyTransform(const LinkModel* link, std::size_t index) const
[moveit_setup_assistant-1] 1304: {
[moveit_setup_assistant-1] >1305: assert(checkCollisionTransforms());
[moveit_setup_assistant-1] 1306: return global_collision_body_transforms[link->getFirstCollisionBodyTransformIndex() + index];
[moveit_setup_assistant-1] 1307: }
[moveit_setup_assistant-1] #4 Source "./assert/assert.c", line 105, in __assert_fail [0x77b2f303b516]
[moveit_setup_assistant-1] #3 Source "./assert/assert.c", line 96, in __assert_fail_base [0x77b2f302881a]
[moveit_setup_assistant-1] #2 Source "./stdlib/abort.c", line 79, in abort [0x77b2f30288fe]
[moveit_setup_assistant-1] #1 Source "../sysdeps/posix/raise.c", line 26, in raise [0x77b2f304527d]
[moveit_setup_assistant-1] #0 | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal
[moveit_setup_assistant-1] | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation
[moveit_setup_assistant-1] Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x77b2f309eb2c]
[moveit_setup_assistant-1] 已中止 (tkill() 发送的信号 6482 1000)
[ERROR] [moveit_setup_assistant-1]: process has died [pid 6482, exit code -6, cmd '/home/ls/ws_moveit/install/moveit_setup_assistant/lib/moveit_setup_assistant/moveit_setup_assistant --ros-args'].