Error receiving joint states in moveit

asked 2019-06-17 04:43:11 -0500

sw14928 gravatar image

updated 2020-03-03 07:44:06 -0500

fvd gravatar image

I have a problem reading joint states from my robot arm in moveit. I have a robot arm that works within RVIZ, I can move the arm around and plan paths, but every time I do I receive an error:

[ERROR] [1560760011.563298414]: Unable to identify any set of controllers that can actuate the specified joints: [ joint_a1 joint_a2 joint_a3 joint_a4 joint_a5 joint_a6 ]
[ERROR] [1560760011.563447792]: Known controllers and their joints:
[ERROR] [1560760011.563601675]: Apparently trajectory initialization failed

What do I need to check and or change?

I believe this has something to do with the controller configuration. I have several launch files relating to controller manager: kr150_moveit_controller_manager.launch and kr150_moveit_controller_manager.launch.xml. What is the difference between .launch and .launch.xml? My controllers.yaml file and my joint_names.yaml look correct according to the tutorial I have been following:

http://wiki.ros.org/Industrial/Tutori...

Any help will be greatly appreciated!

EDIT:

I have spent the last few days researching this problem. I think I need to adjust the moveit_planning_execution.launch file. Currrently this reads:

<launch>

  <!-- The planning and execution components of MoveIt! configured to run -->
  <!-- using the ROS-Industrial interface. -->
  <arg name="db" default="false" />
  <!-- Allow user to specify database location -->
  <arg name="db_path" default="$(find kr150_moveit_config)/default_warehouse_mongo_db" />

  <!-- By default, we are not in debug mode -->
  <arg name="debug" default="false" />

  <!-- 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 kr150_moveit_config)/config/controllers.yaml" />
  <rosparam command="load" file="$(find kr150_moveit_config)/config/joint_names.yaml"/>
  <rosparam command="load" file="$(find kr150_moveit_config)/config/ros_controllers.yaml" />


  <arg name="use_gui" default="false" />

  <!-- 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" />
  <arg name="robot_ip" default="192.168.0.5" unless="$(arg sim)" />
  <arg name="port" default="30000" unless="$(arg sim)" />

  <!-- load the robot_description parameter before launching ROS-I nodes -->
  <include file="$(find kr150_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 kr150_moveit_config)/launch/robot_interface.launch" >
      <arg name="robot_ip" value="$(arg robot_ip)"/>
    </include>
  </group>

  <!-- load the controllers -->
  <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
    output="screen" ns="follow_joint_trajectory" args="controller joint_state_controller"/>



  <!-- We do not have a robot connected, so publish fake joint states -->
  <node name="joint_state_publisher" pkg="joint_state_publisher ...
(more)
edit retag flag offensive close merge delete

Comments

Yes, it's an issue with your controllers. Have you solved the problem? Please post a solution if so.

fvd gravatar image fvd  ( 2020-03-03 07:44:27 -0500 )edit