错误一:
error: ‘shared_ptr’ in namespace ‘std’ does not name a template type
解决:
编译c++11的问题,在CMakeList.txt文件中,可以通过如下的语句来修改整个包编译是否支持c++11
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
错误二:
moveit接口的变化
解决:
moveit::planning_interface::MoveGroup变化成了moveit::planning_interface::MoveGroupInterface
对应的头文件也发生了修改:
moveit/move_group_interface/move_group.h变化成了moveit/move_group_interface/move_group_interface.h
错误三:
error::error: cannot convert ‘moveit::planning_interface::MoveItErrorCode’ to ‘bool’
解决:
类型问题,这个接口发生的变化,有具体两种解决方法:
方法一:强制转换
bool success = static_cast
方法二:改变接口
bool success = (group.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);
错误四(警告):
moveit显示Deprecation warning: parameter 'allowed_execution_duration_scaling' moved into namespace 'trajectory_execution'
解决:
在/home/yiqiaozhou/kinova_ws/src/kinova-ros-master/kinova_moveit/robot_configs/j2n6s300_moveit_config/launch/trajectory_execution.launch.xml中修改,将allowd_execution_duration_scaling变成trajectory_execution/allowed_execution_duration_scaling,下面参数同理
错误五:
在gripper_command_action_server.cpp与joint_trajectory_action_server.cpp中
error:SpinnerMonitor: single-threaded spinner after multi-threaded one(s).Attempt to spin a callback queue from two spinners, one of them being single-threaded.
解决:
线程问题,按照提示,将源码中的多线程
ros::AsynvSpinner spinner(1);
spinner.start();
注释掉,全程使用单一线程。
错误六:
move_group官方教程中
const robot_state::JointModelGroup* joint_model_group = move_group.getCurrentState()->getJopintModelGroup("arm");
运行报错:can not get the robot state
解决:
问题出在了使用move_group.getCurrentState因为线程等问题,无法获取,所以可以换上motion_plan的接口或者说是用robot_model与robot_state类
const std::string PLANNING_GROUP = "arm";
robot_model_loader::RobotModelLoader robot_model_loader("robot_description"); robot_model::RobotModelPtr robot_model = robot_model_loader.getModel(); /* Create a RobotState and JointModelGroup to keep track of the current robot pose and planning group*/
robot_state::RobotStatePtr robot_state(new robot_state::RobotState(robot_model));
const robot_state::JointModelGroup* joint_model_group = robot_state->getJointModelGroup(PLANNING_GROUP);
原因见https://github.com/ros-planning/moveit/issues/868