Action client not connected: manipulator_controller/follow_joint_trajectory

asked 2022-01-10 01:48:52 -0500

mduz10 gravatar image

updated 2022-01-10 02:36:41 -0500

gvdhoorn gravatar image

I'm trying to run moveit_planning_execution.launch but I have some errors. I'm using Fanuc M10ia robot and when i want to run demo.launch, i don't have any errors. What should i do to solve this problem.

My controller.yaml file:

controller_list:
  - name: manipulator_controller
    action_ns: follow_joint_trajectory
    default: true
    type: FollowJointTrajectory
    joints:
      - joint_1
      - joint_2
      - joint_3
      - joint_4
      - joint_5
      - joint_6

My fanuc_m10ia_moveit_controller_manager.launch:

<launch>
 <!-- Set the param that trajectory_execution_manager needs to find the controller plugin -->
 <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
 <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>
 <!-- load controller_list -->
 <rosparam file="$(find fanuc_m10ia_moveit_config)/config/controllers.yaml"/>
</launch>

My moveit_planning_execution.launch:

<launch>
  <!-- The planning and execution components of MoveIt! configured to run -->
  <!-- using the ROS-Industrial interface. -->

  <!-- Non-standard joint names:
       - Create a file [robot_moveit_config]/config/joint_names.yaml
           controller_joint_names: [joint_1, joint_2, ... joint_N] 
       - Update with joint names for your robot (in order expected by rbt controller)
       - and uncomment the following line: -->
  <rosparam command="load" file="$(find fanuc_m10ia_support)/config/joint_names_m10ia.yaml" />

  <!-- the "sim" argument controls whether we connect to a Simulated or Real robot -->
  <!--  - if sim=false, a robot_ip argument is required -->
  <arg name="sim" default="true" doc="Use industrial robot simulator instead of real robot" />
  <arg name="robot_ip" unless="$(arg sim)" doc="IP of controller (only required if not using industrial simulator)" />
  <arg name="use_bswap" unless="$(arg sim)" default="true" doc="If true, robot driver will byte-swap all incoming and outgoing data (only required if not using industrial simulator)" />

  <!-- By default, we do not start a database (it can be large) -->
  <arg name="db" default="false" doc="Start the MoveIt database" />
  <!-- Allow user to specify database location -->
  <arg name="db_path" default="$(find fanuc_m10ia_moveit_config)/default_warehouse_mongo_db" doc="Path to database files" />

  <!-- load the robot_description parameter before launching ROS-I nodes -->
  <include file="$(find fanuc_m10ia_moveit_config)/launch/planning_context.launch" >
    <arg name="load_robot_description" value="true" />
  </include>


  <!-- run the robot simulator and action interface nodes -->
  <group if="$(arg sim)">
    <include file="$(find industrial_robot_simulator)/launch/robot_interface_simulator.launch" />
  </group>

  <!-- run the "real robot" interface nodes -->
  <!--   - this typically includes: robot_state, motion_interface, and joint_trajectory_action nodes -->
  <!--   - replace these calls with appropriate robot-specific calls or launch files -->
  <group unless="$(arg sim)">
    <include file="$(find fanuc_m10ia_support)/launch/robot_interface_streaming_m10ia.launch" >
      <arg name="robot_ip"   value="$(arg robot_ip)"/>
      <arg name="use_bswap"  value="$(arg use_bswap)" />
    </include>
  </group>

  <!-- publish the robot state (tf transforms) -->
  <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
    <param name="/use_gui" value="false"/>
    <rosparam param="/source_list">[/joint_states]</rosparam>
  </node>
  <remap if="$(arg sim)" from="/follow_joint_trajectory" to="/manipulator_controller/follow_joint_trajectory"/>

  <include file="$(find fanuc_m10ia_moveit_config)/launch/move_group.launch">
    <arg name="publish_monitored_planning_scene" value="true" />
  </include>

  <include file="$(find fanuc_m10ia_moveit_config)/launch/moveit_rviz.launch">
    <arg name="config" value="true"/>
  </include>

  <!-- If database loading was enabled, start mongodb as well -->
  <include ...
(more)
edit retag flag offensive close merge delete

Comments

Seeing as you're using the default driver (at least I assume you do as I see fanuc_m10ia_support mentioned), it's likely the action namespace is incorrect.

You have manipulator_controller, whereas the provided MoveIt configuration packages (this one for the M-10iA) have (here):

controller_list:
  - name: ""
    action_ns: joint_trajectory_action
    type: FollowJointTrajectory
    joints: [joint_1, joint_2, joint_3, joint_4, joint_5, joint_6]

notice the empty name.

A non-empty name would also be possible, but would require changes elsewhere, which I don't believe you've made.

gvdhoorn gravatar image gvdhoorn  ( 2022-01-10 02:41:37 -0500 )edit

Firstly, thanks for your comments. However, it didn't change. still, I have these errors on Terminal.

[ WARN] [1641809002.924373861]: Waiting for /joint_trajectory_action to come up
[ERROR] [1641809008.924700533]: Action client not connected: /joint_trajectory_action
mduz10 gravatar image mduz10  ( 2022-01-10 04:06:01 -0500 )edit

You really want to describe what you've done and show what you observed in more detail.

It's really difficult (if not impossible) to help someone if they only write "it didn't work".

gvdhoorn gravatar image gvdhoorn  ( 2022-01-10 06:14:31 -0500 )edit

I'm sorry, I wrote but I guess it was not seen. Still, I have this error when I want to run moveit_planning_execution.launch:

Action client not connected: /follow_joint_trajectory.

mduz10 gravatar image mduz10  ( 2022-01-10 06:29:10 -0500 )edit