I'm trying to control the joints of my robot in gazebo using gazebo_ros_contol. However, every time i launch my simulation i get the following error:
[FATAL] [1582914730.942896966, 0.314000000]: Failed to start controller in realtime loop. This should never happen.
This error comes up 6 times(# of joints =6), after which i get the following message every few seconds in my command prompt:
Node::Advertise(): Error advertising a topic. Did you forget to start the discovery service?
My launch file can be seen below:
<launch>
<arg name="namespace" default="simplemodel"/>
<arg name="cmd_timeout" default="0.5"/>
<arg name="x" default="1"/>
<arg name="y" default="1"/>
<arg name="z" default="0.1"/>
<include file="$(find sim)/launch/the_one.launch">
<arg name="namespace" value="$(arg namespace)"/>
</include>
<group ns="$(arg namespace)">
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="generated_world.world"/>
</include>
<node name="spawn_vehicle" pkg="gazebo_ros" type="spawn_model"
args="-urdf -param robot_description -model my_vehicle
-gazebo_namespace /$(arg namespace)/gazebo
-x $(arg x) -y $(arg y) -z $(arg z)"/>
<node name="controller_spawner" pkg="controller_manager" type="spawner"
args="$(find sim)/config/config.yaml"/>
</group>
</launch> The_one launch file can be be seen bellow:
<launch>
<arg name='namespace' default='my_vehicle'/>
<group ns="$(arg namespace)">
<param name="robot_description" command="$(find xacro)/xacro.py $(find sim)/urdf/cat797.xacro"/>
<node name="vehicle_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher">
<param name="publish_frequency" value="30.0"/>
</node>
</group>
</launch>
Part of my config file can be seen bellow:
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 30
jointfour_position_controller:
type: effort_controllers/JointPositionController
joint: jointfour
pid: {p: 1.0, i: 1.0, d: 0.0}
jointfive_position_controller:
type: effort_controllers/JointPositionController
joint: jointfive
pid: {p: 1.0, i: 1.0, d: 0.0}
Since the URDF is pretty repetitive, here is a joint, transmission, and gazebo_ros_control code:
<joint name="jointeight" type="continuous">
<origin rpy="0 0 0" xyz="0.08 0 0"/>
<parent link="front_left_wheel_hinge"/>
<child link="front_left_wheel"/>
<axis xyz="-1 0 0"/>
<limit effort="10" velocity="100"/>
</joint>
<transmission name="jointnine_transmission" type="SimpleTransmission">
<type>transmission_interface/SimpleTransmission</type>
<joint name="jointnine">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
</joint>
<actuator name="jointnine_motor">
<hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
<mechanicalReduction>1</mechanicalReduction>
</actuator>
</transmission>
<gazebo>
<!--<static>false</static>-->
<plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so">
<!--<robotNamespace>/simple_model</robotNamespace>
<robotSimType>gazebo_ros_control/DefaultRobotHWSim</robotSimType>
<legacyModeNS>false</legacyModeNS>-->
</plugin>
</gazebo>
What I've tried:
- Un-grouping the launch file and adding namespace tags to individual nodes(same error)
- Pausing the simulation (controllers load and start, however using "rostopic list" only shows /joint_state topic, and no topics for the other joints, using rosservice, it was seen that non of the other controllers are running)
adding namespace to gazebo_ros_control and config file brings the following error:
[WARN] [1582915496.881255, 0.191000]: Controller Spawner couldn't find the expected controller_manager ROS interface
System Configuration:
- Ubuntu 18.04 LTS (64-bit OS)
- ARMv8 Processor
- ROS Melodic 1.14.3
- Gazebo version 9.0.0