jaco ros package 移植到16.04下的记录

错误一:

  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(move_group.move());

方法二:改变接口

 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

你可能感兴趣的:(ros程序记录)