企业网站建设开题报告,罗田县住房和城乡建设局网站,龙岩seo推广,app网站建设软件Failed to fetch current robot state如果使用的是moveit助手生成的demo.launch文件启动机械臂的话#xff0c;应该是其他在运行的自己写的节点代码中少了spin函数#xff0c;因为getCurrentPose函数依赖于spin#xff0c;也可以使用AsyncSpinner。具体看下面这个链接https:…Failed to fetch current robot state如果使用的是moveit助手生成的demo.launch文件启动机械臂的话应该是其他在运行的自己写的节点代码中少了spin函数因为getCurrentPose函数依赖于spin也可以使用AsyncSpinner。具体看下面这个链接https://answers.ros.org/question/302283/failed-to-fetch-current-robot-state/代码执行到一半停住了有的函数依靠spin函数加上就行了。参照上一条我出于测试没写循环也没用spin函数使用moveit将机械臂移动到一个预定义姿势此行代码执行完终端就不动了既不结束程序也不继续输出信息。加上spin就行了。[startArm-5] process has died [pid 14527, exit code -6,因为想自定义函数操作机械臂而操作机械臂需要规划组MoveGroupInterface对象将对象作为参数传入函数感觉有点占用性能于是我将规划组对象移到main函数外面作为全局变量就出现了此报错。moveit::planning_interface::MoveGroupInterface arm(arm_PG); 原因实例化规划组对象需要先实例化NodeHandle对象但NodeHandle对象是在main函数内实例化。而NodeHandle需要在init函数之后定义而init函数需要传入main函数的argc和argv。这就导致不能干脆地将规划组MoveGroupInterface实例化直接移出来作为全局变量。解决办法可以定义全局规划组指针如下#include // 一堆includemoveit::planning_interface::MoveGroupInterface *arm; // 全局指针int main(int argc, char *argv[])
{ros::init(argc, argv, test_node);ros::NodeHandle nh;arm new moveit::planning_interface::MoveGroupInterface(arm_PG); // 给指针填上东西// 获取末端名称std::string endEffector_link arm-getEndEffectorLink(); // .调用需要改为-调用
}参考https://answers.ros.org/question/350643/node-crashes-with-ros-does-not-seem-to-be-running/