当前位置: 首页 > news >正文

加强 廉政网站建设企业商城网站开发

加强 廉政网站建设,企业商城网站开发,北京网站建设上石榴汇,郑州新闻发布会直播目录 0 专栏介绍1 服务通信模型2 服务模型实现(C)3 服务模型实现(Python)4 自定义服务5 话题、服务通信的异同 0 专栏介绍 本专栏旨在通过对ROS2的系统学习#xff0c;掌握ROS2底层基本分布式原理#xff0c;并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。… 目录 0 专栏介绍1 服务通信模型2 服务模型实现(C)3 服务模型实现(Python)4 自定义服务5 话题、服务通信的异同 0 专栏介绍 本专栏旨在通过对ROS2的系统学习掌握ROS2底层基本分布式原理并具有机器人建模和应用ROS2进行实际项目的开发和调试的工程能力。 详情《ROS2从入门到精通》 1 服务通信模型 服务是 ROS 图中节点之间的另一种通信方法。服务基于服务器-客户端模型不同于话题的发布者-订阅者模型。话题允许节点订阅数据流并获取持续更新而服务只在客户端特别调用时才提供数据。二者更详细的对比请参考第5节 2 服务模型实现(C) 实验目标客户端提交请求给turtlesim功能包的/spawn服务在界面上生成新的乌龟。 服务器 本实验中无需编程,为turtlesim::Spawn定义的/spwan服务 客户端 void OnResultCallBack(rclcpp::Clientturtlesim::srv::Spawn::SharedFuture result) {auto response result.get();RCLCPP_INFO(rclcpp::get_logger(rclcpp), Request service successfully! [turtle id: %s], response-name.c_str()); }void request() {auto spawn std::make_sharedturtlesim::srv::Spawn::Request(); spawn-name winter_turtle;spawn-x 1.0;spawn-y 1.0;spawn-theta 1.57;while (!client_-wait_for_service(std::chrono::seconds(1))) { if (!rclcpp::ok()) {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Interrupted while waiting for the service. Exiting.);return;}RCLCPP_INFO(rclcpp::get_logger(rclcpp), service not available, waiting again...);}auto result client_-async_send_request(spawn, std::bind(ClientNode::OnResultCallBack, this, std::placeholders::_1)); }服务通信的效果如下所示 3 服务模型实现(Python) 实验目标客户端提交请求给turtlesim功能包的/spawn服务在界面上生成新的乌龟。 服务器 本实验中无需编程,为turtlesim::Spawn定义的/spwan服务 客户端 class ClientNode(Node):def __init__(self, name):super().__init__(name)self.client self.create_client(Spawn, /spawn) while not self.client.wait_for_service(timeout_sec1.0):self.get_logger().info(service not available, waiting again...) self.request Spawn.Request()def sendRequest(self):self.request.name winter_turtleself.request.x 1.0self.request.y 1.0self.request.theta 1.57self.future self.client.call_async(self.request)服务通信的效果如下所示 4 自定义服务 自定义服务的通用流程如下 功能包下新建srv文件夹在其中添加自定义服务xxx.srv,注意请求和响应数据结构使用---分割功能包package.xml中添加编译依赖与执行依赖buildtool_dependrosidl_default_generators/buildtool_depend exec_dependrosidl_default_runtime/exec_depend member_of_grouprosidl_interface_packages/member_of_group功能包CMakeLists.txt中添加编译消息相关依赖find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME}xxx.srvDEPENDENCIES xxx_srvs )ament_export_dependencies(rosidl_default_runtime)编译自定义消息在install/pkg_name/include中生成由xxx.srv编译的C可识别的xxx.hpp头文件引入xxx.hpp即可调用自定义服务 下面给出一个实例 添加如下自定义服务实现一个加法服务并按上面步骤配置依赖 # client int32 a int32 b --- # server int32 sum定义一个服务器、一个客户端限于篇幅只贴出部分代码完整代码见文末。 服务器class ServerNode : public rclcpp::Node {public:ServerNode() : Node(lab_srv_server_own) {server_ create_serviceown_srv_lab::srv::Add(/add_service,std::bind(ServerNode::OnAddSrvCallBack, this, std::placeholders::_1, std::placeholders::_2)); }private:rclcpp::Serviceown_srv_lab::srv::Add::SharedPtr server_;void OnAddSrvCallBack(const std::shared_ptrown_srv_lab::srv::Add::Request request, std::shared_ptrown_srv_lab::srv::Add::Response response) {response-sum request-a request-b;RCLCPP_INFO(rclcpp::get_logger(rclcpp), Incoming request\na: %d b: %d, request-a, request-b);RCLCPP_INFO(rclcpp::get_logger(rclcpp), sending back response: [%d], response-sum);} };客户端ClientNode() : Node(lab_srv_client_own) {client_ create_clientown_srv_lab::srv::Add(/add_service); }void request(int a, int b) {auto add_srv std::make_sharedown_srv_lab::srv::Add::Request();add_srv-a a; add_srv-b b;while (!client_-wait_for_service(std::chrono::seconds(1))) { if (!rclcpp::ok()) {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Interrupted while waiting for the service. Exiting.);return;}RCLCPP_INFO(rclcpp::get_logger(rclcpp), service not available, waiting again...);}auto result client_-async_send_request(add_srv, std::bind(ClientNode::OnResultCallBack, this, std::placeholders::_1)); }服务通信效果如下所示 5 话题、服务通信的异同 对比话题服务通信模式发布-订阅请求-响应同步性异步同步缓冲区有无实时性弱强节点关系多对多一对多(1个server对应一个服务)通信格式.msg.srv使用场景连续高频的数据传输例如激光雷达、里程计传输数据偶尔调用的功能例如图像识别 完整代码通过下方博主名片联系获取 更多精彩专栏 《ROS从入门到精通》《Pytorch深度学习实战》《机器学习强基计划》《运动规划实战精讲》… 源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系
http://www.hkea.cn/news/14395644/

相关文章:

  • 网站功能报价wordpress 前台关闭
  • 中外商贸网站建设中英互译网站怎么做
  • 义乌做公司网站国外 网站页面
  • 宁波网站建设设计公司信息电脑游戏排行榜2020前十名
  • 定制网站大概多少钱网站推广站点建设与策划
  • 网站建设空间空间有几种类型手机免费个人网站建站
  • 刘强东自己做网站临沂百度公司地址
  • 手表到哪个网站买网站的动画效果代码大全
  • 石家庄移动端网站建设做黑彩网站能赚钱吗
  • 万和城网站wordpress如何正常打开二级菜单
  • 领动营销网站建设wordpress登录按钮
  • 德州哪里有做网站的WordPress句子主题
  • 自适应型网站建设怎么做淘宝优惠券的网站
  • 三河网站建设-七天网络百度模板网站模板
  • 做网站前需要准备什么软件wordpress metaslider
  • 网站系统升级需要多久怎么做抽奖网站
  • 做pos机网站有必要么技术支持上海网站建设
  • 黄冈网站建设公司制作网站wordpress主题 dux主题5.3
  • 沈阳市城乡建设网站黄骅市有什么好玩的地方
  • 兼职做网站挣钱么开发网站的步骤
  • 做网站接广告赚钱吗用境外服务器做网站
  • 装饰公司网站php源码东莞市建设公共交易中心网站首页
  • 道客网站建设推广福州网站开发大概费用
  • 网站后台模板如何使用海口网站建设是什么意思
  • 二学一做网站广州动漫制作公司
  • 济南建设网站wordpress企业外贸主题
  • 做加盟正规网站做cms网站步骤
  • 网站制作报价开用自己网站做邮箱域名
  • 购物网站首页模板下载做企业网站联系
  • 做网站用什么软件平面设计提升培训机构