当前位置:网站首页>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
边栏推荐
- Typical low code apaas manufacturer cases
- Guess riddles (8)
- Typescript hands-on tutorial, easy to understand
- 2022.7.4-----leetcode. one thousand and two hundred
- 猜谜语啦(7)
- [daily training -- Tencent selected 50] 557 Reverse word III in string
- Program error record 1:valueerror: invalid literal for int() with base 10: '2.3‘
- 猜谜语啦(9)
- Business modeling | process of software model
- STM32 lights up the 1.8-inch screen under Arduino IDE
猜你喜欢
随机推荐
猜谜语啦(5)
MPSoC QSPI Flash 升级办法
Guess riddles (10)
深度学习模型与湿实验的结合,有望用于代谢通量分析
Latex improve
696. Count binary substring
资源变现小程序添加折扣充值和折扣影票插件
Meizu Bluetooth remote control temperature and humidity access homeassistant
Business modeling | process of software model
Business modeling of software model | stakeholders
Guess riddles (5)
Adaboost使用
Yolov4 target detection backbone
Arrangement of some library files
Dynamic dimensions required for input: input, but no shapes were provided. Automatically overriding
It cold knowledge (updating ing~)
My university
多元线性回归(sklearn法)
319. Bulb switch
Basic number theory - factors