move group interface connecting to robotic arm with controllers

asked 2020-01-27 04:54:29 -0600

zahid990170 gravatar image

updated 2020-01-27 07:18:06 -0600

Hi,

I am using ros-melodic, and MoveIt!. I use move_group_interface to plan a simple movement in the joint space which I can see in rviz. My goal is to send these motion plans to the real robotic arm.

I added the following file controllers.yaml in the following path

my_ws/src/ur5_moveit_path_planner/config/controllers.yaml

and its contents look like:

controller_list:
 - name: ""
   action_ns: follow_joint_trajectory
   type: FollowJointTrajectory
   default: true
   joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint

Also, I made a small modification within ur5_moveit_controller_manager.launch.xml and now it looks like

<launch>
  <!-- loads moveit_controller_manager on the parameter server which is taken as argument 
    if no argument is passed, moveit_simple_controller_manager will be set -->
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- loads ros_controllers to the param server -->
  <!--
  <rosparam file="$(find ur5_moveit_path_planner)/config/ros_controllers.yaml"/>
  -->
  <rosparam file="$(find ur5_moveit_path_planner)/config/controllers.yaml"/>
</launch>

ros_controllers.yaml as generated by MoveIt! Setup Assistant was replaced with the controllers.yaml specified above. And, to test the motion plans, I created a launch file smp_planning_execution.launch

<launch>
  <!--
  <rosparam command="load" file="$(find ur5_moveit_path_planner)/config/joint_names.yaml"/>
  -->
  <include file="$(find ur5_moveit_path_planner)/launch/planning_context.launch" >

     <arg name="load_robot_description" value="true" />

  </include>

  <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher">

    <param name="/use_gui" value="false"/>

    <rosparam param="/source_list">[/joint_states]</rosparam>

   </node>

  <include file="$(find ur5_moveit_path_planner)/launch/move_group.launch">

     <arg name="publish_monitored_planning_scene" value="true" />
      <arg name="allow_trajectory_execution" value="true" />

  </include>

   <include file="$(find ur5_moveit_path_planner)/launch/moveit_rviz.launch">

    <arg name="config" value="true"/>

   </include>

   <node name="ur5" pkg="ur5_moveit_path_planner" type="ur5" respawn="false" output="screen" args="$(arg args1)"/>

 </launch>

Coming to my questions.

when I run my program using

roslaunch ur5_moveit_path_planner smp_planning_execution.launch args1:="2"

I receive the following errors.

  1. [ERROR] Action client not connected: /follow_joint_trajectory [ERROR] [1580129893.827521393]: Unable to identify any set of controllers that can actuate the specified joints: [ elbow_joint shoulder_lift_joint shoulder_pan_joint wrist_1_joint wrist_2_joint wrist_3_joint ]

What is the source of this error. In my move_group.launch, I have already specified, fake_execution as false. I can still see the robotic arm following a trajectory within rviz. If I have the above launch files and settings, can I use the following commands to send the motion plan to the robotic arm.

roslaunch ur_modern_driver ur5_ros_control.launch  robot_ip:=[MY IP]
roslaunch ur5_moveit_path_planner smp_planning_execution.launch args1:="2"

thanks,

edit retag flag offensive close merge delete