C++
1.ros::service::waitForService("/spawn");
waitForService函数查询系统中是否有名为/spawn的服务,如果没有,就一直等待。
实际上就是等相应的服务端的节点运行。
2.ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn")
创建服务客户端,请求名为/spawn的服务。serviceClient应该是模板类型,尖括号中的turtlesim::Spawn是服务的类型。
3.add_turtle.call(srv);
call函数将封装的请求数据srv发出。call发出数据后会等待,等待服务器的反馈。
python
4.rospy.wait_for_service('/spawn')
waitForService函数查询系统中是否有名为/spawn的服务,如果没有,就一直等待。
5.add_turtle = rospy.ServiceProxy('/spawn',Spawn)
创建服务客户端,请求名为/spawn的服务。Spawn是服务的类型,从turtlesim.srv中import。
6.response = add_turtle(2.0, 2.0, 0.0, "turtle2")
直接参数请求服务调用,而不用像在C++中那样创建数据srv。同样等待服务器的反馈。