I'm trying to follow the [Gazebo ROS Control tutorial](http://gazebosim.org/tutorials/?tut=ros_control) but when I run the line:
roslaunch myrobot_gazebo myrobot_world.launch
I get the error output:
[ INFO] [1430582458.651473605]: Finished loading Gazebo ROS API Plugin.
[ INFO] [1430582458.655485962]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting...
spawn_model script started
[INFO] [WallTime: 1430582458.938102] [0.000000] Loading model xml from ros parameter
[INFO] [WallTime: 1430582458.941118] [0.000000] Waiting for service /gazebo/spawn_urdf_model
[ INFO] [1430582459.741922815, 0.023000000]: waitForService: Service [/gazebo/set_physics_properties] is now available.
[ INFO] [1430582459.819138448, 0.096000000]: Physics dynamic reconfigure ready.
[INFO] [WallTime: 1430582459.855947] [0.132000] Calling service /gazebo/spawn_urdf_model
[INFO] [WallTime: 1430582460.083841] [0.295000] Spawn status: SpawnModel: Successfully spawned model
[ INFO] [1430582460.118077443, 0.295000000]: Loading gazebo_ros_control plugin
[ INFO] [1430582460.118570188, 0.295000000]: Starting gazebo_ros_control plugin in namespace: /myrobot
[ INFO] [1430582460.120080182, 0.295000000]: gazebo_ros_control plugin is waiting for model URDF in parameter [/robot_description] on the ROS param server.
[ERROR] [1430582460.223045545, 0.295000000]: No valid hardware interface element found in joint 'torso_to_front_right_leg_joint'.
[ERROR] [1430582460.223576289, 0.295000000]: Failed to load joints for transmission 'torso_to_front_right_leg_joint_trans'.
[ INFO] [1430582460.363040693, 0.295000000]: Loaded gazebo_ros_control.
[urdf_spawner-3] process has finished cleanly
log file: /home/chris/.ros/log/6b610a90-f0e4-11e4-bb58-001c1091e5ab/urdf_spawner-3*.log
[ERROR] [1430582476.852961975, 16.562000000]: Exception thrown while initializing controller torso_to_front_right_leg_joint_position_controller.
Could not find resource 'torso_to_front_right_leg_joint' in 'hardware_interface::EffortJointInterface'.
[ERROR] [1430582476.853310724, 16.563000000]: Initializing controller 'torso_to_front_right_leg_joint_position_controller' failed
My robot's urdf is just a single box "torso" with a single box "leg", and all the joints and interfaces and transmissions are defined:
false Gazebo/Red false Gazebo/Blue false transmission_interface/SimpleTransmission EffortJointInterface 1 /myrobot
myrobot_world.launch:
However, Gazebo only renders the torso and not the leg, and complains about "torso_to_front_right_leg_joint" not existing, even though it's clearly defined in my URDF. Why is this?
Edit: Based on [this question](http://answers.gazebosim.org/question/6654/gazeboos-x-109-no-valid-hardware-interface-element/), I found that this is actually a bug/typo in the tutorial, which tells you to specify transmissions like:
transmission_interface/SimpleTransmission EffortJointInterface 1
which is incorrect, as they actually need to be defined like:
transmission_interface/SimpleTransmission EffortJointInterface EffortJointInterface 1
That fixes the first error, but now I get a different error:
This robot has a joint named "torso_to_front_right_leg_joint" which is not in the gazebo model.
What does it mean by "not in the gazebo model"? Is this why the leg is still not showing up in Gazebo?
I realize I don't have a tag for my joints, but the [Gazebo ROS tutorial](http://gazebosim.org/tutorials?tut=ros_urdf&cat=connect_ros) claims that these are optional for joints. Is this incorrect? Even if I add:
I still get the same error.
↧