moveitcpp 没办法执行的问题

moveit_cpp::PlanningComponent 默认只做规划,不执行轨迹 ------ 因为它没有对接控制器 。要让机械臂真的动起来 ,必须使用 TrajectoryExecutionComponent 轨迹执行组件。

我会给你最简可运行修复版代码 + 原理一句话说明。


🔥 核心问题(一句话)

planning_components->execute() 不是执行到真实机械臂 / 控制器,它只是在内部模拟播放,不会发指令给硬件。

真正执行必须用:

cpp

运行

复制代码
moveit_cpp::TrajectoryExecutionComponent execution_component(PLANNING_GROUP, moveit_cpp_ptr);
execution_component.execute(plan_solution.trajectory);

✅ 修复后完整可执行代码(关键部分)

我只改执行部分,其他不变,你直接替换即可。

1. 增加头文件

cpp

运行

复制代码
#include <moveit/moveit_cpp/trajectory_execution_component.h>  // <-- 加这个

2. 声明执行器(在 planning_components 下面加)

cpp

运行

复制代码
auto planning_components = std::make_shared<moveit_cpp::PlanningComponent>(PLANNING_GROUP, moveit_cpp_ptr);
auto execution_components = std::make_shared<moveit_cpp::TrajectoryExecutionComponent>(PLANNING_GROUP, moveit_cpp_ptr); // <-- 加这行

3. 把所有

cpp

运行

复制代码
planning_components->execute();

替换成:

cpp

运行

复制代码
if (!execution_components->execute(plan_solution1.trajectory))
{
  RCLCPP_ERROR(LOGGER, "Execution failed!");
}

✔ 示例(Plan #1 修复后)

cpp

运行

复制代码
if (plan_solution1)
{
  visual_tools.publishAxisLabeled(robot_start_state->getGlobalLinkTransform("panda_link8"), "start_pose");
  visual_tools.publishAxisLabeled(target_pose1.pose, "target_pose");
  visual_tools.publishText(text_pose, "setStartStateToCurrentState", rvt::WHITE, rvt::XLARGE);
  visual_tools.publishTrajectoryLine(plan_solution1.trajectory, joint_model_group_ptr);
  visual_tools.trigger();

  // ---------------- 真正执行 ----------------
  execution_components->execute(plan_solution1.trajectory);
}

所有 5 个 plan 都这样改,机械臂就会真的动了。


🧠 为什么 moveit_cpp 要分两个组件?

  • PlanningComponent :只负责算路径
  • TrajectoryExecutionComponent :负责把路径发给控制器

MoveItCpp 架构就是这样设计的:规划 / 执行分离。


🚀 最快可运行修复总结

  1. 加头文件: cpp

    运行

    复制代码
    #include <moveit/moveit_cpp/trajectory_execution_component.h>
  2. 创建执行器: cpp

    运行

    复制代码
    auto execution_components = std::make_shared<moveit_cpp::TrajectoryExecutionComponent>(PLANNING_GROUP, moveit_cpp_ptr);
  3. 执行轨迹: cpp

    运行

    复制代码
    execution_components->execute(plan_solution1.trajectory);

相关推荐
wangfpp1 小时前
本地大模型微调与 GGUF 部署全指南
人工智能·agent
Smoothcloud润云1 小时前
GPU算力平台跑知识库问答,模型回答总跑偏?先排查检索链路
人工智能·python·深度学习·gpu算力·gpu
mklpo1471 小时前
python3:如何按照实际执行需求导入模块,而不是启动时统一导入?(Python3.15)。2026-10-20
开发语言·人工智能·python
甲维斯1 小时前
国产Flash大乱斗!结果很意外
人工智能
Elaine10121 小时前
AI智能化项目管理(三):AI如何辅助项目文档检查?从交付物质量到流程附件审核
人工智能·ai·项目管理·项目管理工具
CServer_011 小时前
源码交付!AI+重型装备制造企业数智化平台
人工智能·物联网·制造
财迅通Ai2 小时前
中国工业具身智能机器人龙头微亿智造以物理AI大脑驱动规模交付
人工智能·机器人·微亿智造
u0111026752 小时前
图片生成任务的日志记录与敏感信息取舍
前端·图像处理·算法·ai作画
FII工业富联科技服务2 小时前
AI Factory 技术架构解析:数字孪生、自动化、机器人与 AI Agent 如何协同?
人工智能·架构·自动化
跨境数据猎手2 小时前
跨境电商和跨境独立站的最新业务模式
大数据·人工智能·物联网