Ask Your Question
0

diff_drive_controller loading error

asked 2018-01-06 07:18:14 -0600

kallileo gravatar image

updated 2018-01-06 07:33:26 -0600

I'm trying to load the diff_drive_controller but for some unknown to me reason it fails.

I run Gazebo first: roslaunch ros_robotics rrbot_gazebo.launch Then I run roscontrol: roslaunch ros_robotics rrbot_control.launch

When roscontrol is loading I get the following errors in roscontrol command tab:

[ERROR] [1515242737.646534, 28.579000]: Failed to load Differential_drive_wheels_controller

Gazebo command tab:

[ INFO] [1515242404.969943388, 257.990000000]: Controller state will be published at 50Hz.
[ INFO] [1515242404.971543327, 257.990000000]: Wheel separation will be multiplied by 1.
[ INFO] [1515242404.972525734, 257.991000000]: Wheel radius will be multiplied by 1.
[ INFO] [1515242404.973434427, 257.992000000]: Velocity rolling window size of 10.
[ INFO] [1515242404.974404622, 257.993000000]: Velocity commands will be considered old if they are older than 0.5s.
[ INFO] [1515242404.975184540, 257.993000000]: Allow mutiple cmd_vel publishers is enabled
[ INFO] [1515242404.976052109, 257.994000000]: Base frame_id set to base_link
[ INFO] [1515242404.979266852, 257.995000000]: Odometry frame_id set to odom
[ INFO] [1515242404.980146401, 257.996000000]: Publishing to tf is enabled
[ERROR] [1515242404.995002625, 258.004000000]: Robot descripion couldn't be retrieved from param server.
[ERROR] [1515242404.995072493, 258.004000000]: Failed to initialize the controller
[ERROR] [1515242404.995109210, 258.004000000]: Initializing controller 'Differential_drive_wheels_controller' failed

This is how my rrobot_control.yaml file looks like:

rrbot:

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

  # Position Controllers for Robot Arm---------------------------------------
  joint_base_mid_position_controller:
    type: effort_controllers/JointPositionController
    joint: joint_base_mid
    pid: {p: 100.0, i: 0.01, d: 10.0}
  joint_mid_top_position_controller:
    type: effort_controllers/JointPositionController
    joint: joint_mid_top
    pid: {p: 100.0, i: 0.01, d: 10.0}
  left_gripper_joint_position_controller:
    type: effort_controllers/JointPositionController
    joint: left_gripper_joint
    pid: {p: 1.0, i: 0.00, d: 0.0}
  right_gripper_joint_position_controller:
    type: effort_controllers/JointPositionController
    joint: right_gripper_joint
    pid: {p: 1.0, i: 0.00, d: 0.0}
  turret_joint_position_controller:
    type: effort_controllers/JointPositionController
    joint: joint_turret
    pid: {p: 1.0, i: 0.00, d: 0.0}

  # Differential Drive Controller
  Differential_drive_wheels_controller:
  type: "diff_drive_controller/DiffDriveController"
  left_wheel: ['joint_left_front_wheel', 'joint_left_back_wheel']
  right_wheel: ['joint_right_front_wheel', 'joint_right_back_wheel']
  publish_rate: 50
  pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 0.03]
  twist_covariance_diagonal: [0.001, 0.001, 0.001, 1000000.0, 1000000.0, 0.03]
  cmd_vel_timeout: 0.25

  # Odometry fused with IMU is published by robot_localization, so
  # no need to publish a TF based on encoders alone.
  enable_odom_tf: false

  # Wheel separation and radius multipliers
  wheel_separation_multiplier: 1.5 # default: 1.0
  wheel_radius_multiplier    : 1.0 # default: 1.0

  # Velocity and acceleration limits
  # Whenever a min_* is unspecified, default to -max_*
  linear:
    x:
      has_velocity_limits    : true
      max_velocity           : 2.0   # m/s
      has_acceleration_limits: true
      max_acceleration       : 20.0   # m/s^2
  angular:
    z:
      has_velocity_limits    : true
      max_velocity           : 4.0   # rad/s
      has_acceleration_limits: true
      max_acceleration       : 25.0   # rad/s^2

*Update

I'm not sure what exactly the robot_description means but if possible please elaborate. What I have is a the following rrbot_control.launch file:

<launch>
  <!-- Load joint controller configurations from YAML file to parameter server -->
  <rosparam file="$(find ros_robotics)/config/rrbot_control.yaml" command="load"/>

  <!-- load the controllers -->
  <node name="control_spawner" pkg="controller_manager" type="spawner" respawn="false"
    output="screen" ns="/rrbot" args="joint_state_controller 
            joint_base_mid_position_controller
      joint_mid_top_position_controller
            left_gripper_joint_position_controller
            right_gripper_joint_position_controller
            turret_joint_position_controller
            Differential_drive_wheels_controller"/>

  <!-- convert joint ...
(more)
edit retag flag offensive close merge delete

Comments

Robot descripion couldn't be retrieved from param server.

do you have robot_description set, and does it contain the URDF of your robot?

gvdhoorn gravatar imagegvdhoorn ( 2018-01-06 07:19:23 -0600 )edit

I have added the content of the controllers launch file and the transmissions from the model urdf/xacro file. The Position Controllers for Robot Arm that I have on my model are working properly but the diff_driver controller doesn't.

kallileo gravatar imagekallileo ( 2018-01-06 07:35:56 -0600 )edit

How did you solve this kallileo?

JadTawil gravatar imageJadTawil ( 2018-04-27 08:59:22 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-06-09 13:46:23 -0600

R. Tellez gravatar image

Please read my answer to some similar case in question https://answers.ros.org/question/2895...

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2018-01-06 07:18:14 -0600

Seen: 735 times

Last updated: Jun 09 '18