ROS入门--客户端client编程实现
2022/3/27 17:22:40
本文主要是介绍ROS入门--客户端client编程实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
ROS入门--客户端client编程实现
这一部分进入了service部分,前面使用的都是topic,要理解两种模型的区别
模型图:
1.创建新的功能包
之前我们创建了learning_topic用来学习话题的模型,学习自定义消息类型、学习创建发布者、订阅者,并配置他们进行实验。现在,我们要创建learning_service这个功能包来进行
服务模型的学习。
在catkin_ws 的 src目录下输入终端 catkin_create_pkg learning_service roscpp rospy std_msgs geometry_msgs turtlesim // 除了编程语言库、还有标准消息库等
2. 编写C++代码
/**
* 该例程将请求/spawn服务,服务数据类型turtlesim::Spawn
*/
#include <ros/ros.h>
#include <turtlesim/Spawn.h>
int main(int argc, char** argv)
{
// 初始化ROS节点
ros::init(argc, argv, "turtle_spawn");
// 创建节点句柄
ros::NodeHandle node;
// 发现/spawn服务后,创建一个服务客户端,连接名为/spawn的service
ros::service::waitForService("/spawn"); //查找系统中是否有/spawn这个服务,找到继续往下走
ros::ServiceClient add_turtle = node.serviceClient<turtlesim::Spawn>("/spawn"); //服务名还有他的数据类型
// 初始化turtlesim::Spawn的请求数据
turtlesim::Spawn srv;
srv.request.x = 2.0;
srv.request.y = 2.0;
srv.request.name = "turtle2";
// 请求服务调用
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); //发送请求数据等待返回
// 显示服务调用结果
ROS_INFO("Spwan turtle successfully [name:%s]", srv.response.name.c_str());
return 0;
};
3.编译配置(CMakeList.txt) //这是节点类文件必经的一步,配置才能编译,位置就在build那一栏末尾
加入
add_executable(turtle_spawn src/turtle_spawn.cpp) //要把turle_spawn.cpp这个文件编译成turtle_spawn
target_link_libraries(turtle_spawn ${catkin_LIBRARIES}) //生成文件---链接库
4.source一下启动路径(在devel中)
这一步由于之前在隐藏文件中做过所以无需再做,如果未做可以参考前面几节节点文件启动的source方法。
5.运行仿真
roscore
rosrun turtlesim turtlesim_node // 自带的节点
rosrun learning_service turtle_spawn // 格式是 rosrun 功能包 文件名
这篇关于ROS入门--客户端client编程实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10Rakuten 乐天积分系统从 Cassandra 到 TiDB 的选型与实战
- 2025-01-09CMS内容管理系统是什么?如何选择适合你的平台?
- 2025-01-08CCPM如何缩短项目周期并降低风险?
- 2025-01-08Omnivore 替代品 Readeck 安装与使用教程
- 2025-01-07Cursor 收费太贵?3分钟教你接入超低价 DeepSeek-V3,代码质量逼近 Claude 3.5
- 2025-01-06PingCAP 连续两年入选 Gartner 云数据库管理系统魔力象限“荣誉提及”
- 2025-01-05Easysearch 可搜索快照功能,看这篇就够了
- 2025-01-04BOT+EPC模式在基础设施项目中的应用与优势
- 2025-01-03用LangChain构建会检索和搜索的智能聊天机器人指南
- 2025-01-03图像文字理解,OCR、大模型还是多模态模型?PalliGema2在QLoRA技术上的微调与应用