ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Hey,

with the help of a friend I was able to figure out the problems.

I ended up creating an extra file for the controller: joint_state_controller.yaml

  # Publish all joint states -----------------------------------
  joint_state_controller:
      type: joint_state_controller/JointStateController
      publish_rate: 25

  # Position Controllers ---------------------------------------
  joint1_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_1
      pid: { p: 8000.0, d: 1000.0, i: 100.0, i_clamp: 0 } 

  joint2_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_2
      pid: { p: 100000.0, d: 100000.0, i: 2000, i_clamp: 0 }

  joint3_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_3
      pid: { p: 10000.0, d: 800.0, i: 500.0, i_clamp: 0 }

  joint4_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_4
      pid: { p: 18000, d: 200, i: 0.01, i_clamp: 0 }

  joint5_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_5
      pid: { p: 100, d: 0, i: 0, i_clamp: 0}

  joint6_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_6
      pid: { p: 8, d: 0, i: 0, i_clamp: 0}

I think the main difference here is that I don't have irb4600_40_255_arm_controller as a namespace in the first line of the file.

Now I call this file in my ros_controllers.launch as this:

  <rosparam file="$(find irb4600_40_255_moveit_config)/config/joint_state_controller.yaml" command="load"/>
  <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
    output="screen"
    args="joint_state_controller
          joint1_position_controller 
          joint2_position_controller
          joint3_position_controller
          joint4_position_controller
          joint5_position_controller
          joint6_position_controller "/>

I think it was somehow a problem with the namespace, so I ended up using none.

Some further tips which helped me:

  • Look in rostopics list if you controllers are publishing, to make sure they get loaded

  • Don't set you PID values too low in the new controller, as I had simply p = 100 which was not ennough to move the robot even a little bit.

Hey,

with the help of a friend I was able to figure out the problems.

I ended up creating an extra file for the controller: joint_state_controller.yaml

  # Publish all joint states -----------------------------------
  joint_state_controller:
      type: joint_state_controller/JointStateController
      publish_rate: 25

  # Position Controllers ---------------------------------------
  joint1_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_1
      pid: { p: 8000.0, d: 1000.0, i: 100.0, i_clamp: 0 } 

  joint2_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_2
      pid: { p: 100000.0, d: 100000.0, i: 2000, i_clamp: 0 }

  joint3_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_3
      pid: { p: 10000.0, d: 800.0, i: 500.0, i_clamp: 0 }

  joint4_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_4
      pid: { p: 18000, d: 200, i: 0.01, i_clamp: 0 }

  joint5_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_5
      pid: { p: 100, d: 0, i: 0, i_clamp: 0}

  joint6_position_controller:
      type: effort_controllers/JointPositionController
      joint: joint_6
      pid: { p: 8, d: 0, i: 0, i_clamp: 0}

I think the main difference here is that I don't have irb4600_40_255_arm_controller as a namespace in the first line of the file.

Now I call this file in my ros_controllers.launch as this:

  <rosparam file="$(find irb4600_40_255_moveit_config)/config/joint_state_controller.yaml" command="load"/>
  <node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
    output="screen"
    args="joint_state_controller
          joint1_position_controller 
          joint2_position_controller
          joint3_position_controller
          joint4_position_controller
          joint5_position_controller
          joint6_position_controller "/>

I think it was somehow a problem with the namespace, so I ended up using none.

Some further tips which helped me:

  • Look in rostopics list if you controllers are publishing, to make sure they get loaded

  • Don't set you PID values too low in the new controller, as I had simply p = 100 which was not ennough to move the robot even a little bit.