Please set required_drive_mode(s) for controller ackermann_controller

asked 2018-04-27 18:10:57 -0600

JadTawil gravatar image

Hello,

I am getting an error trying to run the ackermann_controller from ros control, and can't seem to debug..

[ INFO] [1524868706.395007170]: Found spinning joint bl_wheel_joint with lateral deviation 0 and radius 0.02
[ INFO] [1524868706.395276706]: Found spinning joint br_wheel_joint with lateral deviation 0 and radius 0.02
[ INFO] [1524868706.395410981]: Found odometry joint bl_wheel_joint with lateral deviation 0 and radius 0.02
[ INFO] [1524868706.395618399]: Found odometry joint br_wheel_joint with lateral deviation 0 and radius 0.02
[ INFO] [1524868706.395748424]: Found odometry joint fl_rotation_joint with lateral deviation 0 and radius 0.05
[ INFO] [1524868706.395854782]: Found odometry joint fr_rotation_joint with lateral deviation 0 and radius 0.05
[ INFO] [1524868706.395981651]: Found steering joint fl_rotation_joint with lateral deviation 0
[ INFO] [1524868706.396209097]: Found steering joint fr_rotation_joint with lateral deviation 0
[ERROR] [1524868706.516831750]: Please set required_drive_mode(s) for controller ackermann_controller
[ERROR] [1524868706.516966469]: Could not switch controllers. The hardware interface combination for the requested controllers is unfeasible.

The following are the launch files i am launching:

<launch>
  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find nexus_description)/urdf/real_robot.urdf.xacro'" />
  <node name="can_driver" pkg="canopen_motor_node" type="canopen_motor_node" output="screen" clear_params="true" launch-prefix="">
     <rosparam command="load" file="$(find nexus_robot)/config/can0.yaml" />
     <rosparam command="load" file="$(find nexus_robot)/config/4wheel_ackermann_driver.yaml" />
  </node>
<?xml version="1.0"?>
<launch>

  <!-- send urdf to param server -->
  <!-- robot state publisher -->
  <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher">
      <param name="publish_frequency" type="double" value="50.0" />
      <param name="tf_prefix" type="string" value="" />
  </node>

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

  <node name="base_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn joint_state_controller fr_rotation_joint_position_controller br_wheel_joint_velocity_controller bl_wheel_joint_velocity_controller fl_rotation_joint_position_controller" respawn="false" output="screen"/>

  <node name="joint_states_relay" pkg="topic_tools" type="relay" args="joint_states /joint_states" cwd="node" respawn="true" output="screen"/>

</launch>

</launch>

And the following are the corresponing yaml files:

can0.yaml

bus:
  device: can0
sync:
  interval_ms: 10

4wheel_ackermann_driver.yaml:

name: nexus

defaults:
  eds_pkg: nexus_robot
  motor_layer:
    switching_state: 4
  #the following scaling is due to 16bit value range limitation of velocity command in vl mode (2)
  #dcf_overlay: # "ObjectID": "ParameterValue" (both as strings)
  #  "604Csub1": "1" # vl dimension factor numerator
  #  "604Csub2": "24000" # vl dimension factor denominator

nodes:
  br_wheel_joint:
    id: 6
    eds_file: "config/N5-2-2.eds"
    vel_to_device: "rint((vel))"
    vel_from_device: "(obj606C)"
  bl_wheel_joint:
    id: 8
    eds_file: "config/N5-2-2.eds"
    vel_to_device: "rint((vel))"
    vel_from_device: "(obj606C)"
  fr_rotation_joint:
    id: 3
    eds_file: "config/PD6-CB87S048030-E-09.eds"
    pos_to_device: "rint(1000*(pos))"
    pos_from_device: "(obj6064)/1000"
  br_rotation_joint:
    id: 5
    eds_file: "config/PD6-CB87S048030-E-09.eds"
    pos_to_device: "rint(1000*(pos))"
    pos_from_device: "(obj6064)/1000"
  bl_rotation_joint:
    id: 7
    eds_file: "config/PD6-CB87S048030-E-09.eds"
    pos_to_device: "rint(1000*(pos))"
    pos_from_device: "(obj6064)/1000"
  fl_rotation_joint:
    id: 1
    eds_file: "config/PD6-CB87S048030-E-09.eds"
    pos_to_device: "rint(1000*(pos))"
    pos_from_device: "(obj6064)/1000"

4wheel_canopen.launch

<?xml version="1.0"?>
<launch>

  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find nexus_description)/urdf/real_robot.urdf.xacro'" />
  <node name="can_driver" pkg="canopen_motor_node" type="canopen_motor_node" output="screen" clear_params="true" launch-prefix="">
     <rosparam command="load" file="$(find nexus_robot)/config/can0.yaml" />
     <rosparam command="load" file="$(find nexus_robot)/config/4wheel_ackermann_driver.yaml" />
  </node>

</launch>

ackermann_control ... (more)

edit retag flag offensive close merge delete