<legend id="qzhed"></legend>
<sub id="qzhed"></sub>
<legend id="qzhed"></legend>
      1. <acronym id="qzhed"><var id="qzhed"></var></acronym>
        1. 国产粉嫩美女一区二区三,福利网午夜视频一区二区,亚洲色大成网站WWW久久,亚洲熟女精品一区二区,国产精品九九久久精品女同,亚洲av中文乱码一区二,一区二区中文字幕av,亚洲人成网站77777在线观看
          農業無人機
          工業無人機
          軍警無人機
          娛教無人機
          水下無人機
          反無人機設備
          無人機配件
          無人機租賃
          無人機培訓
          當前位置:全球無人機網 ? 無人機技術 ? 技術 ? 正文

          上海硅步ROS連載系列40期 創建服務器節點和客戶端節點

          發布日期:2017-11-25??來源:上海硅步我要投稿我要評論

            本節介紹使用C++編寫ROS消息服務器節點和客戶端節點的方法和步驟,以及如何構建和測試這兩個節點。

            1.編寫服務器節點代碼

            使用kdevelop在ros_tutorials/src目錄下創建一個名為add_two_ints_server的C++文件:

            $ roscd ros_tutorials

            $ cd src

            $ kdevelopadd_two_ints_server.cpp

            輸入如下代碼:

            #include"ros/ros.h"

            #include "ros_tutorials/AddTwoInts.h"

            bool add(ros_tutorials::AddTwoInts::Request &req,

            ros_tutorials::AddTwoInts::Response&res)

            {

            res.sum = req.a + req.b;1

            ROS_INFO("request: x=%ld, y=%ld",(long int)req.a, (long int)req.b);

            ROS_INFO("sending back response:[%ld]", (long int)res.sum);

            return true;

            }

            int main(int argc, char**argv)

            {

            ros::init(argc, argv,"add_two_ints_server");

            ros::NodeHandle n;

            ros::ServiceServer service =n.advertiseService("add_two_ints", add);

            ROS_INFO("Ready to add two ints.");

            ros::spin();

            return 0;

            }

            部分代碼解釋如下:

            #include "ros_tutorials/AddTwoInts.h"

            ros_tutorials/AddTwoInts.h是由編譯系統自動根據先前創建的srv文件生成的對應該srv文件的頭文件。

            bool add(ros_tutorials::AddTwoInts::Request &req,

            ros_tutorials::AddTwoInts::Response&res)

            該函數提供兩個int值求和的服務,int值從Request里面獲取,而返回數據裝入Response內,這些數據類型都定義在srv文件內部,函數返回一個bool值。

            {

            res.sum = req.a + req.b;

            ROS_INFO("request: x=%ld, y=%ld",(long int)req.a, (long int)req.b);

            ROS_INFO("sending back response:[%ld]", (long int)res.sum);

            return true;

            }

            進行兩個整數相加運算,結果存儲在Response中。把Request和Response的一些信息記錄日志,最后當運算完成時服務返回True。

            ros::ServiceServerservice = n.advertiseService("add_two_ints", add);

            創建服務service并在ROS網絡上進行廣播。

            2.編寫客戶端節點代碼

            使用kdevelop在ros_tutorials/src目錄下創建一個名為add_two_ints_client的C++文件:

            $ roscd ros_tutorials

            $ cd src

            $ kdevelopadd_two_ints_client.cpp

            輸入如下代碼:

            #include"ros/ros.h"

            #include "ros_tutorials/AddTwoInts.h"

            #include

            int main(int argc, char**argv)

            {

            ros::init(argc, argv,"add_two_ints_client");

            if (argc != 3)

            {

            ROS_INFO("usage: add_two_ints_client XY");

            return 1;

            }

            ros::NodeHandle n;

            ros::ServiceClient client =n.serviceClient ("add_two_ints");

            ros_tutorials::AddTwoInts srv;

            srv.request.a = atoll(argv[1]);

            srv.request.b = atoll(argv[2]);

            if (client.call(srv))

            {

            ROS_INFO("Sum: %ld", (longint)srv.response.sum);

            }

            else

            {

            ROS_ERROR("Failed to call serviceadd_two_ints");

            return 1;

            }

            return 0;

            }

            部分代碼解釋如下:

            ros::ServiceClientclient = n.serviceClient ("add_two_ints");

            為add_two_ints服務創建一個客戶端。ros::ServiceClient對象用來隨后調用服務。

            ros_tutorials::AddTwoIntssrv;

            srv.request.a= atoll(argv[1]);

            srv.request.b= atoll(argv[2]);

            實例化一個自動生成的服務類,并為其request成員賦值。一個服務類包含兩個成員,request和response,也包括兩個類的定義:Request和Response。

            if(client.call(srv))

            調用服務,調用完成后立即返回。如果服務調用成功,call()將返回true,此時srv.response中的值有效。如果服務調用失敗,call()將返回false,srv.response中的值無效。

            3.生成節點

            打開~/catkin_ws/src/ros_tutorials/CMakeLists.txt,將以下代碼添加到最后:

            add_executable(add_two_ints_serversrc/add_two_ints_server.cpp)

            target_link_libraries(add_two_ints_server${catkin_LIBRARIES})

            add_dependencies(add_two_ints_serverros_tutorials_gencpp)

            add_executable(add_two_ints_clientsrc/add_two_ints_client.cpp)

            target_link_libraries(add_two_ints_client${catkin_LIBRARIES})

            add_dependencies(add_two_ints_clientros_tutorials_gencpp)

            這將會創建兩個可執行程序,add_two_ints_server和add_two_ints_client。默認情況下,它們將會位于你的開發空間里面的ros_tutorials功能包目錄下(~/catkin_ws/devel/lib/ros_tutorials),你可以直接調用它們或者使用rosrun運行它們。

            運行 catkin_make:

            # In your catkinworkspace

            $ cd ~/catkin_ws

            $ catkin_make

            4.測試服務器和客戶端節點

            首先啟動roscore:

            $ roscore

            在另一個終端窗口運行下面的命令啟動服務器節點:

            $ rosrun ros_tutorialsadd_two_ints_server

            你會看到下面的輸出:

            Ready to add two ints.

            新建一個終端,運行客戶端節點:

            $ rosrun ros_tutorials add_two_ints_client 2 3

            你會看到類似下面的輸出:

            Requesting 2+3

            2 + 3 = 5


          ?
          本文鏈接:http://www.shhz-sgr.cn/tech/201711/25/590.html
          標簽:??上海硅步
          0相關評論
          免責聲明:凡注明來源全球無人機網的所有作品,均為本網合法擁有版權或有權使用的作品,歡迎轉載,請注明出處。非本網作品均來自互聯網,轉載目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責。

          圖文推薦

          推薦新聞

          推薦品牌

          關于本站

          合作服務電話

          • 客服熱線:0755-23779287
          • 展會負責:18682042306
          • 廣告合作:點擊這里給我發消息
          • 展會合作:點擊這里給我發消息

          公眾號/APP下載


            (公眾號)


            (Android下載)

          Copyright?2005-2021 81UAV.CN All Rights Reserved? 訪問和使用全球無人機網,即表明您已完全接受和服從我們的用戶協議。 SITEMAPS 網站地圖 網站留言
          運營商: 湛江中龍網絡科技有限公司 全球無人機網?
          ICP備案號:粵ICP備2023038372號-1 
          全國公安機關?備案信息?可信網站不良舉報?文明轉播
          主站蜘蛛池模板: 久久人妻无码一区二区三区av| av色蜜桃一区二区三区| 亚洲成色精品一二三区| 亚洲乱熟女一区二区三区| 91久久偷偷做嫩草影院免费看| 中文字幕精品亚洲人成在线| 国产成人高清亚洲综合| 久久三级中文欧大战字幕| 亚洲护士一区二区三区| 久热这里只有精品视频3| 日本久久久免费高清| 中文字幕99国产精品| 国内熟女中文字幕第一页| 人人妻人人做人人爽| 中文字幕亚洲人妻一区| 成熟熟女国产精品一区二区| 一 级做人爱全视频在线看| 日韩丝袜人妻中文字幕| 成人亚洲国产精品一区不卡| 99久久99久久精品免费看蜜桃 | 久爱www人成免费网站| 亚洲男人av天堂久久资源| 一区二区三区四区五区自拍| 天天做日日做天天添天天欢公交车 | 性欧美三级在线观看| 青青草原网站在线观看| 国产资源精品中文字幕| 野花韩国高清电影| 亚洲一本二区偷拍精品| 亚洲一品道一区二区三区| 四虎永久在线精品免费看| 天美传媒mv免费观看完整| 伊人久久大香线蕉网av| 亚洲AV成人一区国产精品| 日韩乱码人妻无码中文字幕视频 | 天堂网av最新版在线看| 国产午夜精品在人线播放| 无套内谢少妇高清毛片| 91麻豆精品国产91久| 男人的天堂va在线无码| 亚洲国产成人精品av区按摩|