How to load more than one velocity controller
Hello, I'm trying to control to maxon motors with ROS using the epos_hardware package.
I can control one motor perfectly in position and velocity mode, but when I try to add the second motor ROS says that can't load the controllers.
I have modify the URDF file to add the second motor, both in velocity profile.
<?xml version="1.0"?>
<robot name="example">
<link name="link1">
<inertial>
<mass value="1"/>
<inertia ixx="1" iyy="1" izz="1" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="link2">
<inertial>
<mass value="1"/>
<inertia ixx="1" iyy="1" izz="1" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<link name="link3">
<inertial>
<mass value="1"/>
<inertia ixx="1" iyy="1" izz="1" ixy="0" ixz="0" iyz="0"/>
</inertial>
</link>
<joint name="test_joint12" type="revolute">
<parent link="link1"/>
<child link="link2"/>
</joint>
<joint name="test_joint13" type="revolute">
<parent link="link1"/>
<child link="link3"/>
</joint>
<transmission name="test_joint_trans12">
<type>transmission_interface/SimpleTransmission</type>
<joint name="test_joint12">
<hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
</joint>
<actuator name="test_joint_actuator12">
<mechanicalReduction>1000</mechanicalReduction>
</actuator>
</transmission>
<transmission name="test_joint_trans13">
<type>transmission_interface/SimpleTransmission</type>
<joint name="test_joint13">
<hardwareInterface>hardware_interface/VelocityJointInterface</hardwareInterface>
</joint>
<actuator name="test_joint_actuator13">
<mechanicalReduction>1000</mechanicalReduction>
</actuator>
</transmission>
</robot>
Then I modified the launch file to add the new controllers:
<launch>
<param name="robot_description" textfile="$(find epos_hardware)/robot/hexapodo_velocity.urdf" />
<node name="epos_hardware" pkg="epos_hardware" type="epos_hardware_node"
args="'left_drive_actuator' 'right_drive_actuator'"
output="screen">
<remap from="epos_hardware/joint_states" to="joint_states" />
<param name="controller_rate" value="10.0" type="double" />
<rosparam command="load" file="$(find epos_hardware)/config/epos_motors_2.yaml" />
<rosparam command="load" file="$(find epos_hardware)/config/drive_epos_motor.yaml" param="left_drive_actuator"/>
<rosparam command="load" file="$(find epos_hardware)/config/drive_epos_motor.yaml" param="right_drive_actuator"/>
</node>
<!-- Control en velocidad -->
<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen"
args="joint_state_controller1 velocity_controller1
joint_state_controller2 velocity_controller2"/>
<param name="velocity_controller1/type" value="velocity_controllers/JointVelocityController" />
<param name="velocity_controller1/joint" value="test_joint12" />
<param name="position_controller1/type" value="position_controllers/JointPositionController" />
<param name="position_controller1/joint" value="test_joint12" />
<param name="joint_state_controller1/type" value="joint_state_controller/JointStateController" />
<param name="joint_state_controller1/publish_rate" value="50" />
<param name="velocity_controller2/type" value="velocity_controllers/JointVelocityController" />
<param name="velocity_controller2/joint" value="test_joint13" />
<param name="position_controller2/type" value="position_controllers/JointPositionController" />
<param name="position_controller2/joint" value="test_joint13" />
<param name="joint_state_controller2/type" value="joint_state_controller/JointStateController" />
<param name="joint_state_controller2/publish_rate" value="50" />
</launch>
But when I try to launch all I have the next errors:
[INFO] [1511521448.356223]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1511521448.356943]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1511521448.357662]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1511521448.358318]: Loading controller: joint_state_controller1
[ERROR] [1511521448.375306690]: This controller requires a hardware interface of type 'hardware_interface::JointStateInterface'. Make sure this is registered in the hardware_interface::RobotHW class.
[ERROR] [1511521448.375330763]: Initializing controller 'joint_state_controller1' failed
[ERROR] [1511521449.376551]: Failed to load joint_state_controller1
[INFO] [1511521449.376766]: Loading controller: velocity_controller1
[ERROR] [1511521449.394309423]: This controller requires a hardware interface of type 'hardware_interface::VelocityJointInterface'. Make sure this is registered in the hardware_interface::RobotHW class.
[ERROR] [1511521449.394331366]: Initializing controller 'velocity_controller1' failed
[ERROR] [1511521450.395534]: Failed to load velocity_controller1
[INFO] [1511521450.395711]: Loading controller: joint_state_controller2
[ERROR] [1511521450.397309431]: This controller requires a hardware interface of type 'hardware_interface::JointStateInterface'. Make sure this is registered in the hardware_interface::RobotHW class.
[ERROR] [1511521450.397325405]: Initializing controller 'joint_state_controller2' failed
[ERROR] [1511521451.398484]: Failed to load joint_state_controller2
[INFO] [1511521451.398691]: Loading controller: velocity_controller2
[ERROR] [1511521451.400076948]: This controller requires a hardware interface of type 'hardware_interface::VelocityJointInterface'. Make sure this is registered in the hardware_interface::RobotHW class.
[ERROR] [1511521451.400095602]: Initializing controller 'velocity_controller2' failed
[ERROR] [1511521452.401257]: Failed to load velocity_controller2
[INFO] [1511521452.401460]: Controller Spawner: Loaded controllers:
I have read ROS information about controllers, but I don't know why it fails with two controllers and not with one
Asked by jdeleon on 2017-11-24 06:18:40 UTC
Comments