描述

在使用ROS的kinetic版本控制UR机械臂时,moveit规划成功但UR机械臂不运动的问题

失败表现

UR机械臂在Gazebo环境下,绵软无力的倒在地上,在rviz环境下一直是横着倒下的姿态,机械臂末端一直位于地面之下

成功的截图如下

在这里插入图片描述
注意到,MotionPlanning界面下的“Commands”下有四个按钮,分别是“plan”、“Execute”、“Plan and Execute”和“Stop”

下面有一个提示,截图中是“Executed”,也即是我运动成功了,可以看到我的UR机械臂已经直立了

这里没有截出失败的示意图。失败时,“Executed”的位置为“failed”。机械臂一直是倒下的状态。

问题提示

在执行命令roslaunch ur5_moveit_config moveit_rviz.launch config:=true的终端上,有如下提示

ABORTED: Solution found but controller failed during execution

意思就是说,规划成功但是控制器执行失败

这时你可以去运行命令roslaunch ur5_gazebo ur5.launch的窗口,寻找以下,会发现包含以下一个提示信息

rospy.service.ServiceException: transport error completing service call: receive_once[/controller_manager/load_controller]: DeserializationError cannot deserialize: unknown error handler name 'rosmsg

执行命令来安装rosmsg

sudo apt-get install ros-kinetic-rosmsg 

仍然不成功

最终解决办法

执行命令

rosservice call /controller_manager/list_controller_types "{}"

终端提示失败

ERROR: transport error completing service call: receive_once[/controller_manager/list_controller_types]: DeserializationError cannot deserialize: unknown error handler name 'rosmsg'

发现这个提示和gazebo中的提示是一样的。因此判断它是核心问题。

执行以下命令后,问题解决

sudo apt-get install ros-kinetic-genpy

如果这个时候你再执行命令

rosservice call /controller_manager/list_controller_types "{}"

终端会返回

types: [ackermann_steering_controller/AckermannSteeringController, controller_manager_tests/EffortTestController,
  controller_manager_tests/MyDummyController, controller_manager_tests/PosEffController,
  controller_manager_tests/PosEffOptController, controller_manager_tests/VelEffController,
  diff_drive_controller/DiffDriveController, effort_controllers/GripperActionController,
  effort_controllers/JointEffortController, effort_controllers/JointGroupEffortController,
  effort_controllers/JointGroupPositionController, effort_controllers/JointPositionController,
  effort_controllers/JointTrajectoryController, effort_controllers/JointVelocityController,
  force_torque_sensor_controller/ForceTorqueSensorController, imu_sensor_controller/ImuSensorController,
  joint_state_controller/JointStateController, pos_vel_acc_controllers/JointTrajectoryController,
  pos_vel_controllers/JointTrajectoryController, position_controllers/GripperActionController,
  position_controllers/JointGroupPositionController, position_controllers/JointPositionController,
  position_controllers/JointTrajectoryController, velocity_controllers/JointGroupVelocityController,
  velocity_controllers/JointPositionController, velocity_controllers/JointTrajectoryController,
  velocity_controllers/JointVelocityController]
base_classes: ['controller_interface::ControllerBase', 'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase',
  'controller_interface::ControllerBase', 'controller_interface::ControllerBase']