当前位置:网站首页>Programming implementation of ROS learning 5-client node

Programming implementation of ROS learning 5-client node

2022-07-05 08:45:00 m0_ forty-six million ninety-three thousand eight hundred and t

One 、 Concept

service Service It is a way of synchronous communication between nodes ; Allow clients Client Node issue request Request; By the server Server Feedback response after node processing Response.

Two 、 establish Client Process overview of

1、 establish Client Program

2、 compile

3、 Configure environment variables

4、 perform Client Program

3、 ... and 、 The specific process is as follows :

3.1  establish client.cpp file

Create in the function pack of the corresponding workspace client.cpp file , The file should include the following four parts

1. initialization ROS node

2. Create a Client example

3. Publish service request data

4. wait for Server Response result after processing

example : Create a turtle_spawn.cpp

/**
 *  The routine will request /spawn service , Service data type turtlesim::Spawn
 */

#include <ros/ros.h>
#include <turtlesim/Spawn.h>

int main(int argc, char** argv)
{
    //  initialization ROS node 
	ros::init(argc, argv, "turtle_spawn");

    //  Create node handle 
	ros::NodeHandle node;

    //  Find out /spawn After service , Create a service client , The connection name is /spawn Of service
	ros::service::waitForService("/spawn");// This is a blocking function , It means waiting for the server to start 
	ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn");// The data type of the requested service is turtlesim::Spawn

    //  initialization turtlesim::Spawn Request data for 
	turtlesim::Spawn srv;
	srv.request.x = 2.0;
	srv.request.y = 2.0;
	srv.request.name = "turtle2";

    //  Request service call , That is, publish the request data 
	ROS_INFO("Call service to spwan turtle[x:%0.6f, y:%0.6f, name:%s]", 
			 srv.request.x, srv.request.y, srv.request.name.c_str());

	add_turtle.call(srv);

	//  Display the service call result 
	ROS_INFO("Spwan turtle successfully [name:%s]", srv.response.name.c_str());

	return 0;
};

3.2 compile

1. First in CMakeLists.txt Add Compilation Rules to

add_executable(turtle_spawn src/turtle_spawn.cpp)
target_link_libraries(turtle_spawn ${catkin_LIBRARIES})

The reasons for adding these two Compilation Rules and their adding locations are as follows :

2. Return to the workspace home directory , At terminal catkin_make

3.3 Set the environment variable

Also in the workspace main directory , Input... At the terminal :source devel/setup.bash

3.4 perform client Program

Because the service makes the little turtle move , So start the little turtle first

roscore
rosrun turtlesim turtlesim_node

  Then directly execute your client File can , The instructions are as follows :

rosrun  Function package name  .cpp file name 

rosrun learning_service turtle_spawn
原网站

版权声明
本文为[m0_ forty-six million ninety-three thousand eight hundred and t]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202140540130683.html