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.