Unit 7 Project: [ERROR] Known controllers and their joints| gives an empty list

When doing part one of the unit 7 project, I am able to get as far as planning in Moveit. whenever I hit execute, it fails and throws this error.


I’m not sure what I am doing wrong, I’ve followed the config creation examples from the previous units. My launch file is the same as the rbkairos_planning_execution.launch file given in unit 4, but with all the rbkairos references renamed to my config package.

Hi @BlazeCU
Hope you enjoy learning manipulation !

Apparently, the error message indicates that the controller is not loaded properly. And I can’t see anything related to controller from your launch file.
Could you please share the code snippet or configuration file related to controller, along with the result of the following command?

rosrun controller_manager controller_manager list

This command will show the list of controllers you configured.

Regards,
Sangtaek

HI Sangtaek,
Here is what you requested

“ros_controllers.yaml”{{{

moveit_sim_hw_interface:
joint_model_group: arm_group
joint_model_group_pose: home

generic_hw_control_loop:
loop_hz: 300
cycle_time_error_threshold: 0.01

hardware_interface:
joints:
- shoulder_pan_joint
- shoulder_lift_joint
- elbow_joint
- wrist_1_joint
- wrist_2_joint
- wrist_3_joint
- egh_gripper_finger_left_joint
- egh_gripper_finger_right_joint
sim_control_mode: 1 # 0: position, 1: velocity

joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50
controller_list:

  • name: arm_group_controller
    action_ns: follow_joint_trajectory
    default: True
    type: FollowJointTrajectory
    joints:
    • shoulder_pan_joint
    • shoulder_lift_joint
    • elbow_joint
    • wrist_1_joint
    • wrist_2_joint
    • wrist_3_joint
  • name: gripper_group_controller
    action_ns: follow_joint_trajectory
    default: True
    type: FollowJointTrajectory
    joints:

Hi,

In the configuration file, arm_group_controller is defined to control the joints, but it is not included in the list of controllers. Instead, arm_controller is present in the list. I assume you are loading controllers from another configuration file.

Which launch files do you run before launching MoveIt? Could you share those launch files, or provide a link to your Rosject?

The only launch file I run is the one shared in my first post. Where in the UI would I find a link to the project holding my code for the ROS Manipulation In 5 Days course?

Unfortunately, I don’t have access to the course at the moment.
Could you try after changing your controller name in ros_controller.yaml as follow?

arm_group_controllerarm_controller
gripper_group_controllergripper_controller

1 Like

Greetings,
Your MoveIt Motion Planner might be expecting Joint Trajectory Controller, which is not included in your Config file. You can include it, like following example

gp7_robot:
 joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50
 arm_joint_controller:
  type: "position_controllers/JointTrajectoryController"
  joints:
   - joint_1_s
   - joint_2_l
   - joint_3_u
  gains:
   joint_1_s: {p: 1000.0, i: 0.0, d: 0.1}
   joint_2_l: {p: 1000.0, i: 0.0, d: 0.1}
   joint_3_u: {p: 1000.0, i: 0.0, d: 0.1}

Then load this as in argument in your Launch File:

<node name="arm_joint_controller" pkg="controller_manager" type="spawner" respawn="false"
    output="screen" args="/gp7_robot/arm_joint_controller"/>

Hello there!

The controllers are already started by the course simulation, so there shouldn’t be any error there @munn33b . I’m pretty confident this error is related to what @sangteak601 is pointing out here:

1 Like

Hi @BlazeCU
In move_group.launch, by default moveit_controller_manager type is set to “simple”. We need to make it as fake.

So in your launch file, add arg like below

<include file="$(find ur3e_moveit_config)/launch/move_group.launch">
  <arg name="publish_monitered_planning_scene" value="true"/>
  <arg name="moveit_controller_manager" value="fake"/>
</include>

Also uncomment and modify the joint state publisher

  <!-- We do not have a real robot connected, so publish fake joint states via a joint_state_publisher
         MoveIt's fake controller's joint states are considered via the 'source_list' parameter -->

   <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" >
      <param name="/use_gui" value="false"/>
      <rosparam param="source_list">[move_group/fake_controller_joint_states]</rosparam>
    </node>

Hope this would solve the problem.

Regards,
Jagadeeshan S

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.