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

wordpress基础主题站邢台网络推广

wordpress基础主题站,邢台网络推广,网站设计素材图片,北京社保网站做社保增减员目录 通信流程创建服务器端及客户端新建服务通讯文件修改service的xml及cmakelistCMakeLists.txt编辑 msg 相关配置编译消息相关头文件在cmakelist中包含头文件的路径在service包下编写service.cpp在client包下编写client.cpp测试运行查询服务的相关指令列出目前的所有服务查询参数显示某包下的服务显示服务消息的具体信息 服务通信是基于请求产生的通信。 通信流程 0.Server注册 Server 启动后会通过RPC在 ROS Master 中注册自身信息其中包含提供的服务的名称。ROS Master 会将节点的注册信息加入到注册表中。 1.Client注册 Client 启动后也会通过RPC在 ROS Master 中注册自身信息包含需要请求的服务的名称。ROS Master 会将节点的注册信息加入到注册表中。 2.ROS Master实现信息匹配 ROS Master 会根据注册表中的信息匹配Server和 Client并通过 RPC 向 Client 发送 Server 的 TCP 地址信息。 3.Client发送请求 Client 根据步骤2 响应的信息使用 TCP 与 Server 建立网络连接并发送请求数据。 4.Server发送响应 Server 接收、解析请求的数据并产生响应结果返回给 Client。 注意: 1.客户端请求被处理时需要保证服务器已经启动 2.服务端和客户端都可以存在多个。 创建服务器端及客户端 cd 到ws/src目录下 catkin_create_pkg service std_msgs rospy roscpp catkin_create_pkg client std_msgs rospy roscpp新建服务通讯文件 在服务端的src目录下新建srv文件夹并在内新建mymessage.srv # 客户端请求时发送的两个数字 string a string b #客户端发送与服务端响应中间使用---进行隔开这里是简单把两个string拼接在一起 --- # 服务器响应发送的数据 string ab修改service的xml及cmakelist package.xml中添加编译依赖与执行依赖 build_dependmessage_generation/build_dependexec_dependmessage_runtime/exec_dependCMakeLists.txt编辑 msg 相关配置 find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsmessage_generation )需要加入 message_generation,必须有 std_msgs #配置 srv 源文件 add_service_files(FILESAddInts.srv )生成消息时依赖于 std_msgs generate_messages(DEPENDENCIESstd_msgs )#执行时依赖 catkin_package( # INCLUDE_DIRS include # LIBRARIES demo02_talker_listenerCATKIN_DEPENDS roscpp rospy std_msgs message_runtime # DEPENDS system_lib )编译消息相关头文件 退回到ws目录使用catkin_make --pkg service 编译出相关的三个头文件 在cmakelist中包含头文件的路径 新生成的.h文件位于devel/include文件夹下在请求及响应方的cmakelist中添加 include_directories( # include${catkin_INCLUDE_DIRS}/root/work/ws/devel/include/ )在service包下编写service.cpp 服务端的功能主要是将收到的两个string连接起来。 #include ros/ros.h #include service/mymessage.h #include string // bool 返回值由于标志是否处理成功 bool doReq(service::mymessage::Request req,service::mymessage::Response resp){std::stringstream ss;ssstd::string(req.a)std::string(req.b);ROS_INFO(拼好的字符串:%s,ss.str().c_str());resp.ab ss.str();return true; }int main(int argc, char *argv[]) {setlocale(LC_ALL,);// 2.初始化 ROS 节点ros::init(argc,argv,testServer);// 3.创建 ROS 句柄ros::NodeHandle nh;// 4.创建服务以及注册回调函数ros::ServiceServer server nh.advertiseService(mymessage,doReq);ROS_INFO(服务已经启动....);// 5.回调函数处理请求并产生响应// 6.由于请求有多个需要调用 ros::spin()ros::spin();return 0; }同时在cmakelist中 add_executable(${PROJECT_NAME}_node src/service.cpp) target_link_libraries(${PROJECT_NAME}_node${catkin_LIBRARIES} )在service包下新增launch文件 launchnode namemyservice pkgservice typeservice_node outputscreen/ /launch在client包下编写client.cpp // 1.包含头文件 #include ros/ros.h #include service/mymessage.hint main(int argc, char *argv[]) {setlocale(LC_ALL,);// argv[0]指向程序名称 ./program 的字符串指针// argv[1]指向 arg1 的字符串指针// argv[2]指向 arg2 的字符串指针// 调用时动态传值,如果通过 launch 的 args 传参需要传递的参数个数 3,//launch 传参(0-文件路径 1传入的参数 2传入的参数 3节点名称 4日志路径)if (argc ! 5){ROS_INFO(argc(%d),argc);ROS_ERROR(请提交两个字符串);return 1;}// 2.初始化 ROS 节点ros::init(argc,argv,testClient);// 3.创建 ROS 句柄ros::NodeHandle nh;// 4.创建 客户端 对象ros::ServiceClient client nh.serviceClientservice::mymessage(mymessage);//等待服务启动成功//方式1ros::service::waitForService(mymessage);//方式2// client.waitForExistence();// 5.组织请求数据service::mymessage ai;//直接输入命令行的字符串ai.request.a argv[1];ai.request.b argv[2];// 6.发送请求,返回 bool 值标记是否成功bool flag client.call(ai);// 7.处理响应if (flag){ROS_INFO(请求正常处理,响应结果:%s,ai.response.ab.c_str());}else{ROS_ERROR(请求处理失败....);return 1;}return 0; }同时在cmakelist中 add_executable(${PROJECT_NAME}_node src/client.cpp) target_link_libraries(${PROJECT_NAME}_node${catkin_LIBRARIES} )在client包下新增launch文件 launcharg namea defaultempty/arg nameb defaultempty/node namemyclient pkgclient typeclient_node args$(arg a) $(arg b) outputscreen/ /launch 测试运行 source /root/work/ws/devel/setup.bash roslaunch service start.launch #通过如下命令行的形式传入参数launch文件中使用$(arg a)引用参数的值 roslaunch client start.launch a:abcd b:5678查询服务的相关指令 列出目前的所有服务 rosservice list得到服务列表 /mymessage /myservice/get_loggers /myservice/set_logger_level /rosout/get_loggers /rosout/set_logger_level查询参数 rosservice args /mymessage输出 a b显示某包下的服务 rossrv package service得出 service/mymessage显示服务消息的具体信息 rossrv show mymessage得出具体信息 [service/mymessage]: string a string b --- string ab
http://www.hkea.cn/news/14427707/

相关文章:

  • 推广做网站多少钱厦门百度seo
  • 做网站推广送什么上海到北京高铁票价多少
  • 企业网站标签页是什么做淘宝客新增网站推广
  • CMS源码就可以做网站吗淘宝代运营费用多少钱
  • 做中英文网站要注意什么游戏开发app
  • 沧州做家装的公司网站住宅小区物业管理系统网站建设
  • 30天网站建设 视频教程百度保障中心人工电话
  • 网站建设需要什么书建立个人免费网站
  • 网站建设服务合同样本网站怎么做前后台存取
  • 网页设计教学网站网站蜘蛛来访纪录
  • 浦江网站建设公司珠海学网站开发
  • 让做网站策划没经验怎么办销售网站建设的会计分录
  • 做淘宝优惠券网站要多少钱商务网站建设详细步骤
  • 网站html代码微信h5页面制作模板
  • 淘宝网站是谁做的好处行业网站源码
  • 做婚礼网站的公司简介wordpress角色名
  • 南昌网站建设南昌吊车出租官网制作公司排名
  • 淘宝做网站 评价话语阿里指数查询手机版
  • 威海网站建设兼职家居seo整站优化方案
  • 网站开发开票交税额网站 后台模板
  • wordpress建站的好处襄阳seo推广
  • php做的大型网站有哪些化工销售怎么做网站
  • 兼职 网站建设网站做系统叫什么名字
  • 丹东手机网站建站语言
  • 网站建设管理的规章制度上海做网站的企业
  • 深圳外包网站公司wordpress全站音乐
  • 免费建设网站领地品质好的深圳装修
  • 平台制作网站公司哪家好学校网站建设审批
  • 蓝田微网站建设wordpress模块管理系统
  • 深圳市建设局网站张局网站策划书总结