ROS入门4总结:ROS-Service服务的编程实现
前言
强推古月大大
我用的:环境是Ubuntu20.04、ros-noetic
实现:ROS的服务(service)消息类型中的(客户端)client的编程实现
偷图古月大大
Service服务下的Client客户端的编程实现
创建service的功能包
service的功能包得放在工作空间的src文件夹下
cd catkin_wksp/
catkin_creat_pkg learing_service roscpp rospy std_msgs geometry_msgs turtlesim
==注意:==创建功能包的时候不要使用mkdir learning_service
,因为还得放入依赖的文件,上面的命令roscpp rospy std_msgs geometry_msgs turtlesim就是功能包learning_servie依赖的问价
创建客户端代码
代码功能
代码是turtle_spawn.cpp,主要的功能是在具体的位置放置一个名为turtle2的小乌龟
代码要放置在新建的learning_service文件夹下的src文件夹里
代码实现
初始化ros节点
创建一个client实例(就是放置一个小乌龟)
发布服务请求数据
等待service处理之后的应答结果
配置创建的功能包的编译规则
编译规则要在新建的功能包learning_service文件夹里的CMakeLists.txt里进行增添
讲一下代码放入CMakeLists.txt文档的如下位置:
add_executable(turtle_spawn src/turtle_spawn.cpp)
target_link_libraries(turtle_spawn ${catkin_LIBRARIES})
第一句命令是将src下的turtle_spawn.cpp文件编译成turtle_spawn ,
第二句是将turtle_spawn链接到catkin_LIBRARIES库中
编译工作空间(编译客户端)
在工作空间的根目录下进行编译
cd catkin_wksp/
catkin_make
编译的控制台有以下代码
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~ traversing 3 packages in topological order:
-- ~~ - test_pkg
-- ~~ - learning_service
-- ~~ - learning_topic
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上面可以看出工作空间已经有三个功能包,分别是
test_pkg //创建工作空间测试的功能包
learning_service //创建服务的功能包
learning_topic //创建话题的功能包
剩下的工作就是运行client客户端程序了
运行客户端
roscore
rosrun turtlesim turtlesim_node
(召唤小乌龟,这次的小乌龟很好看)
在工作空间下运行客户端(client)程序文件turtle_span(感觉就是运行add_executable(turtle_spawn src/turtle_spawn.cpp
这句话创造出来的文件)
cd catkin_wksp/
source devel/setup.bash
rosrun learning_service turtle_spawn
点击回车,召唤小乌龟二号(这次的hello小红龟也好看)
然后在rosrun turtlesim turtlesim_node
命令下出来的界面里面多了一个关于turtle2的描述,位置:X:2,Y:2,name:turtle2