ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Since on the commandline, you're just calling a commandline version of a ROS service, to do it from a ROS node, you want to use the service SetModelState and call it via roscpp. The tutorial on how to do this can be found here.
2 | No.2 Revision |
Since on the commandline, you're just calling a commandline version of a ROS service, to do it from a ROS node, you want to use the service SetModelState and call it via roscpp. The tutorial on how to do this can be found here.
EDIT: The gazebo/SetModelState documentation says to use the service located in the package gazebo_msgs
instead of the one in the gazebo
package.
Thus, your code should look like this:
ros::ServiceClient client = n.serviceClient<gazebo_msgs::SetModelState>("/gazebo/SetModelState");
The main reason your code wouldn't compile is because you used <gazebo::ModelState>
instead of <gazebo::SetModelState>
, just so you know what that error was.
3 | No.3 Revision |
Since on the commandline, you're just calling a commandline version of a ROS service, to do it from a ROS node, you want to use the service SetModelState and call it via roscpp. The tutorial on how to do this can be found here.
EDIT: The gazebo/SetModelState documentation says to use the service located in the package gazebo_msgs
instead of the one in the gazebo
package.
Thus, your code should look like this:
ros::ServiceClient client = n.serviceClient<gazebo_msgs::SetModelState>("/gazebo/SetModelState");
The main reason your code wouldn't compile is because you used <gazebo::ModelState>
instead of <gazebo::SetModelState>
, just so you know what that error was.
EDIT2: If you're using Diamondback, use the gazebo
package instead of the gazebo_msgs
package. I apologize for the mistake. You should then use:
#include <gazebo/SetModelState.h>
...
ros::ServiceClient client = n.serviceClient<gazebo::SetModelState>("/gazebo/SetModelState");
4 | No.4 Revision |
Since on the commandline, you're just calling a commandline version of a ROS service, to do it from a ROS node, you want to use the service SetModelState and call it via roscpp. The tutorial on how to do this can be found here.
EDIT: The gazebo/SetModelState documentation says to use the service located in the package gazebo_msgs
instead of the one in the gazebo
package.
Thus, your code should look like this:
ros::ServiceClient client = n.serviceClient<gazebo_msgs::SetModelState>("/gazebo/SetModelState");
The main reason your code wouldn't compile is because you used <gazebo::ModelState>
instead of <gazebo::SetModelState>
, just so you know what that error was.
EDIT2: If you're using Diamondback, use the gazebo
package instead of the gazebo_msgs
package. I apologize for the mistake. You should then use:
#include <gazebo/SetModelState.h>
...
ros::ServiceClient client = n.serviceClient<gazebo::SetModelState>("/gazebo/SetModelState");
There is no message type "ModelState". There is a class ModelState, but the message is called SetModelState.