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

西宁网站建设天锐科技厦门网站建设企

西宁网站建设天锐科技,厦门网站建设企,wordpress 虚拟浏览量,医院网站php源码ROS2 入门应用 请求和应答#xff08;C#xff09;1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加编译信息4.1. 添加搜索库4.2. 增加可执行文件4.3. 增加可执行文件位置5. 编译和运行1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了… ROS2 入门应用 请求和应答C1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加编译信息4.1. 添加搜索库4.2. 增加可执行文件4.3. 增加可执行文件位置5. 编译和运行1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了ros2_ws工作空间 在《ROS2 入门应用 元功能包C》中已创建和加载了my_package功能包 那么就创建一个独立的cpp_srvcli功能包来做服务的请求和应答的功能 cd ~/ros2_ws/src ros2 pkg create --build-type ament_cmake cpp_srvcli --dependencies rclcpp example_interfaces--dependencies可选参数将会自动在package.xml和CMakeLists.txt中添加必要的依赖行 依赖example_interfaces包将会使用到example_interfaces的srv文件两位整数求和服务 int64 a int64 b --- int64 sum2. 创建源文件 进入cpp_srvcli功能包的src文件夹 cd ~/ros2_ws/src/cpp_srvcli/src2.1. 服务端 新建add_two_ints_server.cpp服务端源文件 nano add_two_ints_server.cpp复制以下内容到文件中 #include rclcpp/rclcpp.hpp #include example_interfaces/srv/add_two_ints.hpp#include memory/* 求和函数 */ void add(const std::shared_ptrexample_interfaces::srv::AddTwoInts::Request request,std::shared_ptrexample_interfaces::srv::AddTwoInts::Response response) {/* 从请求中添加两个整数并将总和提供给响应 */response-sum request-a request-b;/* 使用日志通知控制台其服务状态 */RCLCPP_INFO(rclcpp::get_logger(rclcpp), Incoming request\na: %ld b: %ld, request-a, request-b);RCLCPP_INFO(rclcpp::get_logger(rclcpp), sending back response: [%ld], (long int)response-sum); }int main(int argc, char **argv) {/* 初始化ROS2 */rclcpp::init(argc, argv);/* 定义服务端节点add_two_ints_server */std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_server);/* 创建服务名为add_two_ints服务函数为add的service服务端 */rclcpp::Serviceexample_interfaces::srv::AddTwoInts::SharedPtr service node-create_serviceexample_interfaces::srv::AddTwoInts(add_two_ints, add);/* 通知准备就绪 */RCLCPP_INFO(rclcpp::get_logger(rclcpp), Ready to add two ints.);/* 运行节点 */rclcpp::spin(node);/* 退出ROS2 */rclcpp::shutdown(); }2.2. 客户端 新建add_two_ints_client.cpp客户端源文件 nano add_two_ints_client.cpp复制以下内容到文件中 #include rclcpp/rclcpp.hpp #include example_interfaces/srv/add_two_ints.hpp#include chrono #include cstdlib #include memory/* 方便表示时间 */ using namespace std::chrono_literals;int main(int argc, char **argv) {/* 初始化ROS2 */rclcpp::init(argc, argv);/* 校验 */if (argc ! 3) {RCLCPP_INFO(rclcpp::get_logger(rclcpp), usage: add_two_ints_client X Y);return 1;}/* 定义客户端节点add_two_ints_client */std::shared_ptrrclcpp::Node node rclcpp::Node::make_shared(add_two_ints_client);/* 创建服务名为add_two_ints的client客户端 */rclcpp::Clientexample_interfaces::srv::AddTwoInts::SharedPtr client node-create_clientexample_interfaces::srv::AddTwoInts(add_two_ints);/* 创建请求request */auto request std::make_sharedexample_interfaces::srv::AddTwoInts::Request();request-a atoll(argv[1]);request-b atoll(argv[2]);/* 搜索服务节点间隔1s */while (!client-wait_for_service(1s)) {if (!rclcpp::ok()) {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Interrupted while waiting for the service. Exiting.);return 0;}/* 如果找不到将会继续等待 */RCLCPP_INFO(rclcpp::get_logger(rclcpp), service not available, waiting again...);}/* 获得应答并显示其状态 */auto result client-async_send_request(request);// Wait for the result.if (rclcpp::spin_until_future_complete(node, result) rclcpp::FutureReturnCode::SUCCESS){RCLCPP_INFO(rclcpp::get_logger(rclcpp), Sum: %ld, result.get()-sum);} else {RCLCPP_ERROR(rclcpp::get_logger(rclcpp), Failed to call service add_two_ints);}/* 退出ROS2 */rclcpp::shutdown();return 0; }3. 添加依赖关系 创建功能包时已通过--dependencies可选参数自动在package.xml中添加必要的依赖行 dependrclcpp/depend dependexample_interfaces/depend4. 添加编译信息 在CMakeLists.txt编译文件中 4.1. 添加搜索库 创建功能包时已通过--dependencies可选参数自动在CMakeLists.txt中添加必要的搜索库依赖行 find_package(rclcpp REQUIRED) find_package(example_interfaces REQUIRED)4.2. 增加可执行文件 然后再增加可执行文件 src/add_two_ints_server.cpp命名为server可执行文件 src/add_two_ints_client.cpp命名为client可执行文件 并添加目标依赖关系 add_executable(server src/add_two_ints_server.cpp) ament_target_dependencies(server rclcpp example_interfaces)add_executable(client src/add_two_ints_client.cpp) ament_target_dependencies(client rclcpp example_interfaces)4.3. 增加可执行文件位置 最后增加可执行文件位置这样ROS2就可以找到现在的可执行文件 install(TARGETSserverclientDESTINATION lib/${PROJECT_NAME})5. 编译和运行 进入工作空间根目录 cd ~/ros2_ws在编译之前检查缺失的依赖项可跳过 rosdep install -i --from-path src --rosdistro humble -y编译 colcon build --packages-select cpp_srvcli打开一个新终端运行服务端节点 ros2 run cpp_srvcli server# [INFO] [rclcpp]: Ready to add two ints.打开一个新终端运行客户端节点 ros2 run cpp_srvcli client 1 2# [INFO] [rclcpp]: Sum: 3谢谢
http://www.hkea.cn/news/14518837/

相关文章:

  • 怎么添加网站程序网络舆情分析师证书
  • 深圳建设网站的公司哪家好网站是怎么做的
  • 龙岗网站建设排名中山网站建设方案
  • 南昌做网站哪家好东营集团网站建设
  • 医院网站建设 招标青岛模板化网站建设
  • dedecms建站教程余杭住房和城乡建设局网站
  • 淘宝便宜的团购网站建设wordpress移除子菜单
  • 专业seo网站优化推广排名教程陕西多地最新通知
  • 保定徐水网站建设杭州手机软件开发
  • 哪些网站可以做房产推广能自己在家做网站吗
  • j永久网站gta5买房子网站建设
  • 望京网站建设东营网站建设方案策划
  • wordpress建站说明解读网站建设
  • 用家里网络做网站外贸网站如何引流
  • 唐山地区网站开发公司建e网室内设计网官网vr全景
  • 网站改版建设征求意见书电脑培训网上课程
  • 简约门户网站源码修改wordpress代码
  • 唐山玉田网站建设微信小程序制作软件哪个好
  • 做爰全过程免费的视频99网站制作网站的难度
  • 怎么做交易平台网站吴江网站建设
  • 江苏建设标准网站高端品牌鞋子有哪些牌子
  • 北京模板网站建设公司网站建设汇报评估
  • 建个私人网站怎么做网络营销有哪些就业岗位
  • 软件开发流程有哪些阶段湖南seo网站设计
  • 常德市建设网站seo网络推广外包公司
  • 顺义深圳网站建设公司修改wordpress注册邮件
  • 东莞网站优化排名网站免费域名注册解析
  • 网站空间服务商查询国家工商营业执照查询官网
  • 怎样用服务器做网站电脑网速很慢但是wifi又很正常
  • 产业协会建设网站方案wordpress 评论者邮箱