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

设计网站大全有哪些io域名购买

设计网站大全有哪些,io域名购买,盐城网站开发厂商,wordpress优化分析目录 说明#xff1a; 1. 服务模型 2. 实现过程#xff08;C#xff09; 自定义服务数据 Person.srv文件内容 Person.srv文件内容说明 编译配置 在package.xml文件中添加功能包依赖 在CMakeLists.txt中添加编译选项 编译生成语言相关文件 创建服务器代码#xf…目录 说明 1. 服务模型 2. 实现过程C 自定义服务数据 Person.srv文件内容 Person.srv文件内容说明 编译配置 在package.xml文件中添加功能包依赖 在CMakeLists.txt中添加编译选项 编译生成语言相关文件 创建服务器代码C 创建客户端代码C 配置服务器/客户端代码编译规则 编译并运行 编译 运行 3. 实现过程Python 创建服务器代码Python 创建客户端代码Python 运行 说明 1. 本系列学习笔记基于B站古月居《ROS入门21讲》课程且使用的Ubuntu与ROS系统版本与课程完全一致 虚拟机版本Linux系统版本ROS系统版本VMware WorkStation Pro 16Ubuntu18.04Melodic 2. 课程中的所有示例代码均已跑通且对Pyhon版本的代码也都做了运行验证并附带验证过程错误均已修正 3. 本节是整个笔记的第13节对应视频课程的第15节请自行对应学习 4. 整个系列笔记基本已经完结但部分章节仍需润色修改 后面会陆续发布请大家持续关注      创作不易感谢支持 1. 服务模型 2. 实现过程C 自定义服务数据 cd ~/catkin_ws/src/learning_service mkdir srv cd srv touch Person.srv Person.srv文件内容 string name // 名字 uint8 age   // 年龄 uint8 sex   // 性别分为3种男、女、未知下面以012宏定义做表示判断 ​ uint8 unknown 0 uint8 male 1     uint8 female 2 --- string result Person.srv文件内容说明 Person.msg文件里定义的内容跟语言无关的这既不是c也不是python这里面的string uint8表示在不同的程序里面扩展成对应该种程序的表示方法可以类比单片机里无符号整型变量类型unsigned int来理解缩写就是uint。---上面是request的内容下面是response的内容。 cd ~/catkin_ws/src/learning_service mkdir srv 注意新建的这个文件夹名字不能随便命名只能叫srv否则编译会报错CMakeList文件中有说明要放在名叫srv文件夹中。 cd srv touch Person.srv 注意这里的文件名首字母P一定要大写否则后面会报错 打开Person.srv文件把定义的内容复制到文件里并保存 注意输入的内容中注释不要空格不能用tab键缩进否则后面也会报错 编译配置 路径~/catkin_ws/src/learning_service 在package.xml文件中添加功能包依赖 build_dependmessage_generation/build_depend exec_dependmessage_runtime/exec_depend build_depend编译依赖 exec_depend运行依赖 在CMakeLists.txt中添加编译选项 find_package(......message_generation) add_service_files(FILES Person.srv) generate_messages(DEPENDENCIES std_msgs) add_service_files 把我们定义的Person.srv文件做为我们定义的接口 generate_messages编译Person.srv文件的时候需要用到一些依赖于ROS已有的库或包 我们这里用到的依赖是std_msgs我们前面看到的stringuint8都是在std_msgs里面做定义的 catkin_package(......message_runtime) 编译生成语言相关文件 cd ~/catkin_ws catkin_make 编译成功之后可以在~/catkin_ws/devel/include/learning_service下看到Person.srv文件编译生成的C的三个头文件 Person.hPersonRequest.hPersonResponse.h 创建服务器代码C cd ~/catkin_ws/src/learning_service/src touch person_server.cpp 初始ROS化节点 创建Server实例 循环等待服务器请求进入回调函数 在回调函数中完成服务功能的处理并反馈应答数据 /*** 该例程将执行/show_person服务服务数据类型learning_service::Person*/#include ros/ros.h #include learning_service/Person.h ​ // service回调函数输入参数req输出参数res bool personCallback(learning_service::Person::Request  req,learning_service::Person::Response res) {// 显示请求数据ROS_INFO(Person: name:%s age:%d sex:%d, req.name.c_str(), req.age, req.sex); ​// 设置反馈数据res.result OK; ​return true; } ​ int main(int argc, char **argv) {// ROS节点初始化ros::init(argc, argv, person_server); ​// 创建节点句柄ros::NodeHandle n; ​// 创建一个名为/show_person的server注册回调函数personCallbackros::ServiceServer person_service n.advertiseService(/show_person, personCallback); ​// 循环等待回调函数ROS_INFO(Ready to show person informtion.);ros::spin(); ​return 0; } ​ ​ 创建客户端代码C cd ~/catkin_ws/src/learning_service/src ​ touch person_client.cpp 初始化ros节点 创建一个Client实例 发布服务请求数据 等待Server处理之后的应答结果。 /*** 该例程将请求/show_person服务服务数据类型learning_service::Person*/ ​ #include ros/ros.h #include learning_service/Person.h ​ int main(int argc, char** argv) {// 初始化ROS节点ros::init(argc, argv, person_client); ​// 创建节点句柄ros::NodeHandle node; ​// 发现/spawn服务后创建一个服务客户端连接名为/spawn的serviceros::service::waitForService(/show_person);ros::ServiceClient person_client node.serviceClientlearning_service::Person(/show_person); ​// 初始化learning_service::Person的请求数据learning_service::Person srv;srv.request.name Tom;srv.request.age   20;srv.request.sex   learning_service::Person::Request::male; ​// 请求服务调用ROS_INFO(Call service to show person[name:%s, age:%d, sex:%d], srv.request.name.c_str(), srv.request.age, srv.request.sex); ​person_client.call(srv); ​// 显示服务调用结果ROS_INFO(Show person result : %s, srv.response.result.c_str()); ​return 0; }; ​ ​ 配置服务器/客户端代码编译规则 add_executable(person_server src/person_server.cpp) target_link_libraries(person_server ${catkin_LIBRARIES}) add_dependencies(person_server ${PROJECT_NAME}_gencpp) ​ add_executable(person_client src/person_client.cpp) target_link_libraries(person_client ${catkin_LIBRARIES}) add_dependencies(person_client ${PROJECT_NAME}_gencpp) 编译并运行 编译 cd ~/catkin_ws ​ catkin_make ​ source devel/setup.bash如已配置 **.bashrc**文件则此步不需要配置方法在publisher的章节里 运行 roscore rosrun learning_service person_server rosrun learning_service person_client 3. 实现过程Python 创建服务器代码Python cd ~/catkin_ws/src/learning_service/scripts touch person_server.py #!/usr/bin/env python # -*- coding: utf-8 -*- # 该例程将执行/show_person服务服务数据类型learning_service::Person ​ import rospy from learning_service.srv import Person, PersonResponse ​ def personCallback(req):# 显示请求数据rospy.loginfo(Person: name:%s age:%d sex:%d, req.name, req.age, req.sex) ​# 反馈数据return PersonResponse(OK) ​ def person_server():# ROS节点初始化rospy.init_node(person_server) ​# 创建一个名为/show_person的server注册回调函数personCallbacks rospy.Service(/show_person, Person, personCallback) ​# 循环等待回调函数print Ready to show person informtion.rospy.spin() ​ if __name__ __main__:person_server() ​ ​ 创建客户端代码Python cd ~/catkin_ws/src/learning_service/scripts touch person_client.py #!/usr/bin/env python # -*- coding: utf-8 -*- # 该例程将请求/show_person服务服务数据类型learning_service::Person ​ import sys import rospy from learning_service.srv import Person, PersonRequest ​ def person_client():# ROS节点初始化rospy.init_node(person_client) ​# 发现/spawn服务后创建一个服务客户端连接名为/spawn的servicerospy.wait_for_service(/show_person)try:person_client rospy.ServiceProxy(/show_person, Person) ​# 请求服务调用输入请求数据response person_client(Tom, 20, PersonRequest.male)return response.resultexcept rospy.ServiceException, e:print Service call failed: %s%e ​ if __name__ __main__:#服务调用并显示调用结果print Show person result : %s %(person_client()) ​ ​ 注意给person_server.py 和 person_client.py文件赋予作为程序文件执行的权限 点击person_server.py文件右键属性权限勾选允许作为程序文件执行 person_client.py文件操作同上python文件不需要编译直接运行即可。 运行 roscore rosrun learning_service person_server.py rosrun learning_service person_client.py
http://www.huolong8.cn/news/354905/

相关文章:

  • 做商城网站会不会被攻击wordpress anzhuo
  • uc做购物网站网站设计公司 国际
  • 网站右侧浮动广告百度首页排名优化多少钱
  • 泰州企业建站系统防伪网站建设
  • 做资源网站需要什么软件西安直播室网站建设
  • 温州网站制作优化淘宝做任务网站
  • 做明信片的网站天元建设集团有限公司李华
  • 北京网站建设主页广东建筑企业50强
  • 湖南网站建设公司 干净磐石网络在网页做动态图片的网站
  • 网站开发难吗2008做外贸有哪些免费的网站
  • 阿里云服务器 做网站贺州 网站建设公司有哪些
  • 公司网站搭建教程申请网站建设经费
  • 一家做运动鞋的网站旅游网站 功能
  • 茂名模板建站定制网站flash网站设计作品
  • 旅游网站建设的利益软件开发的八个流程
  • 中美今天最新消息池州市网站建设优化
  • 想自己做淘宝有什么网站商务网站建设论文总结
  • 网站手机端怎么做做视频网站怎么挣钱
  • 仿制网站软件怎么设置网站的关键字
  • 怎么免费建设个人博客网站蒙自建设网站
  • 制作公司网站有哪些好处网站建设项目体会
  • 网站建设需要多大的空间欧阳娜娜自创品牌
  • 网站后台栏目根据什么做的网站排名提升工具
  • 鲁中网站取消网站的通知
  • 河南建网站 优帮云宜昌网站推广优化技巧
  • 南通网站建设找哪家建网站怎么挣钱的
  • 深圳市多语言网站建设公司做效果图的网站有哪些
  • 网站自动弹窗代码网络架构配置
  • 网站怎么 备案pc网站做app京东
  • 织梦做的网站有点慢做网站虚拟主机怎么选择