Controller_manager not found

Hi, I know that there is a lot of questions asked regarding this topic, but none of them actually solved my issue on this one, or I might have done them wrongly.

In my gurdy.urdf file, I have already added the following:

<gazebo>

        <plugin name="gazebo_ros_imu_controller" filename="libgazebo_ros_imu.so">
            <robotNamespace>/gurdy</robotNamespace>
            <topicName>imu/data</topicName>
            <serviceName>imu/service</serviceName>
            <bodyName>base_link</bodyName>
            <gaussianNoise>0</gaussianNoise>
            <rpyOffsets>0 0 0</rpyOffsets>
            <updateRate>10.0</updateRate>
            <alwaysOn>true</alwaysOn>
            <gaussianNoise>0</gaussianNoise>
        </plugin>
    </gazebo>
...
<joint name="upperlegM1_lowerlegM1_joint" type="revolute">
        <parent link="upperleg_M1_link"/>
        <child link="lowerleg_M1_link"/>
        <origin xyz="0 0.0095 0.06" rpy="0 -0 3.14159"/>
       <limit upper="0" lower="-2.9" effort="0.1" velocity="0.005"/>
        <axis xyz="0 1 0"/>
    </joint>

    <transmission name="tran2">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="upperlegM1_lowerlegM1_joint">
            <hardwareInterface>EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="motor2">
            <hardwareInterface>EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>

In my .yaml file, this is what I have as of now:

gurdy:
  joint_state_controller:
    type: joint_state_controller/JointStateController
    publish_rate: 50

  upperlegM1_lowerlegM1_joint_position_controller:
    type: effort_controller/JointPositionController
    joint: upperlegM1_lowerlegM1_joint
    pid: {p: 3.0, i: 1.0, d: 0.0}

In my gurdy_joint_control.launch file:

<launch>
<rosparam file="$(find my_gurdy_description)/config/gurdy_controller.yaml" command="load"/>

<node name="controller_spawner" pkg="controller_manager" type="spawner" respawn="false"
output="screen" ns="/gurdy" args="upperlegM1_lowerlegM1_joint_position_controller joint_state_controller --shutdown-timeout 3"/>

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"
respawn="false" output="screen">
<remap from="/joint_states" to="/gurdy/joint_states"/>
</node>

The error I am receiving is:

    [WARN] [1625290845.348528, 0.000000]: DEPRECATION warning: --shutdown-timeout has no effect.
[INFO] [1625290845.348816, 0.000000]: Controller Spawner: Waiting for service controller_manager/load_controller
process[robot_state_publisher-3]: started with pid [9647]
SpawnModel script started
[INFO] [1625290845.785092, 0.000000]: Loading model XML from ros parameter
[INFO] [1625290845.791241, 0.000000]: Waiting for service /gazebo/spawn_urdf_model
[INFO] [1625290845.794026, 2278.096000]: Calling service /gazebo/spawn_urdf_model
[INFO] [1625290846.093754, 2278.282000]: Spawn status: SpawnModel: Successfully spawned entity
[urdf_spawner-1] process has finished cleanly
log file: /home/user/.ros/log/dfa3b45c-dbbb-11eb-90bb-0242ac120007/urdf_spawner-1*.log
[WARN] [1625290875.601470, 2307.642000]: Controller Spawner couldn't find the expected controller_manager ROS interface.
[gurdy/controller_spawner-2] process has finished cleanly
log file: /home/user/.ros/log/dfa3b45c-dbbb-11eb-90bb-0242ac120007/gurdy-controller_spawner-2*.log
^C[robot_state_publisher-3] killing on exit
shutting down processing monitor...
... shutting down processing monitor complete

I don’t know why it is not able to find the controller_manager. I checked my package.xml but I have already included controller_manager as my dependencies. Any help is much appreciated

Update: I tried to submit for the quiz once but obviously, I only face error for the control part of the quiz.

Hello @WhenOwlsHoot ,

I’ve doing some tests with your package and I’ve seen that you are missing the gazebo_ros_control definition in your URDF file which is very important:

<gazebo>
    <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
        <robotNamespace>/gurdy</robotNamespace>
    </plugin>
</gazebo>

However, I think there are still other errors in the files which I’ve not been to find in my first tests so I’ve sent to your e-mail my package so that you can have a look and compare it with yours.

Hope this helps,