鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    运动学求解器加载失败[moveit_ros.robot_model_loader]: No kinematics plugins defined. Fill and load kinematics.yaml!

    已定时 已固定 已锁定 已移动
    ROS2机器人开发:从入门到实践
    运动学求解 moveit2
    1
    1
    93
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • W
      wwwzy
      最后由 编辑

      我是ros2 humble 安装的moveit2
      使用moveit_setup_assistant配置好的config文件夹,该做的设置都做了,demo.launch.py也能跑起来。
      在我运行一个运动规划时报错:
      [ERROR] [1755228331.551841031] [move_group_interface]: MoveGroupInterface::plan() failed or timeout reached
      [ERROR] [1755228331.552188515] [moveit_ik_demo]: Plan (pose goal) FAILED
      同时[WARN] [1755228291.666113659] [moveit_ros.robot_model_loader]: No kinematics plugins defined. Fill and load kinematics.yaml!
      很奇怪,
      demo.launch.py内容如下

      from moveit_configs_utils import MoveItConfigsBuilder
      from moveit_configs_utils.launches import generate_demo_launch
      
      
      def generate_launch_description():
          moveit_config = MoveItConfigsBuilder("zhijiao_robot", package_name="zhijiao_robot0802_moveit_config").to_moveit_configs()
          # print(moveit_config)
          return generate_demo_launch(moveit_config)
      
      

      demo.launch.py运行信息:

      root@DESKTOP-AOGOC7F:~/dev_ws/src/ros2_21_tutorials# ros2 launch zhijiao_robot0802_moveit_config demo.launch.py 
      [INFO] [launch]: All log files can be found below /home/wzy/.ros/log/2025-08-15-15-08-09-668257-DESKTOP-AOGOC7F-56360
      [INFO] [launch]: Default logging verbosity is set to INFO
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      Using load_yaml() directly is deprecated. Use xacro.load_yaml() instead.
      [INFO] [robot_state_publisher-1]: process started with pid [56375]
      [INFO] [move_group-2]: process started with pid [56377]
      [INFO] [rviz2-3]: process started with pid [56379]
      [INFO] [ros2_control_node-4]: process started with pid [56381]
      [INFO] [spawner-5]: process started with pid [56383]
      [INFO] [spawner-6]: process started with pid [56385]
      [robot_state_publisher-1] [INFO] [1755241690.281353069] [robot_state_publisher]: got segment base_link
      [robot_state_publisher-1] [INFO] [1755241690.281527387] [robot_state_publisher]: got segment gripper
      [robot_state_publisher-1] [INFO] [1755241690.281539478] [robot_state_publisher]: got segment link1
      [robot_state_publisher-1] [INFO] [1755241690.281543484] [robot_state_publisher]: got segment link2
      [robot_state_publisher-1] [INFO] [1755241690.281546746] [robot_state_publisher]: got segment link3
      [robot_state_publisher-1] [INFO] [1755241690.281549728] [robot_state_publisher]: got segment world
      [ros2_control_node-4] [WARN] [1755241690.294639111] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead.
      [ros2_control_node-4] [INFO] [1755241690.294971940] [resource_manager]: Loading hardware 'FakeSystem' 
      [ros2_control_node-4] [INFO] [1755241690.296947580] [resource_manager]: Initialize hardware 'FakeSystem' 
      [ros2_control_node-4] [INFO] [1755241690.297019335] [resource_manager]: Successful initialization of hardware 'FakeSystem'
      [ros2_control_node-4] [INFO] [1755241690.297073423] [resource_manager]: 'configure' hardware 'FakeSystem' 
      [ros2_control_node-4] [INFO] [1755241690.297080134] [resource_manager]: Successful 'configure' of hardware 'FakeSystem'
      [ros2_control_node-4] [INFO] [1755241690.297084450] [resource_manager]: 'activate' hardware 'FakeSystem' 
      [ros2_control_node-4] [INFO] [1755241690.297089252] [resource_manager]: Successful 'activate' of hardware 'FakeSystem'
      [ros2_control_node-4] [INFO] [1755241690.303197239] [controller_manager]: update rate is 1000 Hz
      [ros2_control_node-4] [INFO] [1755241690.303236810] [controller_manager]: Spawning controller_manager RT thread with scheduler priority: 50
      [ros2_control_node-4] [WARN] [1755241690.303419561] [controller_manager]: No real-time kernel detected on this system. See [https://control.ros.org/master/doc/ros2_control/controller_manager/doc/userdoc.html] for details on how to enable realtime scheduling.
      [move_group-2] [INFO] [1755241690.311139169] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.0282244 seconds
      [move_group-2] [INFO] [1755241690.311553283] [moveit_robot_model.robot_model]: Loading robot model 'zhijiao_robot'...
      [move_group-2] [INFO] [1755241690.311573804] [moveit_robot_model.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
      [rviz2-3] QStandardPaths: runtime directory '/run/user/1000/' is not owned by UID 0, but a directory permissions 0755 owned by UID 1000 GID 1000
      [move_group-2] [INFO] [1755241690.368560280] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Publishing maintained planning scene on 'monitored_planning_scene'
      [move_group-2] [INFO] [1755241690.368718765] [moveit.ros_planning_interface.moveit_cpp]: Listening to 'joint_states' for joint states
      [move_group-2] [INFO] [1755241690.369369249] [moveit_ros.current_state_monitor]: Listening to joint states on topic 'joint_states'
      [move_group-2] [INFO] [1755241690.370079608] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/attached_collision_object' for attached collision objects
      [move_group-2] [INFO] [1755241690.370111037] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting planning scene monitor
      [move_group-2] [INFO] [1755241690.370440117] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/planning_scene'
      [move_group-2] [INFO] [1755241690.370459247] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting world geometry update monitor for collision objects, attached objects, octomap updates.
      [move_group-2] [INFO] [1755241690.370769098] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to 'collision_object'
      [move_group-2] [INFO] [1755241690.371073262] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to 'planning_scene_world' for planning scene world geometry
      [move_group-2] [WARN] [1755241690.373731793] [moveit.ros.occupancy_map_monitor.middleware_handle]: Resolution not specified for Octomap. Assuming resolution = 0.1 instead
      [move_group-2] [ERROR] [1755241690.373763222] [moveit.ros.occupancy_map_monitor.middleware_handle]: No 3D sensor plugin(s) defined for octomap updates
      [move_group-2] [INFO] [1755241690.374607806] [moveit.ros_planning_interface.moveit_cpp]: Loading planning pipeline 'ompl'
      [move_group-2] [INFO] [1755241690.408689412] [moveit.ros_planning.planning_pipeline]: Using planning interface 'OMPL'
      [move_group-2] [INFO] [1755241690.418498010] [moveit_ros.add_time_optimal_parameterization]: Param 'ompl.path_tolerance' was not set. Using default value: 0.100000
      [move_group-2] [INFO] [1755241690.418534052] [moveit_ros.add_time_optimal_parameterization]: Param 'ompl.resample_dt' was not set. Using default value: 0.100000
      [move_group-2] [INFO] [1755241690.418540057] [moveit_ros.add_time_optimal_parameterization]: Param 'ompl.min_angle_change' was not set. Using default value: 0.001000
      [move_group-2] [INFO] [1755241690.418584222] [moveit_ros.fix_workspace_bounds]: Param 'ompl.default_workspace_bounds' was not set. Using default value: 10.000000
      [move_group-2] [INFO] [1755241690.418601224] [moveit_ros.fix_start_state_bounds]: Param 'ompl.start_state_max_bounds_error' was set to 0.100000
      [move_group-2] [INFO] [1755241690.418606265] [moveit_ros.fix_start_state_bounds]: Param 'ompl.start_state_max_dt' was not set. Using default value: 0.500000
      [move_group-2] [INFO] [1755241690.418617808] [moveit_ros.fix_start_state_collision]: Param 'ompl.start_state_max_dt' was not set. Using default value: 0.500000
      [move_group-2] [INFO] [1755241690.418625534] [moveit_ros.fix_start_state_collision]: Param 'ompl.jiggle_fraction' was not set. Using default value: 0.020000
      [move_group-2] [INFO] [1755241690.418645399] [moveit_ros.fix_start_state_collision]: Param 'ompl.max_sampling_attempts' was not set. Using default value: 100
      [move_group-2] [INFO] [1755241690.418658623] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Add Time Optimal Parameterization'
      [move_group-2] [INFO] [1755241690.418665235] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Resolve constraint frames to robot links'
      [move_group-2] [INFO] [1755241690.418668675] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Workspace Bounds'
      [move_group-2] [INFO] [1755241690.418672274] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State Bounds'
      [move_group-2] [INFO] [1755241690.418675456] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State In Collision'
      [move_group-2] [INFO] [1755241690.418678747] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State Path Constraints'
      [move_group-2] [INFO] [1755241690.428663890] [moveit.ros_planning_interface.moveit_cpp]: Loading planning pipeline 'pilz_industrial_motion_planner'
      [move_group-2] [INFO] [1755241690.438158376] [moveit.pilz_industrial_motion_planner.joint_limits_aggregator]: Reading limits from namespace robot_description_planning
      [move_group-2] [INFO] [1755241690.443647834] [moveit.pilz_industrial_motion_planner]: Available plugins: pilz_industrial_motion_planner/PlanningContextLoaderCIRC pilz_industrial_motion_planner/PlanningContextLoaderLIN pilz_industrial_motion_planner/PlanningContextLoaderPTP 
      [move_group-2] [INFO] [1755241690.443686819] [moveit.pilz_industrial_motion_planner]: About to load: pilz_industrial_motion_planner/PlanningContextLoaderCIRC
      [move_group-2] [INFO] [1755241690.451073455] [moveit.pilz_industrial_motion_planner]: Registered Algorithm [CIRC]
      [move_group-2] [INFO] [1755241690.451116228] [moveit.pilz_industrial_motion_planner]: About to load: pilz_industrial_motion_planner/PlanningContextLoaderLIN
      [move_group-2] [INFO] [1755241690.453484318] [moveit.pilz_industrial_motion_planner]: Registered Algorithm [LIN]
      [move_group-2] [INFO] [1755241690.453519057] [moveit.pilz_industrial_motion_planner]: About to load: pilz_industrial_motion_planner/PlanningContextLoaderPTP
      [move_group-2] [INFO] [1755241690.455588758] [moveit.pilz_industrial_motion_planner]: Registered Algorithm [PTP]
      [move_group-2] [INFO] [1755241690.455650502] [moveit.ros_planning.planning_pipeline]: Using planning interface 'Pilz Industrial Motion Planner'
      [move_group-2] [INFO] [1755241690.456677437] [moveit.ros_planning_interface.moveit_cpp]: Loading planning pipeline 'chomp'
      [ros2_control_node-4] [INFO] [1755241690.468645836] [controller_manager]: Loading controller 'joint_state_broadcaster'
      [move_group-2] [INFO] [1755241690.473649728] [moveit.ros_planning.planning_pipeline]: Using planning interface 'CHOMP'
      [move_group-2] [INFO] [1755241690.481751971] [moveit_ros.add_time_optimal_parameterization]: Param 'chomp.path_tolerance' was not set. Using default value: 0.100000
      [move_group-2] [INFO] [1755241690.481792060] [moveit_ros.add_time_optimal_parameterization]: Param 'chomp.resample_dt' was not set. Using default value: 0.100000
      [move_group-2] [INFO] [1755241690.481797836] [moveit_ros.add_time_optimal_parameterization]: Param 'chomp.min_angle_change' was not set. Using default value: 0.001000
      [move_group-2] [INFO] [1755241690.481822365] [moveit_ros.fix_workspace_bounds]: Param 'chomp.default_workspace_bounds' was not set. Using default value: 10.000000
      [move_group-2] [INFO] [1755241690.481835549] [moveit_ros.fix_start_state_bounds]: Param 'chomp.start_state_max_bounds_error' was set to 0.100000
      [move_group-2] [INFO] [1755241690.481839844] [moveit_ros.fix_start_state_bounds]: Param 'chomp.start_state_max_dt' was not set. Using default value: 0.500000
      [move_group-2] [INFO] [1755241690.481847649] [moveit_ros.fix_start_state_collision]: Param 'chomp.start_state_max_dt' was not set. Using default value: 0.500000
      [move_group-2] [INFO] [1755241690.481851586] [moveit_ros.fix_start_state_collision]: Param 'chomp.jiggle_fraction' was set to 0.050000
      [move_group-2] [INFO] [1755241690.481855832] [moveit_ros.fix_start_state_collision]: Param 'chomp.max_sampling_attempts' was not set. Using default value: 100
      [move_group-2] [INFO] [1755241690.481862692] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Add Time Optimal Parameterization'
      [move_group-2] [INFO] [1755241690.481866470] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Resolve constraint frames to robot links'
      [move_group-2] [INFO] [1755241690.481868966] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Workspace Bounds'
      [move_group-2] [INFO] [1755241690.481871392] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State Bounds'
      [move_group-2] [INFO] [1755241690.481873659] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State In Collision'
      [move_group-2] [INFO] [1755241690.481876681] [moveit.ros_planning.planning_pipeline]: Using planning request adapter 'Fix Start State Path Constraints'
      [ros2_control_node-4] [INFO] [1755241690.486809260] [controller_manager]: Loading controller 'manipulator_controller'
      [ros2_control_node-4] [WARN] [1755241690.506926912] [manipulator_controller]: [Deprecated]: "allow_nonzero_velocity_at_trajectory_end" is set to true. The default behavior will change to false.
      [spawner-6] [INFO] [1755241690.507374786] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
      [ros2_control_node-4] [INFO] [1755241690.508775132] [controller_manager]: Configuring controller 'joint_state_broadcaster'
      [ros2_control_node-4] [INFO] [1755241690.508911455] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
      [spawner-6] [INFO] [1755241690.524652598] [spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
      [spawner-5] [INFO] [1755241690.527026593] [spawner_manipulator_controller]: Loaded manipulator_controller
      [ros2_control_node-4] [INFO] [1755241690.528512523] [controller_manager]: Configuring controller 'manipulator_controller'
      [ros2_control_node-4] [INFO] [1755241690.528679032] [manipulator_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
      [ros2_control_node-4] [INFO] [1755241690.528761923] [manipulator_controller]: Command interfaces are [position velocity] and state interfaces are [position velocity].
      [ros2_control_node-4] [INFO] [1755241690.528796106] [manipulator_controller]: Using 'splines' interpolation method.
      [ros2_control_node-4] [INFO] [1755241690.529828635] [manipulator_controller]: Controller state will be published at 50.00 Hz.
      [ros2_control_node-4] [INFO] [1755241690.532093829] [manipulator_controller]: Action status changes will be monitored at 20.00 Hz.
      [move_group-2] [INFO] [1755241690.535834790] [moveit.plugins.moveit_simple_controller_manager]: Added FollowJointTrajectory controller for manipulator_controller
      [move_group-2] [INFO] [1755241690.536050315] [moveit.plugins.moveit_simple_controller_manager]: Returned 1 controllers in list
      [move_group-2] [INFO] [1755241690.536090076] [moveit.plugins.moveit_simple_controller_manager]: Returned 1 controllers in list
      [move_group-2] [INFO] [1755241690.536626986] [moveit_ros.trajectory_execution_manager]: Trajectory execution is managing controllers
      [move_group-2] [INFO] [1755241690.536644664] [move_group.move_group]: MoveGroup debug mode is ON
      [spawner-5] [INFO] [1755241690.542301507] [spawner_manipulator_controller]: Configured and activated manipulator_controller
      [move_group-2] [INFO] [1755241690.569099677] [move_group.move_group]: 
      [move_group-2] 
      [move_group-2] ********************************************************
      [move_group-2] * MoveGroup using: 
      [move_group-2] *     - ApplyPlanningSceneService
      [move_group-2] *     - ClearOctomapService
      [move_group-2] *     - CartesianPathService
      [move_group-2] *     - ExecuteTrajectoryAction
      [move_group-2] *     - GetPlanningSceneService
      [move_group-2] *     - KinematicsService
      [move_group-2] *     - MoveAction
      [move_group-2] *     - MotionPlanService
      [move_group-2] *     - QueryPlannersService
      [move_group-2] *     - StateValidationService
      [move_group-2] ********************************************************
      [move_group-2] 
      [move_group-2] [INFO] [1755241690.569172566] [moveit_move_group_capabilities_base.move_group_context]: MoveGroup context using planning plugin ompl_interface/OMPLPlanner
      [move_group-2] [INFO] [1755241690.569180659] [moveit_move_group_capabilities_base.move_group_context]: MoveGroup context initialization complete
      [move_group-2] Loading 'move_group/ApplyPlanningSceneService'...
      [move_group-2] Loading 'move_group/ClearOctomapService'...
      [move_group-2] Loading 'move_group/MoveGroupCartesianPathService'...
      [move_group-2] Loading 'move_group/MoveGroupExecuteTrajectoryAction'...
      [move_group-2] Loading 'move_group/MoveGroupGetPlanningSceneService'...
      [move_group-2] Loading 'move_group/MoveGroupKinematicsService'...
      [move_group-2] Loading 'move_group/MoveGroupMoveAction'...
      [move_group-2] Loading 'move_group/MoveGroupPlanService'...
      [move_group-2] Loading 'move_group/MoveGroupQueryPlannersService'...
      [move_group-2] Loading 'move_group/MoveGroupStateValidationService'...
      [move_group-2] 
      [move_group-2] You can start planning now!
      [move_group-2] 
      [INFO] [spawner-6]: process has finished cleanly [pid 56385]
      [INFO] [spawner-5]: process has finished cleanly [pid 56383]
      [rviz2-3] [INFO] [1755241691.973746834] [rviz2]: Stereo is NOT SUPPORTED
      [rviz2-3] [INFO] [1755241691.973846150] [rviz2]: OpenGl version: 4.2 (GLSL 4.2)
      [rviz2-3] [INFO] [1755241692.041048352] [rviz2]: Stereo is NOT SUPPORTED
      [rviz2-3] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occurred with plugin factory for class rviz_default_plugins::displays::InteractiveMarkerDisplay. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
      [rviz2-3]          at line 253 in /opt/ros/humble/include/class_loader/class_loader/class_loader_core.hpp
      [rviz2-3] [ERROR] [1755241695.253089703] [moveit_ros_visualization.motion_planning_frame]: Action server: /recognize_objects not available
      [rviz2-3] [INFO] [1755241695.278270515] [moveit_ros_visualization.motion_planning_frame]: MoveGroup namespace changed: / -> . Reloading params.
      [rviz2-3] [INFO] [1755241695.431960017] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.0707571 seconds
      [rviz2-3] [INFO] [1755241695.432019926] [moveit_robot_model.robot_model]: Loading robot model 'zhijiao_robot'...
      [rviz2-3] [INFO] [1755241695.432038295] [moveit_robot_model.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
      [rviz2-3] [INFO] [1755241695.529597457] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting planning scene monitor
      [rviz2-3] [INFO] [1755241695.530216213] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/monitored_planning_scene'
      [rviz2-3] [INFO] [1755241695.546024051] [interactive_marker_display_109107901472208]: Connected on namespace: /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic
      [rviz2-3] [INFO] [1755241695.553036098] [moveit_ros_visualization.motion_planning_frame]: group manipulator
      [rviz2-3] [INFO] [1755241695.553079000] [moveit_ros_visualization.motion_planning_frame]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''
      [rviz2-3] [INFO] [1755241695.562488219] [move_group_interface]: Ready to take commands for planning group manipulator.
      [rviz2-3] [INFO] [1755241695.563656181] [moveit_ros_visualization.motion_planning_frame]: group manipulator
      [rviz2-3] [INFO] [1755241695.583086131] [interactive_marker_display_109107901472208]: Sending request for interactive markers
      [rviz2-3] [INFO] [1755241695.606071280] [interactive_marker_display_109107901472208]: Service response received for initialization```
      运行信息看起来一切正常
      moveit_ik_demo.cpp内容如下:
      

      #include <rclcpp/rclcpp.hpp>
      #include<moveit/move_group_interface/move_group_interface.h>
      #include <geometry_msgs/msg/pose.hpp>
      #include <chrono>
      #include <thread>

      int main(int argc, char **argv)
      {
      // 初始化 ROS 2 节点
      rclcpp::init(argc, argv);
      rclcpp::NodeOptions options;
      auto node = rclcpp::Node::make_shared("moveit_ik_demo", options);

      // 创建 MoveGroup 接口
      moveit::planning_interface::MoveGroupInterface arm(node, "manipulator");
      
      // 获取终端 link 的名称
      std::string end_effector_link = arm.getEndEffectorLink();
      RCLCPP_INFO(node->get_logger(), "End effector link: %s", end_effector_link.c_str());
      
      // 设置目标位置所使用的参考坐标系
      std::string reference_frame = "base_link";
      arm.setPoseReferenceFrame(reference_frame);
      
      // 当运动规划失败后,允许重新规划
      arm.allowReplanning(true);
      
      // 设置位置(单位:米)和姿态(单位:弧度)的允许误差
      arm.setGoalPositionTolerance(0.001);
      arm.setGoalOrientationTolerance(0.01);
      
      // 设置允许的最大速度和加速度
      arm.setMaxAccelerationScalingFactor(0.2);
      arm.setMaxVelocityScalingFactor(0.2);
      
      // 控制机械臂先回到初始化位置
      arm.setNamedTarget("pose1");
      arm.move();
      std::this_thread::sleep_for(std::chrono::seconds(1));
      
      // 设置机器人终端的目标位置
      geometry_msgs::msg::Pose target_pose;
      target_pose.orientation.x = 0.70692;
      target_pose.orientation.y = 0.0;
      target_pose.orientation.z = 0.0;
      target_pose.orientation.w = 0.70729;
      
      target_pose.position.x = 0.5;
      target_pose.position.y = 0.3;
      target_pose.position.z = 0.4;
      
      // 设置机器臂当前的状态作为运动初始状态
      arm.setStartStateToCurrentState();
      
      arm.setPoseTarget(target_pose);
      
      // 进行运动规划,计算机器人移动到目标的运动轨迹,此时只是计算出轨迹,并不会控制机械臂运动
      moveit::planning_interface::MoveGroupInterface::Plan plan;
      // moveit::planning_interface::MoveItErrorCode success = arm.plan(plan);
      moveit::core::MoveItErrorCode success = arm.plan(plan);
      
      if (success)
      {
          RCLCPP_INFO(node->get_logger(), "Plan (pose goal) SUCCESS");
          arm.execute(plan);
          std::this_thread::sleep_for(std::chrono::seconds(1));
      }
      else
      {
          RCLCPP_ERROR(node->get_logger(), "Plan (pose goal) FAILED");
      }
      
      // 控制机械臂先回到初始化位置
      arm.setNamedTarget("home");
      arm.move();
      std::this_thread::sleep_for(std::chrono::seconds(1));
      
      rclcpp::shutdown();
      
      return 0;
      

      }

      运行信息如下:
      

      root@DESKTOP-AOGOC7F:~/dev_ws/src/ros2_21_tutorials# ros2 run zhijiao_robot0802_moveit_cpp_demo moveit_ik_demo
      [INFO] [1755228291.660353144] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 1.02404 seconds
      [INFO] [1755228291.660437959] [moveit_robot_model.robot_model]: Loading robot model 'zhijiao_robot'...
      [INFO] [1755228291.660458754] [moveit_robot_model.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
      [WARN] [1755228291.666113659] [moveit_ros.robot_model_loader]: No kinematics plugins defined. Fill and load kinematics.yaml!
      [INFO] [1755228291.681796533] [move_group_interface]: Ready to take commands for planning group manipulator.
      [INFO] [1755228291.681837878] [moveit_ik_demo]: End effector link: gripper
      [INFO] [1755228291.682709957] [move_group_interface]: Plan and Execute request accepted
      [INFO] [1755228324.873389855] [move_group_interface]: Plan and Execute request complete!
      [INFO] [1755228325.873665930] [move_group_interface]: MoveGroup action client/server ready
      [INFO] [1755228325.874464459] [move_group_interface]: Planning request accepted
      [INFO] [1755228331.551459726] [move_group_interface]: Planning request aborted
      [ERROR] [1755228331.551841031] [move_group_interface]: MoveGroupInterface::plan() failed or timeout reached
      [ERROR] [1755228331.552188515] [moveit_ik_demo]: Plan (pose goal) FAILED
      [INFO] [1755228331.552770564] [move_group_interface]: Plan and Execute request accepted
      [INFO] [1755228364.918952103] [move_group_interface]: Plan and Execute request complete!```
      我也怀疑过是未正确加载kinematics.yaml,于是我在demo.launch.py中加上print(moveit_config),运行信息中打印出了moveit_config信息,其中包含
      robot_description_kinematics={'robot_description_kinematics': {'manipulator': {'kinematics_solver': 'kdl_kinematics_plugin/KDLKinematicsPlugin', 'kinematics_solver_search_resolution': 0.005, 'kinematics_solver_timeout': 0.005}}},
      各位大神,有没有遇到同样问题的,怎么解决

      1 条回复 最后回复 回复 引用 0
      • 第一个帖子
        最后一个帖子
      皖ICP备16016415号-7
      Powered by NodeBB | 鱼香ROS