Please set required_drive_mode(s) for controller ackermann_controller
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 ...