[{"data":1,"prerenderedAt":16154},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin":15845,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin":16138,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin":16153},{"id":4,"title":5,"body":6,"canonicalPath":15826,"chapterDepth":15827,"chapterOrder":15828,"date":15829,"description":20,"docI18nKey":15830,"docKey":15831,"docRoot":15832,"docTitle":15833,"extension":15834,"i18nKey":15835,"isBlogPost":15836,"isWikiDoc":49,"isWikiIndex":15836,"layout":15837,"legacyPath":15837,"locale":15838,"localeSlug":15839,"meta":15840,"navigation":49,"path":15826,"seo":15841,"sourcePath":15842,"sourceStem":15835,"stem":15843,"wikiDepth":35,"__hash__":15844},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信.md","Four Major Communications",{"type":7,"value":8,"toc":15809},"minimark",[9,14,22,280,285,290,298,303,308,313,550,555,560,563,568,573,578,581,586,591,594,599,604,609,612,617,622,625,628,631,639,644,649,654,659,664,669,674,677,680,682,687,690,695,698,703,707,712,717,722,727,730,735,740,743,748,753,758,762,767,772,777,782,787,792,814,817,838,843,845,850,855,857,860,865,868,873,876,881,890,897,899,904,909,914,919,924,929,1109,1112,1115,1118,1123,1126,1129,1132,1135,1138,1143,1148,1153,1158,1161,1164,1167,1170,1173,1178,1181,1184,1189,1194,1197,1202,1207,1212,1215,1220,1223,1228,1233,1238,1241,1246,1253,1258,1263,1268,1275,1748,1753,1756,1759,1780,1785,1788,1790,1795,1800,1805,1810,1815,1820,1825,1830,1835,1840,2025,2030,2033,2038,2041,2046,2049,2054,2059,2064,2069,2074,2077,2080,2083,2086,2089,2094,2099,2102,2107,2112,2117,2122,2464,2468,2473,2478,2483,2488,2491,2494,2497,2502,2508,2511,2516,2521,2526,2529,2534,2539,2544,2547,2552,2555,2558,2585,2590,2595,2598,2603,2608,2613,2618,2625,2630,2635,2638,2641,2647,2652,2657,2676,2681,2686,2693,2698,2705,2919,2922,2945,2951,2959,2964,2967,2972,2975,2978,2983,2987,2992,2997,3002,3005,3010,3015,3020,3025,3028,3033,3036,3041,3220,3223,3228,3231,3236,3415,3420,3604,3609,3614,3619,3624,3626,3631,3636,3641,3646,3649,3654,4122,4127,4132,4137,4140,4145,4148,4150,4155,4160,4503,4508,4513,4517,4522,4527,4532,4537,4539,4544,4547,4552,4557,4562,4567,4572,4576,4581,4586,4591,4594,4599,4603,4608,4613,4616,4621,4626,4631,4636,4672,4674,4679,4684,4689,4692,4697,4702,4707,4712,4717,4720,4725,4730,4735,4740,4745,4750,4755,4760,4765,4770,4775,4778,4780,4785,4790,4970,4975,4980,4983,4988,4991,4996,4999,5004,5191,5194,5199,5202,5207,5212,5217,5222,5227,5229,5234,5239,5244,5249,5254,5257,5260,5263,5266,5271,5276,5281,5286,5291,5296,5301,5306,5716,5721,5726,5733,5738,5762,5765,5775,5779,5784,5789,5794,5799,5802,5809,5814,5819,5824,5832,5837,5847,5852,5857,5860,5865,5868,5873,5878,5883,5888,5893,5898,6074,6079,6082,6087,6093,6096,6101,6107,6338,6343,6348,6353,6356,6361,6366,6369,6374,6598,6600,6605,6608,6611,6614,6617,6622,6627,6632,6637,6642,6647,6652,6657,6662,6667,6672,6675,6680,6685,6688,6693,6698,6701,6706,6720,6727,6732,6735,6740,6745,6748,6751,6754,6757,6760,6763,6766,6769,6775,6778,6783,6786,7354,7359,7361,7366,7371,7376,7379,7382,7387,7392,7397,7400,7405,7408,7413,7416,7419,7422,7427,7430,7433,7435,7440,7445,7450,7455,7460,8261,8265,8270,8273,8278,8281,8284,8289,8292,8295,8298,8301,8304,8307,8312,8314,8319,8324,8329,8334,8339,8342,8344,8349,8354,8357,8360,8363,8368,8373,8378,8383,8400,8405,8410,8415,8420,8425,8430,8435,8440,8443,8447,8452,8632,8637,8816,8821,8826,8831,8836,8838,8843,8848,8853,8856,8859,8862,8865,8868,8871,8874,8877,8882,8887,8892,8897,8902,8907,8910,8913,8916,8919,8922,8925,8928,8933,8938,8943,8948,8953,8956,8961,8966,9583,9588,9593,9598,9603,9630,9633,9639,9644,9647,9650,9653,9656,9658,9663,9666,9671,9676,9681,9686,9691,9693,9700,9705,9710,9712,9715,9720,9725,9730,9735,9740,9743,9748,9755,9760,9765,9768,9773,9776,9781,9788,9793,9802,9807,9820,9825,9830,9835,9840,9845,9850,9855,9860,9865,9870,9872,9875,9880,9883,9890,9895,9903,9908,9914,9919,9924,9929,9936,9941,9946,9951,11161,11165,11170,11173,11178,11406,11411,11416,11421,11426,11429,11432,11435,11438,11443,11448,11453,11458,11461,11466,11469,11474,11476,11481,11484,11489,11492,11495,11498,11503,11508,11513,11518,11521,11526,11531,11536,11539,11542,11547,11552,11557,11562,11567,11570,11573,11576,11581,11586,11591,11596,11601,11603,11608,11611,11614,11617,11622,11627,11632,11637,11639,11642,11647,11650,11655,11660,11665,11675,11678,11688,11693,11698,11701,11703,11706,11709,11712,11717,11720,11723,11726,11729,11734,11739,11744,12878,12883,12888,12895,12897,12900,12903,13026,13030,13035,13040,13043,13045,13050,13055,13058,13063,13068,13073,13076,13081,13086,13091,13094,13099,13104,13109,13114,13119,13124,13129,13132,13135,13139,13144,13149,13159,13164,13169,13174,13179,13184,13187,13192,13197,13202,13207,13586,13591,13596,13601,13606,13608,13613,13618,13623,13626,13629,13634,13639,14050,14052,14057,14062,14067,14070,14073,14078,14085,14087,14092,14095,14100,14103,14108,14111,14116,14121,14126,14131,14136,14141,14143,14148,14151,14156,14159,14164,14169,14172,14177,14182,14187,14189,14194,14199,14202,14207,14212,15104,15108,15113,15118,15123,15128,15133,15138,15143,15148,15153,15158,15161,15164,15169,15172,15177,15182,15701,15703,15708,15713,15718,15721,15723,15728,15733,15738,15743,15746,15751,15756,15761,15766,15771,15776,15779,15784,15789,15795,15800,15805],[10,11,13],"h3",{"id":12},"introduction-to-communication-mechanisms-and-code-templates","Introduction to Communication Mechanisms and Code Templates",[15,16,17],"p",{},[18,19],"img",{"alt":20,"src":21},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage332.webp",[23,24,28],"pre",{"className":25,"code":26,"language":27,"meta":20,"style":20},"language-cpp shiki shiki-themes github-light github-dark","#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"mynode_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"Hello World!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CMyNode>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n","cpp",[29,30,31,44,51,77,83,89,110,116,143,149,155,160,191,196,210,215,244,249,262,274],"code",{"__ignoreMap":20},[32,33,36,40],"span",{"class":34,"line":35},"line",1,[32,37,39],{"class":38},"szBVR","#include",[32,41,43],{"class":42},"sZZnC"," \"rclcpp\u002Frclcpp.hpp\"\n",[32,45,47],{"class":34,"line":46},2,[32,48,50],{"emptyLinePlaceholder":49},true,"\n",[32,52,54,57,61,65,68,71,74],{"class":34,"line":53},3,[32,55,56],{"class":38},"class",[32,58,60],{"class":59},"sScJk"," MyNode",[32,62,64],{"class":63},"sVt8B",": ",[32,66,67],{"class":38},"public",[32,69,70],{"class":59}," rclcpp",[32,72,73],{"class":63},"::",[32,75,76],{"class":59},"Node\n",[32,78,80],{"class":34,"line":79},4,[32,81,82],{"class":63},"{\n",[32,84,86],{"class":34,"line":85},5,[32,87,88],{"class":38},"  public:\n",[32,90,92,95,98,101,104,107],{"class":34,"line":91},6,[32,93,94],{"class":59},"    MyNode",[32,96,97],{"class":63},"():",[32,99,100],{"class":59},"Node",[32,102,103],{"class":63},"(",[32,105,106],{"class":42},"\"mynode_node_cpp\"",[32,108,109],{"class":63},")\n",[32,111,113],{"class":34,"line":112},7,[32,114,115],{"class":63},"    {\n",[32,117,119,122,124,128,131,134,137,140],{"class":34,"line":118},8,[32,120,121],{"class":59},"      RCLCPP_INFO",[32,123,103],{"class":63},[32,125,127],{"class":126},"sj4cs","this",[32,129,130],{"class":63},"->",[32,132,133],{"class":59},"get_logger",[32,135,136],{"class":63},"(),",[32,138,139],{"class":42},"\"Hello World!\"",[32,141,142],{"class":63},");\n",[32,144,146],{"class":34,"line":145},9,[32,147,148],{"class":63},"    }\n",[32,150,152],{"class":34,"line":151},10,[32,153,154],{"class":63},"};\n",[32,156,158],{"class":34,"line":157},11,[32,159,50],{"emptyLinePlaceholder":49},[32,161,163,166,169,171,173,177,180,183,186,189],{"class":34,"line":162},12,[32,164,165],{"class":38},"int",[32,167,168],{"class":59}," main",[32,170,103],{"class":63},[32,172,165],{"class":38},[32,174,176],{"class":175},"s4XuR"," argc",[32,178,179],{"class":63},", ",[32,181,182],{"class":38},"char",[32,184,185],{"class":38}," **",[32,187,188],{"class":175}," argv",[32,190,109],{"class":63},[32,192,194],{"class":34,"line":193},13,[32,195,82],{"class":63},[32,197,199,202,204,207],{"class":34,"line":198},14,[32,200,201],{"class":59},"  rclcpp",[32,203,73],{"class":63},[32,205,206],{"class":59},"init",[32,208,209],{"class":63},"(argc,argv);\n",[32,211,213],{"class":34,"line":212},15,[32,214,50],{"emptyLinePlaceholder":49},[32,216,218,220,222,225,227,230,232,235,238,241],{"class":34,"line":217},16,[32,219,201],{"class":59},[32,221,73],{"class":63},[32,223,224],{"class":59},"spin",[32,226,103],{"class":63},[32,228,229],{"class":59},"std",[32,231,73],{"class":63},[32,233,234],{"class":59},"make_shared",[32,236,237],{"class":63},"\u003C",[32,239,240],{"class":59},"MyNode",[32,242,243],{"class":63},">());\n",[32,245,247],{"class":34,"line":246},17,[32,248,50],{"emptyLinePlaceholder":49},[32,250,252,254,256,259],{"class":34,"line":251},18,[32,253,201],{"class":59},[32,255,73],{"class":63},[32,257,258],{"class":59},"shutdown",[32,260,261],{"class":63},"();\n",[32,263,265,268,271],{"class":34,"line":264},19,[32,266,267],{"class":38},"  return",[32,269,270],{"class":126}," 0",[32,272,273],{"class":63},";\n",[32,275,277],{"class":34,"line":276},20,[32,278,279],{"class":63},"}\n",[15,281,282],{},[18,283],{"alt":20,"src":284},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage333.webp",[15,286,287],{},[18,288],{"alt":20,"src":289},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage334.webp",[15,291,292],{},[293,294,295],"a",{"href":295,"rel":296},"https:\u002F\u002Fsnippet-generator.app\u002F",[297],"nofollow",[15,299,300],{},[18,301],{"alt":20,"src":302},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage335.webp",[15,304,305],{},[18,306],{"alt":20,"src":307},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage336.webp",[15,309,310],{},[18,311],{"alt":20,"src":312},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage337.webp",[23,314,318],{"className":315,"code":316,"language":317,"meta":20,"style":20},"language-JSON shiki shiki-themes github-light github-dark","{\n\"ROS2节点模板(C++)\": {\n    \"prefix\": \"ros2_node_cpp\",\n    \"body\": [\n      \"#include \\\"rclcpp\u002Frclcpp.hpp\\\"\",\n      \"\",\n      \"class MyNode: public rclcpp::Node\",\n      \"{\",\n      \"  public:\",\n      \"    MyNode():Node(\\\"mynode_node_cpp\\\")\",\n      \"    {\",\n      \"      RCLCPP_INFO(this->get_logger(),\\\"Hello World!\\\");\",\n      \"    }\",\n      \"};\",\n      \"\",\n      \"int main(int argc, char ** argv)\",\n      \"{\",\n      \"  rclcpp::init(argc,argv);\",\n      \"\",\n      \"  rclcpp::spin(std::make_shared\u003CMyNode>());\",\n      \"\",\n      \"  rclcpp::shutdown();\",\n      \"  return 0;\",\n      \"}\"\n    ],\n    \"description\": \"ROS2节点模板(C++)\"\n  }\n}\n","JSON",[29,319,320,324,332,345,353,371,378,385,392,399,416,423,440,447,454,460,467,473,480,486,493,500,508,516,522,528,539,545],{"__ignoreMap":20},[32,321,322],{"class":34,"line":35},[32,323,82],{"class":63},[32,325,326,329],{"class":34,"line":46},[32,327,328],{"class":126},"\"ROS2节点模板(C++)\"",[32,330,331],{"class":63},": {\n",[32,333,334,337,339,342],{"class":34,"line":53},[32,335,336],{"class":126},"    \"prefix\"",[32,338,64],{"class":63},[32,340,341],{"class":42},"\"ros2_node_cpp\"",[32,343,344],{"class":63},",\n",[32,346,347,350],{"class":34,"line":79},[32,348,349],{"class":126},"    \"body\"",[32,351,352],{"class":63},": [\n",[32,354,355,358,361,364,366,369],{"class":34,"line":85},[32,356,357],{"class":42},"      \"#include ",[32,359,360],{"class":126},"\\\"",[32,362,363],{"class":42},"rclcpp\u002Frclcpp.hpp",[32,365,360],{"class":126},[32,367,368],{"class":42},"\"",[32,370,344],{"class":63},[32,372,373,376],{"class":34,"line":91},[32,374,375],{"class":42},"      \"\"",[32,377,344],{"class":63},[32,379,380,383],{"class":34,"line":112},[32,381,382],{"class":42},"      \"class MyNode: public rclcpp::Node\"",[32,384,344],{"class":63},[32,386,387,390],{"class":34,"line":118},[32,388,389],{"class":42},"      \"{\"",[32,391,344],{"class":63},[32,393,394,397],{"class":34,"line":145},[32,395,396],{"class":42},"      \"  public:\"",[32,398,344],{"class":63},[32,400,401,404,406,409,411,414],{"class":34,"line":151},[32,402,403],{"class":42},"      \"    MyNode():Node(",[32,405,360],{"class":126},[32,407,408],{"class":42},"mynode_node_cpp",[32,410,360],{"class":126},[32,412,413],{"class":42},")\"",[32,415,344],{"class":63},[32,417,418,421],{"class":34,"line":157},[32,419,420],{"class":42},"      \"    {\"",[32,422,344],{"class":63},[32,424,425,428,430,433,435,438],{"class":34,"line":162},[32,426,427],{"class":42},"      \"      RCLCPP_INFO(this->get_logger(),",[32,429,360],{"class":126},[32,431,432],{"class":42},"Hello World!",[32,434,360],{"class":126},[32,436,437],{"class":42},");\"",[32,439,344],{"class":63},[32,441,442,445],{"class":34,"line":193},[32,443,444],{"class":42},"      \"    }\"",[32,446,344],{"class":63},[32,448,449,452],{"class":34,"line":198},[32,450,451],{"class":42},"      \"};\"",[32,453,344],{"class":63},[32,455,456,458],{"class":34,"line":212},[32,457,375],{"class":42},[32,459,344],{"class":63},[32,461,462,465],{"class":34,"line":217},[32,463,464],{"class":42},"      \"int main(int argc, char ** argv)\"",[32,466,344],{"class":63},[32,468,469,471],{"class":34,"line":246},[32,470,389],{"class":42},[32,472,344],{"class":63},[32,474,475,478],{"class":34,"line":251},[32,476,477],{"class":42},"      \"  rclcpp::init(argc,argv);\"",[32,479,344],{"class":63},[32,481,482,484],{"class":34,"line":264},[32,483,375],{"class":42},[32,485,344],{"class":63},[32,487,488,491],{"class":34,"line":276},[32,489,490],{"class":42},"      \"  rclcpp::spin(std::make_shared\u003CMyNode>());\"",[32,492,344],{"class":63},[32,494,496,498],{"class":34,"line":495},21,[32,497,375],{"class":42},[32,499,344],{"class":63},[32,501,503,506],{"class":34,"line":502},22,[32,504,505],{"class":42},"      \"  rclcpp::shutdown();\"",[32,507,344],{"class":63},[32,509,511,514],{"class":34,"line":510},23,[32,512,513],{"class":42},"      \"  return 0;\"",[32,515,344],{"class":63},[32,517,519],{"class":34,"line":518},24,[32,520,521],{"class":42},"      \"}\"\n",[32,523,525],{"class":34,"line":524},25,[32,526,527],{"class":63},"    ],\n",[32,529,531,534,536],{"class":34,"line":530},26,[32,532,533],{"class":126},"    \"description\"",[32,535,64],{"class":63},[32,537,538],{"class":42},"\"ROS2节点模板(C++)\"\n",[32,540,542],{"class":34,"line":541},27,[32,543,544],{"class":63},"  }\n",[32,546,548],{"class":34,"line":547},28,[32,549,279],{"class":63},[15,551,552],{},[18,553],{"alt":20,"src":554},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage338.webp",[15,556,557],{},[18,558],{"alt":20,"src":559},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage339.webp",[561,562],"hr",{},[15,564,565],{},[18,566],{"alt":20,"src":567},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage340.webp",[15,569,570],{},[18,571],{"alt":20,"src":572},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage341.webp",[15,574,575],{},[18,576],{"alt":20,"src":577},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage342.webp",[15,579,580],{},"The first window is the server, and the second window is the client.",[15,582,583],{},[18,584],{"alt":20,"src":585},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage343.webp",[15,587,588],{},[18,589],{"alt":20,"src":590},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage344.webp",[15,592,593],{},"Communication involves at least two parties; a single person does not constitute communication.",[15,595,596],{},[18,597],{"alt":20,"src":598},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage345.webp",[15,600,601],{},[18,602],{"alt":20,"src":603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage346.webp",[15,605,606],{},[18,607],{"alt":20,"src":608},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage347.webp",[15,610,611],{},"Interface-oriented, with consistent topics and data carriers, allows for seamless integration.",[15,613,614],{},[18,615],{"alt":20,"src":616},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage348.webp",[15,618,619],{},[18,620],{"alt":20,"src":621},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage349.webp",[15,623,624],{},"Topic Communication: Can only transmit data in one direction",[15,626,627],{},"Service Communication: Bidirectional communication where both parties can act as client and server. The client sends data to the server, and the server responds to the client.",[15,629,630],{},"Action Communication: It is very similar to service communication, with a final response sent from the server to the client, but it also continuously sends feedback to the client in between.",[15,632,633,634,638],{},"Parameter Service: The parameter service is based on ",[635,636,637],"strong",{},"service communication",". A parameter client first sends a request, then retrieves data from the parameter service's data pool. It can also modify data in the pool, but cannot delete it.",[15,640,641],{},[18,642],{"alt":20,"src":643},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage350.webp",[15,645,646],{},[18,647],{"alt":20,"src":648},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage351.webp",[15,650,651],{},[18,652],{"alt":20,"src":653},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage352.webp",[15,655,656],{},[18,657],{"alt":20,"src":658},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage353.webp",[15,660,661],{},[18,662],{"alt":20,"src":663},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage354.webp",[15,665,666],{},[18,667],{"alt":20,"src":668},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage355.webp",[15,670,671],{},[18,672],{"alt":20,"src":673},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage356.webp",[15,675,676],{},"Parameter communication does not require you to define your own interface file — the system will generate one automatically. However, developers cannot see this file, as it is encapsulated.",[15,678,679],{},"The data we operate on has been encapsulated into a parameter object.",[561,681],{},[15,683,684],{},[18,685],{"alt":20,"src":686},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage357.webp",[15,688,689],{},"ros2 pkg create + package name (can be written in front or) + --build-type (build type) + ament_cmake \u002F ament_python + --dependencies (dependencies) + rclcpp (ROS 2's C++ client) + --node-name (node name) + node name",[15,691,692],{},[18,693],{"alt":20,"src":694},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage358.webp",[15,696,697],{},"Create a functional package in src.",[15,699,700],{},[18,701],{"alt":20,"src":702},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage359.webp",[10,704,706],{"id":705},"topic-communication_theory","Topic communication_theory",[15,708,709],{},[18,710],{"alt":20,"src":711},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage360.webp",[15,713,714],{},[18,715],{"alt":20,"src":716},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage361.webp",[15,718,719],{},[18,720],{"alt":20,"src":721},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage362.webp",[15,723,724],{},[18,725],{"alt":20,"src":726},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage363.webp",[15,728,729],{},"In ROS1, communication between nodes requires going through the master. Each node that transmits data must register the relevant data with the master, and the master then matches the information.",[15,731,732],{},[18,733],{"alt":20,"src":734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage364.webp",[15,736,737],{},[18,738],{"alt":20,"src":739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage365.webp",[15,741,742],{},"A publisher sends data, and both subscribers will receive the data.",[15,744,745],{},[18,746],{"alt":20,"src":747},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage366.webp",[15,749,750],{},[18,751],{"alt":20,"src":752},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage367.webp",[15,754,755],{},[18,756],{"alt":20,"src":757},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage368.webp",[10,759,761],{"id":760},"topic-communication-experiment-1-c","Topic Communication Experiment 1 (C++)",[15,763,764],{},[18,765],{"alt":20,"src":766},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage369.webp",[15,768,769],{},[18,770],{"alt":20,"src":771},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage370.webp",[15,773,774],{},[18,775],{"alt":20,"src":776},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage371.webp",[15,778,779],{},[18,780],{"alt":20,"src":781},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage372.webp",[15,783,784],{},[18,785],{"alt":20,"src":786},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage373.webp",[15,788,789],{},[18,790],{"alt":20,"src":791},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage374.webp",[23,793,795],{"className":315,"code":794,"language":317,"meta":20,"style":20},"ros2 pkg create cpp01_topic --build-type ament_cmake --dependencies rclcpp std_msgs base_interfaces_demo\n",[29,796,797],{"__ignoreMap":20},[32,798,799,802,805,808,811],{"class":34,"line":35},[32,800,801],{"class":63},"ros",[32,803,804],{"class":126},"2",[32,806,807],{"class":63}," pkg create cpp",[32,809,810],{"class":126},"01",[32,812,813],{"class":63},"_topic --build-type ament_cmake --dependencies rclcpp std_msgs base_interfaces_demo\n",[15,815,816],{},"Dependencies also require std_msgs and base_interfaces_demo (which contains our custom-defined necessary interfaces).",[15,818,819,820],{},"ros2 pkg create + ",[821,822,823,824],"package",{"name":20}," (can be placed before or after) + --build-type ",[825,826,827,828],"build",{"type":20}," + ament_cmake \u002F ament_python + --dependencies ",[829,830,831,832],"dependencies",{}," + rclcpp (the C++ client library for ROS2) + --node-name ",[833,834,835,836],"node",{"name":20}," + ",[833,837],{"name":20},[15,839,840],{},[18,841],{"alt":20,"src":842},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage375.webp",[561,844],{},[15,846,847],{},[18,848],{"alt":20,"src":849},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage376.webp",[15,851,852],{},[18,853],{"alt":20,"src":854},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage377.webp",[561,856],{},[15,858,859],{},"Publisher",[15,861,862],{},[18,863],{"alt":20,"src":864},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage378.webp",[15,866,867],{},"Timers are used to control the sending frequency, and a callback function called timer_callback is also executed within the timer.",[15,869,870],{},[18,871],{"alt":20,"src":872},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage379.webp",[15,874,875],{},"The count_ is a counter; each time this callback function is executed, count_ increments by 1.",[15,877,878],{},[18,879],{"alt":20,"src":880},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage380.webp",[15,882,883,884,886,887,889],{},"The ",[29,885,224],{}," function, once the program reaches this point, returns to the top. It returns to the top in order to call the callback function. Without this ",[29,888,224],{}," function, our callback function would not be executed.",[15,891,892,893,896],{},"From now on, whenever we create a node class object pointer, we must pass that pointer into the ",[29,894,895],{},"spin()"," function.",[561,898],{},[15,900,901],{},[18,902],{"alt":20,"src":903},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage381.webp",[15,905,906],{},[18,907],{"alt":20,"src":908},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage382.webp",[15,910,911],{},[18,912],{"alt":20,"src":913},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage383.webp",[15,915,916],{},[18,917],{"alt":20,"src":918},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage384.webp",[15,920,921],{},[18,922],{"alt":20,"src":923},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage385.webp",[15,925,926],{},[18,927],{"alt":20,"src":928},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage386.webp",[23,930,932],{"className":25,"code":931,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass Talker: public rclcpp::Node\n{\n  public:\n    Talker():Node(\"talker_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"发布节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CTalker>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,933,934,940,944,961,965,969,985,989,1008,1012,1016,1020,1042,1046,1056,1060,1083,1087,1097,1105],{"__ignoreMap":20},[32,935,936,938],{"class":34,"line":35},[32,937,39],{"class":38},[32,939,43],{"class":42},[32,941,942],{"class":34,"line":46},[32,943,50],{"emptyLinePlaceholder":49},[32,945,946,948,951,953,955,957,959],{"class":34,"line":53},[32,947,56],{"class":38},[32,949,950],{"class":59}," Talker",[32,952,64],{"class":63},[32,954,67],{"class":38},[32,956,70],{"class":59},[32,958,73],{"class":63},[32,960,76],{"class":59},[32,962,963],{"class":34,"line":79},[32,964,82],{"class":63},[32,966,967],{"class":34,"line":85},[32,968,88],{"class":38},[32,970,971,974,976,978,980,983],{"class":34,"line":91},[32,972,973],{"class":59},"    Talker",[32,975,97],{"class":63},[32,977,100],{"class":59},[32,979,103],{"class":63},[32,981,982],{"class":42},"\"talker_node_cpp\"",[32,984,109],{"class":63},[32,986,987],{"class":34,"line":112},[32,988,115],{"class":63},[32,990,991,993,995,997,999,1001,1003,1006],{"class":34,"line":118},[32,992,121],{"class":59},[32,994,103],{"class":63},[32,996,127],{"class":126},[32,998,130],{"class":63},[32,1000,133],{"class":59},[32,1002,136],{"class":63},[32,1004,1005],{"class":42},"\"发布节点创建！\"",[32,1007,142],{"class":63},[32,1009,1010],{"class":34,"line":145},[32,1011,148],{"class":63},[32,1013,1014],{"class":34,"line":151},[32,1015,154],{"class":63},[32,1017,1018],{"class":34,"line":157},[32,1019,50],{"emptyLinePlaceholder":49},[32,1021,1022,1024,1026,1028,1030,1032,1034,1036,1038,1040],{"class":34,"line":162},[32,1023,165],{"class":38},[32,1025,168],{"class":59},[32,1027,103],{"class":63},[32,1029,165],{"class":38},[32,1031,176],{"class":175},[32,1033,179],{"class":63},[32,1035,182],{"class":38},[32,1037,185],{"class":38},[32,1039,188],{"class":175},[32,1041,109],{"class":63},[32,1043,1044],{"class":34,"line":193},[32,1045,82],{"class":63},[32,1047,1048,1050,1052,1054],{"class":34,"line":198},[32,1049,201],{"class":59},[32,1051,73],{"class":63},[32,1053,206],{"class":59},[32,1055,209],{"class":63},[32,1057,1058],{"class":34,"line":212},[32,1059,50],{"emptyLinePlaceholder":49},[32,1061,1062,1064,1066,1068,1070,1072,1074,1076,1078,1081],{"class":34,"line":217},[32,1063,201],{"class":59},[32,1065,73],{"class":63},[32,1067,224],{"class":59},[32,1069,103],{"class":63},[32,1071,229],{"class":59},[32,1073,73],{"class":63},[32,1075,234],{"class":59},[32,1077,237],{"class":63},[32,1079,1080],{"class":59},"Talker",[32,1082,243],{"class":63},[32,1084,1085],{"class":34,"line":246},[32,1086,50],{"emptyLinePlaceholder":49},[32,1088,1089,1091,1093,1095],{"class":34,"line":251},[32,1090,201],{"class":59},[32,1092,73],{"class":63},[32,1094,258],{"class":59},[32,1096,261],{"class":63},[32,1098,1099,1101,1103],{"class":34,"line":264},[32,1100,267],{"class":38},[32,1102,270],{"class":126},[32,1104,273],{"class":63},[32,1106,1107],{"class":34,"line":276},[32,1108,279],{"class":63},[15,1110,1111],{},"At this point, the program is in a suspended state and will keep running because of the spin function.",[15,1113,1114],{},"To exit, press Ctrl+C.",[15,1116,1117],{},"The type we need is in std_msgs, so we have to include the header file.",[15,1119,1120],{},[18,1121],{"alt":20,"src":1122},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage387.webp",[15,1124,1125],{},"The first parameter of create_publisher() is the topic name, which is a string.",[15,1127,1128],{},"The second input parameter of create_publisher() is related to QoS (Quality of Service) and represents the queue depth—a numerical value. For now, you can simply set it to 10 or 20.",[15,1130,1131],{},"In other words, when the network quality is poor and messages cannot be sent, we can temporarily store the data in a queue. For example, if the queue is set to 10, it can hold up to 10 items. When the network recovers, we retrieve data from the queue and send it out.",[15,1133,1134],{},"Other entry parameters have default values, so you can ignore them for now.",[15,1136,1137],{},"The return value is a pointer to a publisher.",[15,1139,1140],{},[18,1141],{"alt":20,"src":1142},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage388.webp",[15,1144,1145],{},[18,1146],{"alt":20,"src":1147},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage389.webp",[15,1149,1150],{},[18,1151],{"alt":20,"src":1152},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage390.webp",[15,1154,1155],{},[18,1156],{"alt":20,"src":1157},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage391.webp",[15,1159,1160],{},"Create a timer. This function has a template, but the template has default values so it can be left unset.",[15,1162,1163],{},"Then three entry parameters,",[15,1165,1166],{},"The first input parameter is the duration, i.e., the period.",[15,1168,1169],{},"The second entry parameter is a callback function.",[15,1171,1172],{},"The third input parameter has a default value, so ignore it for now.",[15,1174,1175],{},[18,1176],{"alt":20,"src":1177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage392.webp",[15,1179,1180],{},"The advantage of using this namespace is that in the first entry parameter, you can directly fill in the time and unit.",[15,1182,1183],{},"If it's 1s, write 1s; if it's 100ms, fill in 100ms.",[15,1185,1186],{},[18,1187],{"alt":20,"src":1188},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage393.webp",[15,1190,1191],{},[18,1192],{"alt":20,"src":1193},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage394.webp",[15,1195,1196],{},"This function also has a return value, which is a pointer related to the timer.",[15,1198,1199],{},[18,1200],{"alt":20,"src":1201},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage395.webp",[15,1203,1204],{},[18,1205],{"alt":20,"src":1206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage396.webp",[15,1208,1209],{},[18,1210],{"alt":20,"src":1211},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage397.webp",[15,1213,1214],{},"This function has multiple overloads; choose the one that suits your needs.",[15,1216,1217],{},[18,1218],{"alt":20,"src":1219},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage398.webp",[15,1221,1222],{},"To publish an object, you must first create it.",[15,1224,1225],{},[18,1226],{"alt":20,"src":1227},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage399.webp",[15,1229,1230],{},[18,1231],{"alt":20,"src":1232},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage400.webp",[15,1234,1235],{},[18,1236],{"alt":20,"src":1237},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage401.webp",[15,1239,1240],{},"Convert count to a string and send it.",[15,1242,1243],{},[18,1244],{"alt":20,"src":1245},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage402.webp",[15,1247,1248,1249,1252],{},"Because it is of type ",[29,1250,1251],{},"std::string",", we need to convert it to a C-style string.",[15,1254,1255],{},[18,1256],{"alt":20,"src":1257},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage403.webp",[15,1259,1260],{},[18,1261],{"alt":20,"src":1262},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage404.webp",[15,1264,1265],{},[18,1266],{"alt":20,"src":1267},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage405.webp",[15,1269,1270,1271,1274],{},"Try to assign an initial value of 0 to ",[29,1272,1273],{},"count"," in the constructor whenever possible.",[23,1276,1278],{"className":25,"code":1277,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"std_msgs\u002Fmsg\u002Fstring.hpp\"\n\nusing namespace std::chrono_literals;\n\nclass Talker: public rclcpp::Node\n{\n  public:\n    Talker():Node(\"talker_node_cpp\")，count(0)\n    {\n      RCLCPP_INFO(this->get_logger(),\"发布节点创建！\");\n      publisher_ = this->create_publisher\u003Cstd_msgs::msg::String>(\"chatter\",10);\n      timer_ = this->create_wall_timer(1s,std::bind(&Talker::on_timer,this));\n    }\n  private:\n    void on_timer()\n    {\n      auto message = std_msgs::msg::String();\n      message.data = \"hello world!\" + std::to_string(count++);\n      RCLCPP_INFO(this->get_logger(),\"发布方发布的消息：%s\",message.data.c_str());\n      publisher_->publish(message);\n    }\n    rclcpp::Publisher\u003Cstd_msgs::msg::String>::SharedPtr publisher_;\n    rclcpp::TimerBase::SharedPtr timer_;\n    size_t count;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CTalker>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,1279,1280,1286,1293,1297,1315,1319,1335,1339,1343,1367,1371,1389,1432,1478,1482,1487,1498,1502,1526,1554,1585,1596,1600,1624,1636,1644,1648,1652,1674,1679,1690,1695,1718,1723,1734,1743],{"__ignoreMap":20},[32,1281,1282,1284],{"class":34,"line":35},[32,1283,39],{"class":38},[32,1285,43],{"class":42},[32,1287,1288,1290],{"class":34,"line":46},[32,1289,39],{"class":38},[32,1291,1292],{"class":42}," \"std_msgs\u002Fmsg\u002Fstring.hpp\"\n",[32,1294,1295],{"class":34,"line":53},[32,1296,50],{"emptyLinePlaceholder":49},[32,1298,1299,1302,1305,1308,1310,1313],{"class":34,"line":79},[32,1300,1301],{"class":38},"using",[32,1303,1304],{"class":38}," namespace",[32,1306,1307],{"class":59}," std",[32,1309,73],{"class":63},[32,1311,1312],{"class":59},"chrono_literals",[32,1314,273],{"class":63},[32,1316,1317],{"class":34,"line":85},[32,1318,50],{"emptyLinePlaceholder":49},[32,1320,1321,1323,1325,1327,1329,1331,1333],{"class":34,"line":91},[32,1322,56],{"class":38},[32,1324,950],{"class":59},[32,1326,64],{"class":63},[32,1328,67],{"class":38},[32,1330,70],{"class":59},[32,1332,73],{"class":63},[32,1334,76],{"class":59},[32,1336,1337],{"class":34,"line":112},[32,1338,82],{"class":63},[32,1340,1341],{"class":34,"line":118},[32,1342,88],{"class":38},[32,1344,1345,1347,1349,1351,1353,1355,1358,1360,1362,1365],{"class":34,"line":145},[32,1346,973],{"class":59},[32,1348,97],{"class":63},[32,1350,100],{"class":59},[32,1352,103],{"class":63},[32,1354,982],{"class":42},[32,1356,1357],{"class":63},")，",[32,1359,1273],{"class":59},[32,1361,103],{"class":63},[32,1363,1364],{"class":126},"0",[32,1366,109],{"class":63},[32,1368,1369],{"class":34,"line":151},[32,1370,115],{"class":63},[32,1372,1373,1375,1377,1379,1381,1383,1385,1387],{"class":34,"line":157},[32,1374,121],{"class":59},[32,1376,103],{"class":63},[32,1378,127],{"class":126},[32,1380,130],{"class":63},[32,1382,133],{"class":59},[32,1384,136],{"class":63},[32,1386,1005],{"class":42},[32,1388,142],{"class":63},[32,1390,1391,1394,1397,1400,1403,1405,1408,1410,1413,1416,1419,1421,1424,1427,1430],{"class":34,"line":162},[32,1392,1393],{"class":63},"      publisher_ ",[32,1395,1396],{"class":38},"=",[32,1398,1399],{"class":126}," this",[32,1401,1402],{"class":63},"->create_publisher",[32,1404,237],{"class":38},[32,1406,1407],{"class":59},"std_msgs",[32,1409,73],{"class":63},[32,1411,1412],{"class":59},"msg",[32,1414,1415],{"class":63},"::String",[32,1417,1418],{"class":38},">",[32,1420,103],{"class":63},[32,1422,1423],{"class":42},"\"chatter\"",[32,1425,1426],{"class":63},",",[32,1428,1429],{"class":126},"10",[32,1431,142],{"class":63},[32,1433,1434,1437,1439,1441,1443,1446,1448,1451,1454,1456,1458,1460,1463,1465,1468,1470,1473,1475],{"class":34,"line":193},[32,1435,1436],{"class":63},"      timer_ ",[32,1438,1396],{"class":38},[32,1440,1399],{"class":126},[32,1442,130],{"class":63},[32,1444,1445],{"class":59},"create_wall_timer",[32,1447,103],{"class":63},[32,1449,1450],{"class":126},"1",[32,1452,1453],{"class":38},"s",[32,1455,1426],{"class":63},[32,1457,229],{"class":59},[32,1459,73],{"class":63},[32,1461,1462],{"class":59},"bind",[32,1464,103],{"class":63},[32,1466,1467],{"class":38},"&",[32,1469,1080],{"class":59},[32,1471,1472],{"class":63},"::on_timer,",[32,1474,127],{"class":126},[32,1476,1477],{"class":63},"));\n",[32,1479,1480],{"class":34,"line":198},[32,1481,148],{"class":63},[32,1483,1484],{"class":34,"line":212},[32,1485,1486],{"class":38},"  private:\n",[32,1488,1489,1492,1495],{"class":34,"line":217},[32,1490,1491],{"class":38},"    void",[32,1493,1494],{"class":59}," on_timer",[32,1496,1497],{"class":63},"()\n",[32,1499,1500],{"class":34,"line":246},[32,1501,115],{"class":63},[32,1503,1504,1507,1510,1512,1515,1517,1519,1521,1524],{"class":34,"line":251},[32,1505,1506],{"class":38},"      auto",[32,1508,1509],{"class":63}," message ",[32,1511,1396],{"class":38},[32,1513,1514],{"class":59}," std_msgs",[32,1516,73],{"class":63},[32,1518,1412],{"class":59},[32,1520,73],{"class":63},[32,1522,1523],{"class":59},"String",[32,1525,261],{"class":63},[32,1527,1528,1531,1533,1536,1539,1541,1543,1546,1549,1552],{"class":34,"line":264},[32,1529,1530],{"class":63},"      message.data ",[32,1532,1396],{"class":38},[32,1534,1535],{"class":42}," \"hello world!\"",[32,1537,1538],{"class":38}," +",[32,1540,1307],{"class":59},[32,1542,73],{"class":63},[32,1544,1545],{"class":59},"to_string",[32,1547,1548],{"class":63},"(count",[32,1550,1551],{"class":38},"++",[32,1553,142],{"class":63},[32,1555,1556,1558,1560,1562,1564,1566,1568,1571,1574,1576,1579,1582],{"class":34,"line":276},[32,1557,121],{"class":59},[32,1559,103],{"class":63},[32,1561,127],{"class":126},[32,1563,130],{"class":63},[32,1565,133],{"class":59},[32,1567,136],{"class":63},[32,1569,1570],{"class":42},"\"发布方发布的消息：",[32,1572,1573],{"class":126},"%s",[32,1575,368],{"class":42},[32,1577,1578],{"class":63},",message.data.",[32,1580,1581],{"class":59},"c_str",[32,1583,1584],{"class":63},"());\n",[32,1586,1587,1590,1593],{"class":34,"line":495},[32,1588,1589],{"class":63},"      publisher_->",[32,1591,1592],{"class":59},"publish",[32,1594,1595],{"class":63},"(message);\n",[32,1597,1598],{"class":34,"line":502},[32,1599,148],{"class":63},[32,1601,1602,1605,1607,1609,1611,1613,1615,1617,1619,1621],{"class":34,"line":510},[32,1603,1604],{"class":59},"    rclcpp",[32,1606,73],{"class":63},[32,1608,859],{"class":59},[32,1610,237],{"class":63},[32,1612,1407],{"class":59},[32,1614,73],{"class":63},[32,1616,1412],{"class":59},[32,1618,73],{"class":63},[32,1620,1523],{"class":59},[32,1622,1623],{"class":63},">::SharedPtr publisher_;\n",[32,1625,1626,1628,1630,1633],{"class":34,"line":518},[32,1627,1604],{"class":59},[32,1629,73],{"class":63},[32,1631,1632],{"class":59},"TimerBase",[32,1634,1635],{"class":63},"::SharedPtr timer_;\n",[32,1637,1638,1641],{"class":34,"line":524},[32,1639,1640],{"class":38},"    size_t",[32,1642,1643],{"class":63}," count;\n",[32,1645,1646],{"class":34,"line":530},[32,1647,154],{"class":63},[32,1649,1650],{"class":34,"line":541},[32,1651,50],{"emptyLinePlaceholder":49},[32,1653,1654,1656,1658,1660,1662,1664,1666,1668,1670,1672],{"class":34,"line":547},[32,1655,165],{"class":38},[32,1657,168],{"class":59},[32,1659,103],{"class":63},[32,1661,165],{"class":38},[32,1663,176],{"class":175},[32,1665,179],{"class":63},[32,1667,182],{"class":38},[32,1669,185],{"class":38},[32,1671,188],{"class":175},[32,1673,109],{"class":63},[32,1675,1677],{"class":34,"line":1676},29,[32,1678,82],{"class":63},[32,1680,1682,1684,1686,1688],{"class":34,"line":1681},30,[32,1683,201],{"class":59},[32,1685,73],{"class":63},[32,1687,206],{"class":59},[32,1689,209],{"class":63},[32,1691,1693],{"class":34,"line":1692},31,[32,1694,50],{"emptyLinePlaceholder":49},[32,1696,1698,1700,1702,1704,1706,1708,1710,1712,1714,1716],{"class":34,"line":1697},32,[32,1699,201],{"class":59},[32,1701,73],{"class":63},[32,1703,224],{"class":59},[32,1705,103],{"class":63},[32,1707,229],{"class":59},[32,1709,73],{"class":63},[32,1711,234],{"class":59},[32,1713,237],{"class":63},[32,1715,1080],{"class":59},[32,1717,243],{"class":63},[32,1719,1721],{"class":34,"line":1720},33,[32,1722,50],{"emptyLinePlaceholder":49},[32,1724,1726,1728,1730,1732],{"class":34,"line":1725},34,[32,1727,201],{"class":59},[32,1729,73],{"class":63},[32,1731,258],{"class":59},[32,1733,261],{"class":63},[32,1735,1737,1739,1741],{"class":34,"line":1736},35,[32,1738,267],{"class":38},[32,1740,270],{"class":126},[32,1742,273],{"class":63},[32,1744,1746],{"class":34,"line":1745},36,[32,1747,279],{"class":63},[15,1749,1750],{},[18,1751],{"alt":20,"src":1752},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage406.webp",[15,1754,1755],{},"But it doesn't necessarily mean the message was actually published.",[15,1757,1758],{},"Verification method:",[23,1760,1764],{"className":1761,"code":1762,"language":1763,"meta":20,"style":20},"language-bash shiki shiki-themes github-light github-dark","ros2 topic echo \u002Fxxx\n","bash",[29,1765,1766],{"__ignoreMap":20},[32,1767,1768,1771,1774,1777],{"class":34,"line":35},[32,1769,1770],{"class":59},"ros2",[32,1772,1773],{"class":42}," topic",[32,1775,1776],{"class":42}," echo",[32,1778,1779],{"class":42}," \u002Fxxx\n",[15,1781,1782],{},[18,1783],{"alt":20,"src":1784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage407.webp",[15,1786,1787],{},"This is how you can confirm that the message was published to the chatter topic.",[561,1789],{},[15,1791,1792],{},[18,1793],{"alt":20,"src":1794},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage408.webp",[15,1796,1797],{},[18,1798],{"alt":20,"src":1799},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage409.webp",[15,1801,1802],{},[18,1803],{"alt":20,"src":1804},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage410.webp",[15,1806,1807],{},[18,1808],{"alt":20,"src":1809},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage411.webp",[15,1811,1812],{},[18,1813],{"alt":20,"src":1814},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage412.webp",[15,1816,1817],{},[18,1818],{"alt":20,"src":1819},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage413.webp",[15,1821,1822],{},[18,1823],{"alt":20,"src":1824},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage414.webp",[15,1826,1827],{},[18,1828],{"alt":20,"src":1829},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage415.webp",[15,1831,1832],{},[18,1833],{"alt":20,"src":1834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage416.webp",[15,1836,1837],{},[18,1838],{"alt":20,"src":1839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage417.webp",[23,1841,1843],{"className":25,"code":1842,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass Listener: public rclcpp::Node\n{\npublic:\n    Listener():Node(\"listener_node_cpp\")\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅方创建!\");\n    }\n};\n\nint main(int argc, char * argv[])\n{\n    rclcpp::init(argc,argv);\n\n    rclcpp::spin(std::make_shared\u003CListener>());\n\n    rclcpp::shutdown();\n    return 0;\n}\n",[29,1844,1845,1851,1855,1872,1876,1881,1897,1901,1921,1925,1929,1933,1957,1961,1971,1975,1998,2002,2012,2021],{"__ignoreMap":20},[32,1846,1847,1849],{"class":34,"line":35},[32,1848,39],{"class":38},[32,1850,43],{"class":42},[32,1852,1853],{"class":34,"line":46},[32,1854,50],{"emptyLinePlaceholder":49},[32,1856,1857,1859,1862,1864,1866,1868,1870],{"class":34,"line":53},[32,1858,56],{"class":38},[32,1860,1861],{"class":59}," Listener",[32,1863,64],{"class":63},[32,1865,67],{"class":38},[32,1867,70],{"class":59},[32,1869,73],{"class":63},[32,1871,76],{"class":59},[32,1873,1874],{"class":34,"line":79},[32,1875,82],{"class":63},[32,1877,1878],{"class":34,"line":85},[32,1879,1880],{"class":38},"public:\n",[32,1882,1883,1886,1888,1890,1892,1895],{"class":34,"line":91},[32,1884,1885],{"class":59},"    Listener",[32,1887,97],{"class":63},[32,1889,100],{"class":59},[32,1891,103],{"class":63},[32,1893,1894],{"class":42},"\"listener_node_cpp\"",[32,1896,109],{"class":63},[32,1898,1899],{"class":34,"line":112},[32,1900,115],{"class":63},[32,1902,1903,1906,1908,1910,1912,1914,1916,1919],{"class":34,"line":118},[32,1904,1905],{"class":59},"        RCLCPP_INFO",[32,1907,103],{"class":63},[32,1909,127],{"class":126},[32,1911,130],{"class":63},[32,1913,133],{"class":59},[32,1915,136],{"class":63},[32,1917,1918],{"class":42},"\"订阅方创建!\"",[32,1920,142],{"class":63},[32,1922,1923],{"class":34,"line":145},[32,1924,148],{"class":63},[32,1926,1927],{"class":34,"line":151},[32,1928,154],{"class":63},[32,1930,1931],{"class":34,"line":157},[32,1932,50],{"emptyLinePlaceholder":49},[32,1934,1935,1937,1939,1941,1943,1945,1947,1949,1952,1954],{"class":34,"line":162},[32,1936,165],{"class":38},[32,1938,168],{"class":59},[32,1940,103],{"class":63},[32,1942,165],{"class":38},[32,1944,176],{"class":175},[32,1946,179],{"class":63},[32,1948,182],{"class":38},[32,1950,1951],{"class":38}," *",[32,1953,188],{"class":175},[32,1955,1956],{"class":63},"[])\n",[32,1958,1959],{"class":34,"line":193},[32,1960,82],{"class":63},[32,1962,1963,1965,1967,1969],{"class":34,"line":198},[32,1964,1604],{"class":59},[32,1966,73],{"class":63},[32,1968,206],{"class":59},[32,1970,209],{"class":63},[32,1972,1973],{"class":34,"line":212},[32,1974,50],{"emptyLinePlaceholder":49},[32,1976,1977,1979,1981,1983,1985,1987,1989,1991,1993,1996],{"class":34,"line":217},[32,1978,1604],{"class":59},[32,1980,73],{"class":63},[32,1982,224],{"class":59},[32,1984,103],{"class":63},[32,1986,229],{"class":59},[32,1988,73],{"class":63},[32,1990,234],{"class":59},[32,1992,237],{"class":63},[32,1994,1995],{"class":59},"Listener",[32,1997,243],{"class":63},[32,1999,2000],{"class":34,"line":246},[32,2001,50],{"emptyLinePlaceholder":49},[32,2003,2004,2006,2008,2010],{"class":34,"line":251},[32,2005,1604],{"class":59},[32,2007,73],{"class":63},[32,2009,258],{"class":59},[32,2011,261],{"class":63},[32,2013,2014,2017,2019],{"class":34,"line":264},[32,2015,2016],{"class":38},"    return",[32,2018,270],{"class":126},[32,2020,273],{"class":63},[32,2022,2023],{"class":34,"line":276},[32,2024,279],{"class":63},[15,2026,2027],{},[18,2028],{"alt":20,"src":2029},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage418.webp",[15,2031,2032],{},"Don't forget to edit the configuration file before compiling.",[15,2034,2035],{},[18,2036],{"alt":20,"src":2037},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage419.webp",[15,2039,2040],{},"The dependency package has been automatically generated, so you don't need to worry about it.",[15,2042,2043],{},[18,2044],{"alt":20,"src":2045},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage420.webp",[15,2047,2048],{},"Mainly revise these three major parts.",[15,2050,2051],{},[18,2052],{"alt":20,"src":2053},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage421.webp",[15,2055,2056],{},[18,2057],{"alt":20,"src":2058},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage422.webp",[15,2060,2061],{},[18,2062],{"alt":20,"src":2063},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage423.webp",[15,2065,2066],{},[18,2067],{"alt":20,"src":2068},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage424.webp",[15,2070,2071],{},[18,2072],{"alt":20,"src":2073},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage425.webp",[15,2075,2076],{},"There are a total of 5 input parameters, with the last two having default values.",[15,2078,2079],{},"The first entry parameter is the topic name, which must match the publisher's.",[15,2081,2082],{},"The second input parameter is QoS, which stands for Quality of Service management, queue depth. You can temporarily set it to 10 or 20 arbitrarily; refer to the QoS explanation on the publisher side.",[15,2084,2085],{},"The third entry parameter is a callback function. Once data is received, this callback function is triggered.",[15,2087,2088],{},"The return value is a pointer to a subscription object.",[15,2090,2091],{},[18,2092],{"alt":20,"src":2093},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage426.webp",[15,2095,2096],{},[18,2097],{"alt":20,"src":2098},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage427.webp",[15,2100,2101],{},"std::placeholders::_1 is a placeholder, where _1 represents one. This is where the message is supposed to be inserted.",[15,2103,2104],{},[18,2105],{"alt":20,"src":2106},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage428.webp",[15,2108,2109],{},[18,2110],{"alt":20,"src":2111},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage429.webp",[15,2113,2114],{},[18,2115],{"alt":20,"src":2116},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage430.webp",[15,2118,2119],{},[18,2120],{"alt":20,"src":2121},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage431.webp",[23,2123,2125],{"className":25,"code":2124,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"std_msgs\u002Fmsg\u002Fstring.hpp\"\n\nclass Listener: public rclcpp::Node\n{\npublic:\n    Listener():Node(\"listener_node_cpp\")\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅方创建!\");\n        subscription_ = this->create_subscription\u003Cstd_msgs::msg::String>(\"chatter\",10,std::bind(&Listener::do_callback,this,std::placeholders::_1));\n\n    }\nprivate:\n    void do_callback(const std_msgs::msg::String &msg)\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅到的消息是:%s\",msg.data.c_str());\n    }\n    rclcpp::Subscription\u003Cstd_msgs::msg::String>::SharedPtr subscription_;\n};\n\nint main(int argc, char * argv[])\n{\n    rclcpp::init(argc,argv);\n\n    rclcpp::spin(std::make_shared\u003CListener>());\n\n    rclcpp::shutdown();\n    return 0;\n}\n",[29,2126,2127,2133,2139,2143,2159,2163,2167,2181,2185,2203,2266,2270,2274,2279,2308,2312,2340,2344,2368,2372,2376,2398,2402,2412,2416,2438,2442,2452,2460],{"__ignoreMap":20},[32,2128,2129,2131],{"class":34,"line":35},[32,2130,39],{"class":38},[32,2132,43],{"class":42},[32,2134,2135,2137],{"class":34,"line":46},[32,2136,39],{"class":38},[32,2138,1292],{"class":42},[32,2140,2141],{"class":34,"line":53},[32,2142,50],{"emptyLinePlaceholder":49},[32,2144,2145,2147,2149,2151,2153,2155,2157],{"class":34,"line":79},[32,2146,56],{"class":38},[32,2148,1861],{"class":59},[32,2150,64],{"class":63},[32,2152,67],{"class":38},[32,2154,70],{"class":59},[32,2156,73],{"class":63},[32,2158,76],{"class":59},[32,2160,2161],{"class":34,"line":85},[32,2162,82],{"class":63},[32,2164,2165],{"class":34,"line":91},[32,2166,1880],{"class":38},[32,2168,2169,2171,2173,2175,2177,2179],{"class":34,"line":112},[32,2170,1885],{"class":59},[32,2172,97],{"class":63},[32,2174,100],{"class":59},[32,2176,103],{"class":63},[32,2178,1894],{"class":42},[32,2180,109],{"class":63},[32,2182,2183],{"class":34,"line":118},[32,2184,115],{"class":63},[32,2186,2187,2189,2191,2193,2195,2197,2199,2201],{"class":34,"line":145},[32,2188,1905],{"class":59},[32,2190,103],{"class":63},[32,2192,127],{"class":126},[32,2194,130],{"class":63},[32,2196,133],{"class":59},[32,2198,136],{"class":63},[32,2200,1918],{"class":42},[32,2202,142],{"class":63},[32,2204,2205,2208,2210,2212,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2252,2254,2256,2258,2260,2263],{"class":34,"line":151},[32,2206,2207],{"class":63},"        subscription_ ",[32,2209,1396],{"class":38},[32,2211,1399],{"class":126},[32,2213,2214],{"class":63},"->create_subscription",[32,2216,237],{"class":38},[32,2218,1407],{"class":59},[32,2220,73],{"class":63},[32,2222,1412],{"class":59},[32,2224,1415],{"class":63},[32,2226,1418],{"class":38},[32,2228,103],{"class":63},[32,2230,1423],{"class":42},[32,2232,1426],{"class":63},[32,2234,1429],{"class":126},[32,2236,1426],{"class":63},[32,2238,229],{"class":59},[32,2240,73],{"class":63},[32,2242,1462],{"class":59},[32,2244,103],{"class":63},[32,2246,1467],{"class":38},[32,2248,1995],{"class":59},[32,2250,2251],{"class":63},"::do_callback,",[32,2253,127],{"class":126},[32,2255,1426],{"class":63},[32,2257,229],{"class":59},[32,2259,73],{"class":63},[32,2261,2262],{"class":59},"placeholders",[32,2264,2265],{"class":63},"::_1));\n",[32,2267,2268],{"class":34,"line":157},[32,2269,50],{"emptyLinePlaceholder":49},[32,2271,2272],{"class":34,"line":162},[32,2273,148],{"class":63},[32,2275,2276],{"class":34,"line":193},[32,2277,2278],{"class":38},"private:\n",[32,2280,2281,2283,2286,2288,2291,2293,2295,2297,2299,2301,2304,2306],{"class":34,"line":198},[32,2282,1491],{"class":38},[32,2284,2285],{"class":59}," do_callback",[32,2287,103],{"class":63},[32,2289,2290],{"class":38},"const",[32,2292,1514],{"class":59},[32,2294,73],{"class":63},[32,2296,1412],{"class":59},[32,2298,73],{"class":63},[32,2300,1523],{"class":59},[32,2302,2303],{"class":38}," &",[32,2305,1412],{"class":175},[32,2307,109],{"class":63},[32,2309,2310],{"class":34,"line":212},[32,2311,115],{"class":63},[32,2313,2314,2316,2318,2320,2322,2324,2326,2329,2331,2333,2336,2338],{"class":34,"line":217},[32,2315,1905],{"class":59},[32,2317,103],{"class":63},[32,2319,127],{"class":126},[32,2321,130],{"class":63},[32,2323,133],{"class":59},[32,2325,136],{"class":63},[32,2327,2328],{"class":42},"\"订阅到的消息是:",[32,2330,1573],{"class":126},[32,2332,368],{"class":42},[32,2334,2335],{"class":63},",msg.data.",[32,2337,1581],{"class":59},[32,2339,1584],{"class":63},[32,2341,2342],{"class":34,"line":246},[32,2343,148],{"class":63},[32,2345,2346,2348,2350,2353,2355,2357,2359,2361,2363,2365],{"class":34,"line":251},[32,2347,1604],{"class":59},[32,2349,73],{"class":63},[32,2351,2352],{"class":59},"Subscription",[32,2354,237],{"class":63},[32,2356,1407],{"class":59},[32,2358,73],{"class":63},[32,2360,1412],{"class":59},[32,2362,73],{"class":63},[32,2364,1523],{"class":59},[32,2366,2367],{"class":63},">::SharedPtr subscription_;\n",[32,2369,2370],{"class":34,"line":264},[32,2371,154],{"class":63},[32,2373,2374],{"class":34,"line":276},[32,2375,50],{"emptyLinePlaceholder":49},[32,2377,2378,2380,2382,2384,2386,2388,2390,2392,2394,2396],{"class":34,"line":495},[32,2379,165],{"class":38},[32,2381,168],{"class":59},[32,2383,103],{"class":63},[32,2385,165],{"class":38},[32,2387,176],{"class":175},[32,2389,179],{"class":63},[32,2391,182],{"class":38},[32,2393,1951],{"class":38},[32,2395,188],{"class":175},[32,2397,1956],{"class":63},[32,2399,2400],{"class":34,"line":502},[32,2401,82],{"class":63},[32,2403,2404,2406,2408,2410],{"class":34,"line":510},[32,2405,1604],{"class":59},[32,2407,73],{"class":63},[32,2409,206],{"class":59},[32,2411,209],{"class":63},[32,2413,2414],{"class":34,"line":518},[32,2415,50],{"emptyLinePlaceholder":49},[32,2417,2418,2420,2422,2424,2426,2428,2430,2432,2434,2436],{"class":34,"line":524},[32,2419,1604],{"class":59},[32,2421,73],{"class":63},[32,2423,224],{"class":59},[32,2425,103],{"class":63},[32,2427,229],{"class":59},[32,2429,73],{"class":63},[32,2431,234],{"class":59},[32,2433,237],{"class":63},[32,2435,1995],{"class":59},[32,2437,243],{"class":63},[32,2439,2440],{"class":34,"line":530},[32,2441,50],{"emptyLinePlaceholder":49},[32,2443,2444,2446,2448,2450],{"class":34,"line":541},[32,2445,1604],{"class":59},[32,2447,73],{"class":63},[32,2449,258],{"class":59},[32,2451,261],{"class":63},[32,2453,2454,2456,2458],{"class":34,"line":547},[32,2455,2016],{"class":38},[32,2457,270],{"class":126},[32,2459,273],{"class":63},[32,2461,2462],{"class":34,"line":1676},[32,2463,279],{"class":63},[10,2465,2467],{"id":2466},"topic-communication-custom-interface-information","Topic Communication: Custom Interface Information",[15,2469,2470],{},[18,2471],{"alt":20,"src":2472},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage432.webp",[15,2474,2475],{},[18,2476],{"alt":20,"src":2477},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage433.webp",[15,2479,2480],{},[18,2481],{"alt":20,"src":2482},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage434.webp",[15,2484,2485],{},[18,2486],{"alt":20,"src":2487},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage435.webp",[15,2489,2490],{},"Build dependencies",[15,2492,2493],{},"Install dependencies",[15,2495,2496],{},"The functional package group to which the current functional package belongs",[15,2498,2499],{},[18,2500],{"alt":20,"src":2501},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage436.webp",[15,2503,2504,2507],{},[29,2505,2506],{},"find_package"," is designed to pass build dependencies through.",[15,2509,2510],{},"Then you also need to specify the path to the interface file currently being built (with this setting, the .msg file can be converted into the corresponding C++ and Python code).",[15,2512,2513],{},[18,2514],{"alt":20,"src":2515},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage437.webp",[15,2517,2518],{},[18,2519],{"alt":20,"src":2520},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage438.webp",[15,2522,2523],{},[18,2524],{"alt":20,"src":2525},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage439.webp",[15,2527,2528],{},"The filename can be customized, but the first letter must be capitalized.",[15,2530,2531],{},[18,2532],{"alt":20,"src":2533},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage440.webp",[15,2535,2536],{},[18,2537],{"alt":20,"src":2538},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage441.webp",[15,2540,2541],{},[18,2542],{"alt":20,"src":2543},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage442.webp",[15,2545,2546],{},"After finishing, test_depend reported an error. Could you please provide more details about the error message and the context in which it occurred? This will help in diagnosing the issue.",[15,2548,2549],{},[18,2550],{"alt":20,"src":2551},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage443.webp",[15,2553,2554],{},"Just delete it.",[15,2556,2557],{},"The build dependencies start with rosidl. Let's check with grep.",[23,2559,2561],{"className":1761,"code":2560,"language":1763,"meta":20,"style":20},"ros2 pkg list | grep -i rosidl\n",[29,2562,2563],{"__ignoreMap":20},[32,2564,2565,2567,2570,2573,2576,2579,2582],{"class":34,"line":35},[32,2566,1770],{"class":59},[32,2568,2569],{"class":42}," pkg",[32,2571,2572],{"class":42}," list",[32,2574,2575],{"class":38}," |",[32,2577,2578],{"class":59}," grep",[32,2580,2581],{"class":126}," -i",[32,2583,2584],{"class":42}," rosidl\n",[15,2586,2587],{},[18,2588],{"alt":20,"src":2589},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage444.webp",[15,2591,2592],{},[18,2593],{"alt":20,"src":2594},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage445.webp",[15,2596,2597],{},"We are using this one, just copy it directly.",[15,2599,2600],{},[18,2601],{"alt":20,"src":2602},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage446.webp",[15,2604,2605],{},[18,2606],{"alt":20,"src":2607},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage447.webp",[15,2609,2610],{},[18,2611],{"alt":20,"src":2612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage448.webp",[15,2614,2615],{},[18,2616],{"alt":20,"src":2617},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage449.webp",[15,2619,2620,2621,2624],{},"In the list, this functional package group is no longer available, and you'll need to write ",[29,2622,2623],{},"rosidl_interface_packages"," yourself.",[15,2626,2627],{},[18,2628],{"alt":20,"src":2629},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage450.webp",[15,2631,2632],{},[18,2633],{"alt":20,"src":2634},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage451.webp",[15,2636,2637],{},"This dependency should be the same as the build dependency.",[15,2639,2640],{},"Then we need to generate source code for the interface file.",[15,2642,2643,2644,896],{},"You need to use the ",[29,2645,2646],{},"rosidl_generate_interfaces",[15,2648,2649],{},[18,2650],{"alt":20,"src":2651},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage452.webp",[15,2653,2654],{},[18,2655],{"alt":20,"src":2656},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage453.webp",[23,2658,2660],{"className":1761,"code":2659,"language":1763,"meta":20,"style":20},"colcon build --packages-select base_interfaces_demo\n",[29,2661,2662],{"__ignoreMap":20},[32,2663,2664,2667,2670,2673],{"class":34,"line":35},[32,2665,2666],{"class":59},"colcon",[32,2668,2669],{"class":42}," build",[32,2671,2672],{"class":126}," --packages-select",[32,2674,2675],{"class":42}," base_interfaces_demo\n",[15,2677,2678],{},[18,2679],{"alt":20,"src":2680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage454.webp",[15,2682,2683],{},[18,2684],{"alt":20,"src":2685},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage455.webp",[15,2687,2688,2689,2692],{},"Will generate the ",[29,2690,2691],{},"student.hpp"," code in the install space.",[15,2694,2695],{},[18,2696],{"alt":20,"src":2697},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage456.webp",[15,2699,2700,2701,2704],{},"Here's the C++ code to generate the ",[29,2702,2703],{},".msg"," file content you provided:",[23,2706,2708],{"className":25,"code":2707,"language":27,"meta":20,"style":20},"#include \u003Ciostream>\n#include \u003Cfstream>\n#include \u003Cstring>\n\nint main() {\n    std::string msgContent = R\"(# 以上.msg生成C++的\n# This is a sample .msg file for ROS\n\nstring data\nint32 number\nfloat64 value)\";\n\n    std::ofstream outFile(\"sample.msg\");\n    if (outFile.is_open()) {\n        outFile \u003C\u003C msgContent;\n        outFile.close();\n        std::cout \u003C\u003C \"sample.msg file generated successfully.\" \u003C\u003C std::endl;\n    } else {\n        std::cerr \u003C\u003C \"Failed to create sample.msg file.\" \u003C\u003C std::endl;\n        return 1;\n    }\n\n    return 0;\n}\n",[29,2709,2710,2717,2724,2731,2735,2744,2757,2762,2766,2771,2776,2783,2787,2804,2818,2829,2839,2860,2871,2889,2899,2903,2907,2915],{"__ignoreMap":20},[32,2711,2712,2714],{"class":34,"line":35},[32,2713,39],{"class":38},[32,2715,2716],{"class":42}," \u003Ciostream>\n",[32,2718,2719,2721],{"class":34,"line":46},[32,2720,39],{"class":38},[32,2722,2723],{"class":42}," \u003Cfstream>\n",[32,2725,2726,2728],{"class":34,"line":53},[32,2727,39],{"class":38},[32,2729,2730],{"class":42}," \u003Cstring>\n",[32,2732,2733],{"class":34,"line":79},[32,2734,50],{"emptyLinePlaceholder":49},[32,2736,2737,2739,2741],{"class":34,"line":85},[32,2738,165],{"class":38},[32,2740,168],{"class":59},[32,2742,2743],{"class":63},"() {\n",[32,2745,2746,2749,2752,2754],{"class":34,"line":91},[32,2747,2748],{"class":59},"    std",[32,2750,2751],{"class":63},"::string msgContent ",[32,2753,1396],{"class":38},[32,2755,2756],{"class":42}," R\"(# 以上.msg生成C++的\n",[32,2758,2759],{"class":34,"line":112},[32,2760,2761],{"class":42},"# This is a sample .msg file for ROS\n",[32,2763,2764],{"class":34,"line":118},[32,2765,50],{"emptyLinePlaceholder":49},[32,2767,2768],{"class":34,"line":145},[32,2769,2770],{"class":42},"string data\n",[32,2772,2773],{"class":34,"line":151},[32,2774,2775],{"class":42},"int32 number\n",[32,2777,2778,2781],{"class":34,"line":157},[32,2779,2780],{"class":42},"float64 value)\"",[32,2782,273],{"class":63},[32,2784,2785],{"class":34,"line":162},[32,2786,50],{"emptyLinePlaceholder":49},[32,2788,2789,2791,2794,2797,2799,2802],{"class":34,"line":193},[32,2790,2748],{"class":59},[32,2792,2793],{"class":63},"::ofstream ",[32,2795,2796],{"class":59},"outFile",[32,2798,103],{"class":63},[32,2800,2801],{"class":42},"\"sample.msg\"",[32,2803,142],{"class":63},[32,2805,2806,2809,2812,2815],{"class":34,"line":198},[32,2807,2808],{"class":38},"    if",[32,2810,2811],{"class":63}," (outFile.",[32,2813,2814],{"class":59},"is_open",[32,2816,2817],{"class":63},"()) {\n",[32,2819,2820,2823,2826],{"class":34,"line":212},[32,2821,2822],{"class":63},"        outFile ",[32,2824,2825],{"class":38},"\u003C\u003C",[32,2827,2828],{"class":63}," msgContent;\n",[32,2830,2831,2834,2837],{"class":34,"line":217},[32,2832,2833],{"class":63},"        outFile.",[32,2835,2836],{"class":59},"close",[32,2838,261],{"class":63},[32,2840,2841,2844,2847,2849,2852,2855,2857],{"class":34,"line":246},[32,2842,2843],{"class":59},"        std",[32,2845,2846],{"class":63},"::cout ",[32,2848,2825],{"class":38},[32,2850,2851],{"class":42}," \"sample.msg file generated successfully.\"",[32,2853,2854],{"class":38}," \u003C\u003C",[32,2856,1307],{"class":59},[32,2858,2859],{"class":63},"::endl;\n",[32,2861,2862,2865,2868],{"class":34,"line":251},[32,2863,2864],{"class":63},"    } ",[32,2866,2867],{"class":38},"else",[32,2869,2870],{"class":63}," {\n",[32,2872,2873,2875,2878,2880,2883,2885,2887],{"class":34,"line":264},[32,2874,2843],{"class":59},[32,2876,2877],{"class":63},"::cerr ",[32,2879,2825],{"class":38},[32,2881,2882],{"class":42}," \"Failed to create sample.msg file.\"",[32,2884,2854],{"class":38},[32,2886,1307],{"class":59},[32,2888,2859],{"class":63},[32,2890,2891,2894,2897],{"class":34,"line":276},[32,2892,2893],{"class":38},"        return",[32,2895,2896],{"class":126}," 1",[32,2898,273],{"class":63},[32,2900,2901],{"class":34,"line":495},[32,2902,148],{"class":63},[32,2904,2905],{"class":34,"line":502},[32,2906,50],{"emptyLinePlaceholder":49},[32,2908,2909,2911,2913],{"class":34,"line":510},[32,2910,2016],{"class":38},[32,2912,270],{"class":126},[32,2914,273],{"class":63},[32,2916,2917],{"class":34,"line":518},[32,2918,279],{"class":63},[15,2920,2921],{},"This C++ program:",[2923,2924,2925,2932,2939,2942],"ol",{},[2926,2927,2928,2929,2931],"li",{},"Defines the ",[29,2930,2703],{}," file content as a raw string literal",[2926,2933,2934,2935,2938],{},"Opens a file named ",[29,2936,2937],{},"sample.msg"," for writing",[2926,2940,2941],{},"Writes the content to the file",[2926,2943,2944],{},"Closes the file and reports success or failure",[15,2946,2947,2948,2950],{},"The generated ",[29,2949,2937],{}," file will contain:",[23,2952,2957],{"className":2953,"code":2955,"language":2956},[2954],"language-text","# 以上.msg生成C++的\n# This is a sample .msg file for ROS\n\nstring data\nint32 number\nfloat64 value\n","text",[29,2958,2955],{"__ignoreMap":20},[15,2960,2961],{},[18,2962],{"alt":20,"src":2963},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage457.webp",[15,2965,2966],{},"Then this is the Python source code generated by .msg.",[15,2968,2969],{},[18,2970],{"alt":20,"src":2971},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage458.webp",[15,2973,2974],{},"You can also use this method to check whether the compilation is normal.",[15,2976,2977],{},"interface is an interface",[15,2979,2980],{},[18,2981],{"alt":20,"src":2982},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage459.webp",[10,2984,2986],{"id":2985},"topic-communication-experiment-2-c","Topic Communication Experiment 2 (C++)",[15,2988,2989],{},[18,2990],{"alt":20,"src":2991},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage460.webp",[15,2993,2994],{},[18,2995],{"alt":20,"src":2996},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage461.webp",[15,2998,2999],{},[18,3000],{"alt":20,"src":3001},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage462.webp",[15,3003,3004],{},"After creating the source file, you need to configure CMakeLists.",[15,3006,3007],{},[18,3008],{"alt":20,"src":3009},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage463.webp",[15,3011,3012],{},[18,3013],{"alt":20,"src":3014},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage464.webp",[15,3016,3017],{},[18,3018],{"alt":20,"src":3019},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage465.webp",[15,3021,3022],{},[18,3023],{"alt":20,"src":3024},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage466.webp",[15,3026,3027],{},"Copy the most basic framework directly.",[15,3029,3030],{},[18,3031],{"alt":20,"src":3032},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage467.webp",[15,3034,3035],{},"Then replace the class name.",[15,3037,3038],{},[18,3039],{"alt":20,"src":3040},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage468.webp",[23,3042,3044],{"className":25,"code":3043,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass TalkerStu: public rclcpp::Node\n{\n  public:\n    TalkerStu():Node(\"talkerstu_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"发布节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CTalkerStu>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,3045,3046,3052,3056,3073,3077,3081,3097,3101,3119,3123,3127,3131,3153,3157,3167,3171,3194,3198,3208,3216],{"__ignoreMap":20},[32,3047,3048,3050],{"class":34,"line":35},[32,3049,39],{"class":38},[32,3051,43],{"class":42},[32,3053,3054],{"class":34,"line":46},[32,3055,50],{"emptyLinePlaceholder":49},[32,3057,3058,3060,3063,3065,3067,3069,3071],{"class":34,"line":53},[32,3059,56],{"class":38},[32,3061,3062],{"class":59}," TalkerStu",[32,3064,64],{"class":63},[32,3066,67],{"class":38},[32,3068,70],{"class":59},[32,3070,73],{"class":63},[32,3072,76],{"class":59},[32,3074,3075],{"class":34,"line":79},[32,3076,82],{"class":63},[32,3078,3079],{"class":34,"line":85},[32,3080,88],{"class":38},[32,3082,3083,3086,3088,3090,3092,3095],{"class":34,"line":91},[32,3084,3085],{"class":59},"    TalkerStu",[32,3087,97],{"class":63},[32,3089,100],{"class":59},[32,3091,103],{"class":63},[32,3093,3094],{"class":42},"\"talkerstu_node_cpp\"",[32,3096,109],{"class":63},[32,3098,3099],{"class":34,"line":112},[32,3100,115],{"class":63},[32,3102,3103,3105,3107,3109,3111,3113,3115,3117],{"class":34,"line":118},[32,3104,121],{"class":59},[32,3106,103],{"class":63},[32,3108,127],{"class":126},[32,3110,130],{"class":63},[32,3112,133],{"class":59},[32,3114,136],{"class":63},[32,3116,1005],{"class":42},[32,3118,142],{"class":63},[32,3120,3121],{"class":34,"line":145},[32,3122,148],{"class":63},[32,3124,3125],{"class":34,"line":151},[32,3126,154],{"class":63},[32,3128,3129],{"class":34,"line":157},[32,3130,50],{"emptyLinePlaceholder":49},[32,3132,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151],{"class":34,"line":162},[32,3134,165],{"class":38},[32,3136,168],{"class":59},[32,3138,103],{"class":63},[32,3140,165],{"class":38},[32,3142,176],{"class":175},[32,3144,179],{"class":63},[32,3146,182],{"class":38},[32,3148,185],{"class":38},[32,3150,188],{"class":175},[32,3152,109],{"class":63},[32,3154,3155],{"class":34,"line":193},[32,3156,82],{"class":63},[32,3158,3159,3161,3163,3165],{"class":34,"line":198},[32,3160,201],{"class":59},[32,3162,73],{"class":63},[32,3164,206],{"class":59},[32,3166,209],{"class":63},[32,3168,3169],{"class":34,"line":212},[32,3170,50],{"emptyLinePlaceholder":49},[32,3172,3173,3175,3177,3179,3181,3183,3185,3187,3189,3192],{"class":34,"line":217},[32,3174,201],{"class":59},[32,3176,73],{"class":63},[32,3178,224],{"class":59},[32,3180,103],{"class":63},[32,3182,229],{"class":59},[32,3184,73],{"class":63},[32,3186,234],{"class":59},[32,3188,237],{"class":63},[32,3190,3191],{"class":59},"TalkerStu",[32,3193,243],{"class":63},[32,3195,3196],{"class":34,"line":246},[32,3197,50],{"emptyLinePlaceholder":49},[32,3199,3200,3202,3204,3206],{"class":34,"line":251},[32,3201,201],{"class":59},[32,3203,73],{"class":63},[32,3205,258],{"class":59},[32,3207,261],{"class":63},[32,3209,3210,3212,3214],{"class":34,"line":264},[32,3211,267],{"class":38},[32,3213,270],{"class":126},[32,3215,273],{"class":63},[32,3217,3218],{"class":34,"line":276},[32,3219,279],{"class":63},[15,3221,3222],{},"for coding standards, change talkerstu_node_cpp to lowercase",[15,3224,3225],{},[18,3226],{"alt":20,"src":3227},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage469.webp",[15,3229,3230],{},"Similarly, the subscriber also needs to perform this operation.",[15,3232,3233],{},[18,3234],{"alt":20,"src":3235},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage470.webp",[23,3237,3239],{"className":25,"code":3238,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ListenerStu: public rclcpp::Node\n{\npublic:\n    ListenerStu():Node(\"listenerstu_node_cpp\")\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅方创建!\");\n    }\n};\n\nint main(int argc, char * argv[])\n{\n    rclcpp::init(argc,argv);\n\n    rclcpp::spin(std::make_shared\u003CListenerStu>());\n\n    rclcpp::shutdown();\n    return 0;\n}\n",[29,3240,3241,3247,3251,3268,3272,3276,3292,3296,3314,3318,3322,3326,3348,3352,3362,3366,3389,3393,3403,3411],{"__ignoreMap":20},[32,3242,3243,3245],{"class":34,"line":35},[32,3244,39],{"class":38},[32,3246,43],{"class":42},[32,3248,3249],{"class":34,"line":46},[32,3250,50],{"emptyLinePlaceholder":49},[32,3252,3253,3255,3258,3260,3262,3264,3266],{"class":34,"line":53},[32,3254,56],{"class":38},[32,3256,3257],{"class":59}," ListenerStu",[32,3259,64],{"class":63},[32,3261,67],{"class":38},[32,3263,70],{"class":59},[32,3265,73],{"class":63},[32,3267,76],{"class":59},[32,3269,3270],{"class":34,"line":79},[32,3271,82],{"class":63},[32,3273,3274],{"class":34,"line":85},[32,3275,1880],{"class":38},[32,3277,3278,3281,3283,3285,3287,3290],{"class":34,"line":91},[32,3279,3280],{"class":59},"    ListenerStu",[32,3282,97],{"class":63},[32,3284,100],{"class":59},[32,3286,103],{"class":63},[32,3288,3289],{"class":42},"\"listenerstu_node_cpp\"",[32,3291,109],{"class":63},[32,3293,3294],{"class":34,"line":112},[32,3295,115],{"class":63},[32,3297,3298,3300,3302,3304,3306,3308,3310,3312],{"class":34,"line":118},[32,3299,1905],{"class":59},[32,3301,103],{"class":63},[32,3303,127],{"class":126},[32,3305,130],{"class":63},[32,3307,133],{"class":59},[32,3309,136],{"class":63},[32,3311,1918],{"class":42},[32,3313,142],{"class":63},[32,3315,3316],{"class":34,"line":145},[32,3317,148],{"class":63},[32,3319,3320],{"class":34,"line":151},[32,3321,154],{"class":63},[32,3323,3324],{"class":34,"line":157},[32,3325,50],{"emptyLinePlaceholder":49},[32,3327,3328,3330,3332,3334,3336,3338,3340,3342,3344,3346],{"class":34,"line":162},[32,3329,165],{"class":38},[32,3331,168],{"class":59},[32,3333,103],{"class":63},[32,3335,165],{"class":38},[32,3337,176],{"class":175},[32,3339,179],{"class":63},[32,3341,182],{"class":38},[32,3343,1951],{"class":38},[32,3345,188],{"class":175},[32,3347,1956],{"class":63},[32,3349,3350],{"class":34,"line":193},[32,3351,82],{"class":63},[32,3353,3354,3356,3358,3360],{"class":34,"line":198},[32,3355,1604],{"class":59},[32,3357,73],{"class":63},[32,3359,206],{"class":59},[32,3361,209],{"class":63},[32,3363,3364],{"class":34,"line":212},[32,3365,50],{"emptyLinePlaceholder":49},[32,3367,3368,3370,3372,3374,3376,3378,3380,3382,3384,3387],{"class":34,"line":217},[32,3369,1604],{"class":59},[32,3371,73],{"class":63},[32,3373,224],{"class":59},[32,3375,103],{"class":63},[32,3377,229],{"class":59},[32,3379,73],{"class":63},[32,3381,234],{"class":59},[32,3383,237],{"class":63},[32,3385,3386],{"class":59},"ListenerStu",[32,3388,243],{"class":63},[32,3390,3391],{"class":34,"line":246},[32,3392,50],{"emptyLinePlaceholder":49},[32,3394,3395,3397,3399,3401],{"class":34,"line":251},[32,3396,1604],{"class":59},[32,3398,73],{"class":63},[32,3400,258],{"class":59},[32,3402,261],{"class":63},[32,3404,3405,3407,3409],{"class":34,"line":264},[32,3406,2016],{"class":38},[32,3408,270],{"class":126},[32,3410,273],{"class":63},[32,3412,3413],{"class":34,"line":276},[32,3414,279],{"class":63},[15,3416,3417],{},[18,3418],{"alt":20,"src":3419},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage471.webp",[23,3421,3423],{"className":315,"code":3422,"language":317,"meta":20,"style":20},"{\n  \"configurations\": [\n    {\n      \"browse\": {\n        \"databaseFilename\": \"${default}\",\n        \"limitSymbolsToIncludedHeaders\": false\n      },\n      \"includePath\": [\n        \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\",\n        \"\u002Fhome\u002Ftungchiahui\u002Fmysource\u002Fros2src\u002F3.ws01_plumbing\u002Fsrc\u002Fbase_interfaces_demo\u002Finclude\u002F**\",\n        \"\u002Fusr\u002Finclude\u002F**\",\n        \"${workspaceFolder}\u002F\",\n**        \"${workspaceFolder}\u002Finstall\u002Fbase_interfaces_demo\u002Finclude\u002F**\"\n      ],\n      \"name\": \"ROS\",\n      \"intelliSenseMode\": \"gcc-x64\",\n      \"compilerPath\": \"\u002Fusr\u002Fbin\u002Fgcc\",\n      \"cStandard\": \"gnu11\",\n      \"cppStandard\": \"c++14\"\n    }\n  ],\n  \"version\": 4\n}\n",[29,3424,3425,3429,3436,3440,3447,3459,3469,3474,3481,3488,3495,3502,3509,3518,3523,3535,3547,3559,3571,3581,3585,3590,3600],{"__ignoreMap":20},[32,3426,3427],{"class":34,"line":35},[32,3428,82],{"class":63},[32,3430,3431,3434],{"class":34,"line":46},[32,3432,3433],{"class":126},"  \"configurations\"",[32,3435,352],{"class":63},[32,3437,3438],{"class":34,"line":53},[32,3439,115],{"class":63},[32,3441,3442,3445],{"class":34,"line":79},[32,3443,3444],{"class":126},"      \"browse\"",[32,3446,331],{"class":63},[32,3448,3449,3452,3454,3457],{"class":34,"line":85},[32,3450,3451],{"class":126},"        \"databaseFilename\"",[32,3453,64],{"class":63},[32,3455,3456],{"class":42},"\"${default}\"",[32,3458,344],{"class":63},[32,3460,3461,3464,3466],{"class":34,"line":91},[32,3462,3463],{"class":126},"        \"limitSymbolsToIncludedHeaders\"",[32,3465,64],{"class":63},[32,3467,3468],{"class":126},"false\n",[32,3470,3471],{"class":34,"line":112},[32,3472,3473],{"class":63},"      },\n",[32,3475,3476,3479],{"class":34,"line":118},[32,3477,3478],{"class":126},"      \"includePath\"",[32,3480,352],{"class":63},[32,3482,3483,3486],{"class":34,"line":145},[32,3484,3485],{"class":42},"        \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\"",[32,3487,344],{"class":63},[32,3489,3490,3493],{"class":34,"line":151},[32,3491,3492],{"class":42},"        \"\u002Fhome\u002Ftungchiahui\u002Fmysource\u002Fros2src\u002F3.ws01_plumbing\u002Fsrc\u002Fbase_interfaces_demo\u002Finclude\u002F**\"",[32,3494,344],{"class":63},[32,3496,3497,3500],{"class":34,"line":157},[32,3498,3499],{"class":42},"        \"\u002Fusr\u002Finclude\u002F**\"",[32,3501,344],{"class":63},[32,3503,3504,3507],{"class":34,"line":162},[32,3505,3506],{"class":42},"        \"${workspaceFolder}\u002F\"",[32,3508,344],{"class":63},[32,3510,3511,3515],{"class":34,"line":193},[32,3512,3514],{"class":3513},"s7hpK","**",[32,3516,3517],{"class":42},"        \"${workspaceFolder}\u002Finstall\u002Fbase_interfaces_demo\u002Finclude\u002F**\"\n",[32,3519,3520],{"class":34,"line":198},[32,3521,3522],{"class":63},"      ],\n",[32,3524,3525,3528,3530,3533],{"class":34,"line":212},[32,3526,3527],{"class":126},"      \"name\"",[32,3529,64],{"class":63},[32,3531,3532],{"class":42},"\"ROS\"",[32,3534,344],{"class":63},[32,3536,3537,3540,3542,3545],{"class":34,"line":217},[32,3538,3539],{"class":126},"      \"intelliSenseMode\"",[32,3541,64],{"class":63},[32,3543,3544],{"class":42},"\"gcc-x64\"",[32,3546,344],{"class":63},[32,3548,3549,3552,3554,3557],{"class":34,"line":246},[32,3550,3551],{"class":126},"      \"compilerPath\"",[32,3553,64],{"class":63},[32,3555,3556],{"class":42},"\"\u002Fusr\u002Fbin\u002Fgcc\"",[32,3558,344],{"class":63},[32,3560,3561,3564,3566,3569],{"class":34,"line":251},[32,3562,3563],{"class":126},"      \"cStandard\"",[32,3565,64],{"class":63},[32,3567,3568],{"class":42},"\"gnu11\"",[32,3570,344],{"class":63},[32,3572,3573,3576,3578],{"class":34,"line":264},[32,3574,3575],{"class":126},"      \"cppStandard\"",[32,3577,64],{"class":63},[32,3579,3580],{"class":42},"\"c++14\"\n",[32,3582,3583],{"class":34,"line":276},[32,3584,148],{"class":63},[32,3586,3587],{"class":34,"line":495},[32,3588,3589],{"class":63},"  ],\n",[32,3591,3592,3595,3597],{"class":34,"line":502},[32,3593,3594],{"class":126},"  \"version\"",[32,3596,64],{"class":63},[32,3598,3599],{"class":126},"4\n",[32,3601,3602],{"class":34,"line":510},[32,3603,279],{"class":63},[15,3605,3606],{},[18,3607],{"alt":20,"src":3608},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage472.webp",[15,3610,3611],{},[18,3612],{"alt":20,"src":3613},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage473.webp",[15,3615,3616],{},[18,3617],{"alt":20,"src":3618},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage474.webp",[15,3620,3621],{},[18,3622],{"alt":20,"src":3623},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage475.webp",[561,3625],{},[15,3627,3628],{},[18,3629],{"alt":20,"src":3630},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage476.webp",[15,3632,3633],{},[18,3634],{"alt":20,"src":3635},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage477.webp",[15,3637,3638],{},[18,3639],{"alt":20,"src":3640},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage478.webp",[15,3642,3643],{},[18,3644],{"alt":20,"src":3645},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage479.webp",[15,3647,3648],{},"Don't forget to convert the string to C-style.",[15,3650,3651],{},[18,3652],{"alt":20,"src":3653},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage480.webp",[23,3655,3657],{"className":25,"code":3656,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"base_interfaces_demo\u002Fmsg\u002Fstudent.hpp\"\n\nusing namespace std::chrono_literals;\n\nclass TalkerStu: public rclcpp::Node\n{\npublic:\n    TalkerStu():Node(\"talkerstu_node_cpp\"),age(0)\n    {\n      RCLCPP_INFO(this->get_logger(),\"发布节点创建！\");\n      publisher_ = this->create_publisher\u003Cbase_interfaces_demo::msg::Student>(\"chatter_stu\",10);\n      timer_ = this->create_wall_timer(500ms,std::bind(&TalkerStu::on_timer_callback,this));\n    }\nprivate:\n    void on_timer_callback()\n    {\n        auto stu = base_interfaces_demo::msg::Student();\n        stu.name = \"葫芦娃\";\n        stu.age = age;\n        stu.height = 2.20f;\n        age++;\n        publisher_->publish(stu);\n        RCLCPP_INFO(this->get_logger(),\"发布的消息:(%s,%d,%.2f)\",stu.name.c_str(),stu.age,stu.height);\n    }\n    rclcpp::Publisher\u003Cbase_interfaces_demo::msg::Student>::SharedPtr publisher_;\n    rclcpp::TimerBase::SharedPtr timer_;\n    int32_t age;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CTalkerStu>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,3658,3659,3665,3672,3676,3690,3694,3710,3714,3718,3742,3746,3764,3799,3840,3844,3848,3857,3861,3885,3897,3907,3922,3931,3941,3980,3984,4006,4016,4023,4027,4031,4053,4057,4067,4071,4093,4097,4108,4117],{"__ignoreMap":20},[32,3660,3661,3663],{"class":34,"line":35},[32,3662,39],{"class":38},[32,3664,43],{"class":42},[32,3666,3667,3669],{"class":34,"line":46},[32,3668,39],{"class":38},[32,3670,3671],{"class":42}," \"base_interfaces_demo\u002Fmsg\u002Fstudent.hpp\"\n",[32,3673,3674],{"class":34,"line":53},[32,3675,50],{"emptyLinePlaceholder":49},[32,3677,3678,3680,3682,3684,3686,3688],{"class":34,"line":79},[32,3679,1301],{"class":38},[32,3681,1304],{"class":38},[32,3683,1307],{"class":59},[32,3685,73],{"class":63},[32,3687,1312],{"class":59},[32,3689,273],{"class":63},[32,3691,3692],{"class":34,"line":85},[32,3693,50],{"emptyLinePlaceholder":49},[32,3695,3696,3698,3700,3702,3704,3706,3708],{"class":34,"line":91},[32,3697,56],{"class":38},[32,3699,3062],{"class":59},[32,3701,64],{"class":63},[32,3703,67],{"class":38},[32,3705,70],{"class":59},[32,3707,73],{"class":63},[32,3709,76],{"class":59},[32,3711,3712],{"class":34,"line":112},[32,3713,82],{"class":63},[32,3715,3716],{"class":34,"line":118},[32,3717,1880],{"class":38},[32,3719,3720,3722,3724,3726,3728,3730,3733,3736,3738,3740],{"class":34,"line":145},[32,3721,3085],{"class":59},[32,3723,97],{"class":63},[32,3725,100],{"class":59},[32,3727,103],{"class":63},[32,3729,3094],{"class":42},[32,3731,3732],{"class":63},"),",[32,3734,3735],{"class":59},"age",[32,3737,103],{"class":63},[32,3739,1364],{"class":126},[32,3741,109],{"class":63},[32,3743,3744],{"class":34,"line":151},[32,3745,115],{"class":63},[32,3747,3748,3750,3752,3754,3756,3758,3760,3762],{"class":34,"line":157},[32,3749,121],{"class":59},[32,3751,103],{"class":63},[32,3753,127],{"class":126},[32,3755,130],{"class":63},[32,3757,133],{"class":59},[32,3759,136],{"class":63},[32,3761,1005],{"class":42},[32,3763,142],{"class":63},[32,3765,3766,3768,3770,3772,3774,3776,3779,3781,3783,3786,3788,3790,3793,3795,3797],{"class":34,"line":162},[32,3767,1393],{"class":63},[32,3769,1396],{"class":38},[32,3771,1399],{"class":126},[32,3773,1402],{"class":63},[32,3775,237],{"class":38},[32,3777,3778],{"class":59},"base_interfaces_demo",[32,3780,73],{"class":63},[32,3782,1412],{"class":59},[32,3784,3785],{"class":63},"::Student",[32,3787,1418],{"class":38},[32,3789,103],{"class":63},[32,3791,3792],{"class":42},"\"chatter_stu\"",[32,3794,1426],{"class":63},[32,3796,1429],{"class":126},[32,3798,142],{"class":63},[32,3800,3801,3803,3805,3807,3809,3811,3813,3816,3819,3821,3823,3825,3827,3829,3831,3833,3836,3838],{"class":34,"line":193},[32,3802,1436],{"class":63},[32,3804,1396],{"class":38},[32,3806,1399],{"class":126},[32,3808,130],{"class":63},[32,3810,1445],{"class":59},[32,3812,103],{"class":63},[32,3814,3815],{"class":126},"500",[32,3817,3818],{"class":38},"ms",[32,3820,1426],{"class":63},[32,3822,229],{"class":59},[32,3824,73],{"class":63},[32,3826,1462],{"class":59},[32,3828,103],{"class":63},[32,3830,1467],{"class":38},[32,3832,3191],{"class":59},[32,3834,3835],{"class":63},"::on_timer_callback,",[32,3837,127],{"class":126},[32,3839,1477],{"class":63},[32,3841,3842],{"class":34,"line":198},[32,3843,148],{"class":63},[32,3845,3846],{"class":34,"line":212},[32,3847,2278],{"class":38},[32,3849,3850,3852,3855],{"class":34,"line":217},[32,3851,1491],{"class":38},[32,3853,3854],{"class":59}," on_timer_callback",[32,3856,1497],{"class":63},[32,3858,3859],{"class":34,"line":246},[32,3860,115],{"class":63},[32,3862,3863,3866,3869,3871,3874,3876,3878,3880,3883],{"class":34,"line":251},[32,3864,3865],{"class":38},"        auto",[32,3867,3868],{"class":63}," stu ",[32,3870,1396],{"class":38},[32,3872,3873],{"class":59}," base_interfaces_demo",[32,3875,73],{"class":63},[32,3877,1412],{"class":59},[32,3879,73],{"class":63},[32,3881,3882],{"class":59},"Student",[32,3884,261],{"class":63},[32,3886,3887,3890,3892,3895],{"class":34,"line":264},[32,3888,3889],{"class":63},"        stu.name ",[32,3891,1396],{"class":38},[32,3893,3894],{"class":42}," \"葫芦娃\"",[32,3896,273],{"class":63},[32,3898,3899,3902,3904],{"class":34,"line":276},[32,3900,3901],{"class":63},"        stu.age ",[32,3903,1396],{"class":38},[32,3905,3906],{"class":63}," age;\n",[32,3908,3909,3912,3914,3917,3920],{"class":34,"line":495},[32,3910,3911],{"class":63},"        stu.height ",[32,3913,1396],{"class":38},[32,3915,3916],{"class":126}," 2.20",[32,3918,3919],{"class":38},"f",[32,3921,273],{"class":63},[32,3923,3924,3927,3929],{"class":34,"line":502},[32,3925,3926],{"class":63},"        age",[32,3928,1551],{"class":38},[32,3930,273],{"class":63},[32,3932,3933,3936,3938],{"class":34,"line":510},[32,3934,3935],{"class":63},"        publisher_->",[32,3937,1592],{"class":59},[32,3939,3940],{"class":63},"(stu);\n",[32,3942,3943,3945,3947,3949,3951,3953,3955,3958,3960,3962,3965,3967,3970,3972,3975,3977],{"class":34,"line":518},[32,3944,1905],{"class":59},[32,3946,103],{"class":63},[32,3948,127],{"class":126},[32,3950,130],{"class":63},[32,3952,133],{"class":59},[32,3954,136],{"class":63},[32,3956,3957],{"class":42},"\"发布的消息:(",[32,3959,1573],{"class":126},[32,3961,1426],{"class":42},[32,3963,3964],{"class":126},"%d",[32,3966,1426],{"class":42},[32,3968,3969],{"class":126},"%.2f",[32,3971,413],{"class":42},[32,3973,3974],{"class":63},",stu.name.",[32,3976,1581],{"class":59},[32,3978,3979],{"class":63},"(),stu.age,stu.height);\n",[32,3981,3982],{"class":34,"line":524},[32,3983,148],{"class":63},[32,3985,3986,3988,3990,3992,3994,3996,3998,4000,4002,4004],{"class":34,"line":530},[32,3987,1604],{"class":59},[32,3989,73],{"class":63},[32,3991,859],{"class":59},[32,3993,237],{"class":63},[32,3995,3778],{"class":59},[32,3997,73],{"class":63},[32,3999,1412],{"class":59},[32,4001,73],{"class":63},[32,4003,3882],{"class":59},[32,4005,1623],{"class":63},[32,4007,4008,4010,4012,4014],{"class":34,"line":541},[32,4009,1604],{"class":59},[32,4011,73],{"class":63},[32,4013,1632],{"class":59},[32,4015,1635],{"class":63},[32,4017,4018,4021],{"class":34,"line":547},[32,4019,4020],{"class":38},"    int32_t",[32,4022,3906],{"class":63},[32,4024,4025],{"class":34,"line":1676},[32,4026,154],{"class":63},[32,4028,4029],{"class":34,"line":1681},[32,4030,50],{"emptyLinePlaceholder":49},[32,4032,4033,4035,4037,4039,4041,4043,4045,4047,4049,4051],{"class":34,"line":1692},[32,4034,165],{"class":38},[32,4036,168],{"class":59},[32,4038,103],{"class":63},[32,4040,165],{"class":38},[32,4042,176],{"class":175},[32,4044,179],{"class":63},[32,4046,182],{"class":38},[32,4048,185],{"class":38},[32,4050,188],{"class":175},[32,4052,109],{"class":63},[32,4054,4055],{"class":34,"line":1697},[32,4056,82],{"class":63},[32,4058,4059,4061,4063,4065],{"class":34,"line":1720},[32,4060,201],{"class":59},[32,4062,73],{"class":63},[32,4064,206],{"class":59},[32,4066,209],{"class":63},[32,4068,4069],{"class":34,"line":1725},[32,4070,50],{"emptyLinePlaceholder":49},[32,4072,4073,4075,4077,4079,4081,4083,4085,4087,4089,4091],{"class":34,"line":1736},[32,4074,201],{"class":59},[32,4076,73],{"class":63},[32,4078,224],{"class":59},[32,4080,103],{"class":63},[32,4082,229],{"class":59},[32,4084,73],{"class":63},[32,4086,234],{"class":59},[32,4088,237],{"class":63},[32,4090,3191],{"class":59},[32,4092,243],{"class":63},[32,4094,4095],{"class":34,"line":1745},[32,4096,50],{"emptyLinePlaceholder":49},[32,4098,4100,4102,4104,4106],{"class":34,"line":4099},37,[32,4101,201],{"class":59},[32,4103,73],{"class":63},[32,4105,258],{"class":59},[32,4107,261],{"class":63},[32,4109,4111,4113,4115],{"class":34,"line":4110},38,[32,4112,267],{"class":38},[32,4114,270],{"class":126},[32,4116,273],{"class":63},[32,4118,4120],{"class":34,"line":4119},39,[32,4121,279],{"class":63},[15,4123,4124],{},[18,4125],{"alt":20,"src":4126},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage481.webp",[15,4128,4129],{},[18,4130],{"alt":20,"src":4131},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage482.webp",[15,4133,4134],{},[18,4135],{"alt":20,"src":4136},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage483.webp",[15,4138,4139],{},"Although the publisher can print logs, it does not mean the information was sent out normally.",[15,4141,4142],{},[18,4143],{"alt":20,"src":4144},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage484.webp",[15,4146,4147],{},"Only this kind of verification can truly confirm that the data has been sent out.",[561,4149],{},[15,4151,4152],{},[18,4153],{"alt":20,"src":4154},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage485.webp",[15,4156,4157],{},[18,4158],{"alt":20,"src":4159},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage486.webp",[23,4161,4163],{"className":25,"code":4162,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"base_interfaces_demo\u002Fmsg\u002Fstudent.hpp\"\n\nusing base_interfaces_demo::msg::Student;\n\nclass ListenerStu: public rclcpp::Node\n{\npublic:\n    ListenerStu():Node(\"listenerstu_node_cpp\")\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅方创建!\");\n        Subscription_ = this->create_subscription\u003CStudent>(\"chatter_stu\",10,std::bind(&ListenerStu::do_callback,this,std::placeholders::1));\n    }\nprivate:\n    void do_callback(const Student &stu)\n    {\n        RCLCPP_INFO(this->get_logger(),\"订阅的学生信息:name=%s,age=%d,height=%.2f\",stu.name.c_str(),stu.age,stu.height);\n    }\n_    rclcpp::Subscription\u003CStudent>::SharedPtr Subscription_;\n};\n\nint main(int argc, char * argv[])\n{\n    rclcpp::init(argc,argv);\n\n    rclcpp::spin(std::make_shared\u003CListenerStu>());\n\n    rclcpp::shutdown();\n    return 0;\n}\n",[29,4164,4165,4171,4177,4181,4194,4198,4214,4218,4222,4236,4240,4258,4315,4319,4323,4343,4347,4384,4388,4407,4411,4415,4437,4441,4451,4455,4477,4481,4491,4499],{"__ignoreMap":20},[32,4166,4167,4169],{"class":34,"line":35},[32,4168,39],{"class":38},[32,4170,43],{"class":42},[32,4172,4173,4175],{"class":34,"line":46},[32,4174,39],{"class":38},[32,4176,3671],{"class":42},[32,4178,4179],{"class":34,"line":53},[32,4180,50],{"emptyLinePlaceholder":49},[32,4182,4183,4185,4187,4189,4191],{"class":34,"line":79},[32,4184,1301],{"class":38},[32,4186,3873],{"class":59},[32,4188,73],{"class":63},[32,4190,1412],{"class":59},[32,4192,4193],{"class":63},"::Student;\n",[32,4195,4196],{"class":34,"line":85},[32,4197,50],{"emptyLinePlaceholder":49},[32,4199,4200,4202,4204,4206,4208,4210,4212],{"class":34,"line":91},[32,4201,56],{"class":38},[32,4203,3257],{"class":59},[32,4205,64],{"class":63},[32,4207,67],{"class":38},[32,4209,70],{"class":59},[32,4211,73],{"class":63},[32,4213,76],{"class":59},[32,4215,4216],{"class":34,"line":112},[32,4217,82],{"class":63},[32,4219,4220],{"class":34,"line":118},[32,4221,1880],{"class":38},[32,4223,4224,4226,4228,4230,4232,4234],{"class":34,"line":145},[32,4225,3280],{"class":59},[32,4227,97],{"class":63},[32,4229,100],{"class":59},[32,4231,103],{"class":63},[32,4233,3289],{"class":42},[32,4235,109],{"class":63},[32,4237,4238],{"class":34,"line":151},[32,4239,115],{"class":63},[32,4241,4242,4244,4246,4248,4250,4252,4254,4256],{"class":34,"line":157},[32,4243,1905],{"class":59},[32,4245,103],{"class":63},[32,4247,127],{"class":126},[32,4249,130],{"class":63},[32,4251,133],{"class":59},[32,4253,136],{"class":63},[32,4255,1918],{"class":42},[32,4257,142],{"class":63},[32,4259,4260,4263,4265,4267,4269,4271,4273,4275,4277,4279,4281,4283,4285,4287,4289,4291,4293,4295,4297,4299,4301,4303,4305,4307,4309,4311,4313],{"class":34,"line":162},[32,4261,4262],{"class":63},"        Subscription_ ",[32,4264,1396],{"class":38},[32,4266,1399],{"class":126},[32,4268,2214],{"class":63},[32,4270,237],{"class":38},[32,4272,3882],{"class":63},[32,4274,1418],{"class":38},[32,4276,103],{"class":63},[32,4278,3792],{"class":42},[32,4280,1426],{"class":63},[32,4282,1429],{"class":126},[32,4284,1426],{"class":63},[32,4286,229],{"class":59},[32,4288,73],{"class":63},[32,4290,1462],{"class":59},[32,4292,103],{"class":63},[32,4294,1467],{"class":38},[32,4296,3386],{"class":59},[32,4298,2251],{"class":63},[32,4300,127],{"class":126},[32,4302,1426],{"class":63},[32,4304,229],{"class":59},[32,4306,73],{"class":63},[32,4308,2262],{"class":59},[32,4310,73],{"class":63},[32,4312,1450],{"class":126},[32,4314,1477],{"class":63},[32,4316,4317],{"class":34,"line":193},[32,4318,148],{"class":63},[32,4320,4321],{"class":34,"line":198},[32,4322,2278],{"class":38},[32,4324,4325,4327,4329,4331,4333,4336,4338,4341],{"class":34,"line":212},[32,4326,1491],{"class":38},[32,4328,2285],{"class":59},[32,4330,103],{"class":63},[32,4332,2290],{"class":38},[32,4334,4335],{"class":59}," Student",[32,4337,2303],{"class":38},[32,4339,4340],{"class":175},"stu",[32,4342,109],{"class":63},[32,4344,4345],{"class":34,"line":217},[32,4346,115],{"class":63},[32,4348,4349,4351,4353,4355,4357,4359,4361,4364,4366,4369,4371,4374,4376,4378,4380,4382],{"class":34,"line":246},[32,4350,1905],{"class":59},[32,4352,103],{"class":63},[32,4354,127],{"class":126},[32,4356,130],{"class":63},[32,4358,133],{"class":59},[32,4360,136],{"class":63},[32,4362,4363],{"class":42},"\"订阅的学生信息:name=",[32,4365,1573],{"class":126},[32,4367,4368],{"class":42},",age=",[32,4370,3964],{"class":126},[32,4372,4373],{"class":42},",height=",[32,4375,3969],{"class":126},[32,4377,368],{"class":42},[32,4379,3974],{"class":63},[32,4381,1581],{"class":59},[32,4383,3979],{"class":63},[32,4385,4386],{"class":34,"line":251},[32,4387,148],{"class":63},[32,4389,4390,4393,4396,4398,4400,4402,4404],{"class":34,"line":264},[32,4391,4392],{"class":63},"_    ",[32,4394,4395],{"class":59},"rclcpp",[32,4397,73],{"class":63},[32,4399,2352],{"class":59},[32,4401,237],{"class":63},[32,4403,3882],{"class":59},[32,4405,4406],{"class":63},">::SharedPtr Subscription_;\n",[32,4408,4409],{"class":34,"line":276},[32,4410,154],{"class":63},[32,4412,4413],{"class":34,"line":495},[32,4414,50],{"emptyLinePlaceholder":49},[32,4416,4417,4419,4421,4423,4425,4427,4429,4431,4433,4435],{"class":34,"line":502},[32,4418,165],{"class":38},[32,4420,168],{"class":59},[32,4422,103],{"class":63},[32,4424,165],{"class":38},[32,4426,176],{"class":175},[32,4428,179],{"class":63},[32,4430,182],{"class":38},[32,4432,1951],{"class":38},[32,4434,188],{"class":175},[32,4436,1956],{"class":63},[32,4438,4439],{"class":34,"line":510},[32,4440,82],{"class":63},[32,4442,4443,4445,4447,4449],{"class":34,"line":518},[32,4444,1604],{"class":59},[32,4446,73],{"class":63},[32,4448,206],{"class":59},[32,4450,209],{"class":63},[32,4452,4453],{"class":34,"line":524},[32,4454,50],{"emptyLinePlaceholder":49},[32,4456,4457,4459,4461,4463,4465,4467,4469,4471,4473,4475],{"class":34,"line":530},[32,4458,1604],{"class":59},[32,4460,73],{"class":63},[32,4462,224],{"class":59},[32,4464,103],{"class":63},[32,4466,229],{"class":59},[32,4468,73],{"class":63},[32,4470,234],{"class":59},[32,4472,237],{"class":63},[32,4474,3386],{"class":59},[32,4476,243],{"class":63},[32,4478,4479],{"class":34,"line":541},[32,4480,50],{"emptyLinePlaceholder":49},[32,4482,4483,4485,4487,4489],{"class":34,"line":547},[32,4484,1604],{"class":59},[32,4486,73],{"class":63},[32,4488,258],{"class":59},[32,4490,261],{"class":63},[32,4492,4493,4495,4497],{"class":34,"line":1676},[32,4494,2016],{"class":38},[32,4496,270],{"class":126},[32,4498,273],{"class":63},[32,4500,4501],{"class":34,"line":1681},[32,4502,279],{"class":63},[15,4504,4505],{},[18,4506],{"alt":20,"src":4507},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage487.webp",[15,4509,4510],{},[18,4511],{"alt":20,"src":4512},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage488.webp",[10,4514,4516],{"id":4515},"topic-communication_rqt-view-computation-graph","Topic Communication_RQT View Computation Graph",[15,4518,4519],{},[18,4520],{"alt":20,"src":4521},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage489.webp",[15,4523,4524],{},[18,4525],{"alt":20,"src":4526},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage490.webp",[15,4528,4529],{},[18,4530],{"alt":20,"src":4531},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage491.webp",[15,4533,4534],{},[18,4535],{"alt":20,"src":4536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage492.webp",[561,4538],{},[15,4540,4541],{},[18,4542],{"alt":20,"src":4543},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage493.webp",[15,4545,4546],{},"Graphical tool RQT",[15,4548,4549],{},[18,4550],{"alt":20,"src":4551},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage494.webp",[15,4553,4554],{},[18,4555],{"alt":20,"src":4556},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage495.webp",[15,4558,4559],{},[18,4560],{"alt":20,"src":4561},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage496.webp",[15,4563,4564],{},[18,4565],{"alt":20,"src":4566},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage497.webp",[15,4568,4569],{},[18,4570],{"alt":20,"src":4571},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage498.webp",[10,4573,4575],{"id":4574},"service-communication-theory","Service Communication Theory",[15,4577,4578],{},[18,4579],{"alt":20,"src":4580},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage499.webp",[15,4582,4583],{},[18,4584],{"alt":20,"src":4585},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage500.webp",[15,4587,4588],{},[18,4589],{"alt":20,"src":4590},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage501.webp",[15,4592,4593],{},"Only one server is allowed, but there can be multiple clients, each of which can send requests to the server. (Of course, multiple servers are technically possible, but that would introduce many logical issues and is highly unreasonable, so it is prohibited.)",[15,4595,4596],{},[18,4597],{"alt":20,"src":4598},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage502.webp",[10,4600,4602],{"id":4601},"service_communication_experiment_1_server-side_implementationc","Service_Communication_Experiment_1_Server-Side_Implementation(C++)",[15,4604,4605],{},[18,4606],{"alt":20,"src":4607},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage503.webp",[15,4609,4610],{},[18,4611],{"alt":20,"src":4612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage504.webp",[15,4614,4615],{},"First start the server, then submit two integers from the client. After the server receives them, it will parse the data, compute the sum, and return the result to the client.",[15,4617,4618],{},[18,4619],{"alt":20,"src":4620},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage505.webp",[15,4622,4623],{},[18,4624],{"alt":20,"src":4625},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage506.webp",[15,4627,4628],{},[18,4629],{"alt":20,"src":4630},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage507.webp",[15,4632,4633],{},[18,4634],{"alt":20,"src":4635},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage508.webp",[23,4637,4639],{"className":1761,"code":4638,"language":1763,"meta":20,"style":20},"ros2 pkg create cpp02_service --build-type ament_cmake --dependencies rclcpp base_interfaces_demo --node-name demo01_server\n",[29,4640,4641],{"__ignoreMap":20},[32,4642,4643,4645,4647,4650,4653,4656,4659,4662,4664,4666,4669],{"class":34,"line":35},[32,4644,1770],{"class":59},[32,4646,2569],{"class":42},[32,4648,4649],{"class":42}," create",[32,4651,4652],{"class":42}," cpp02_service",[32,4654,4655],{"class":126}," --build-type",[32,4657,4658],{"class":42}," ament_cmake",[32,4660,4661],{"class":126}," --dependencies",[32,4663,70],{"class":42},[32,4665,3873],{"class":42},[32,4667,4668],{"class":126}," --node-name",[32,4670,4671],{"class":42}," demo01_server\n",[561,4673],{},[15,4675,4676],{},[18,4677],{"alt":20,"src":4678},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage509.webp",[15,4680,4681],{},[18,4682],{"alt":20,"src":4683},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage510.webp",[15,4685,4686],{},[18,4687],{"alt":20,"src":4688},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage511.webp",[15,4690,4691],{},"If you've used demo_interfaces_demo before, you usually don't need to configure package.xml again.",[15,4693,4694],{},[18,4695],{"alt":20,"src":4696},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage512.webp",[15,4698,4699],{},[18,4700],{"alt":20,"src":4701},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage513.webp",[15,4703,4704],{},[18,4705],{"alt":20,"src":4706},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage514.webp",[15,4708,4709],{},[18,4710],{"alt":20,"src":4711},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage515.webp",[15,4713,4714],{},[18,4715],{"alt":20,"src":4716},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage516.webp",[15,4718,4719],{},"Remember the first letter of the filename should be capitalized!",[15,4721,4722],{},[18,4723],{"alt":20,"src":4724},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage517.webp",[15,4726,4727],{},[18,4728],{"alt":20,"src":4729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage518.webp",[15,4731,4732],{},[18,4733],{"alt":20,"src":4734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage519.webp",[15,4736,4737],{},[18,4738],{"alt":20,"src":4739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage520.webp",[15,4741,4742],{},[18,4743],{"alt":20,"src":4744},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage521.webp",[15,4746,4747],{},[18,4748],{"alt":20,"src":4749},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage522.webp",[15,4751,4752],{},[18,4753],{"alt":20,"src":4754},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage523.webp",[15,4756,4757],{},[18,4758],{"alt":20,"src":4759},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage524.webp",[15,4761,4762],{},[18,4763],{"alt":20,"src":4764},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage525.webp",[15,4766,4767],{},[18,4768],{"alt":20,"src":4769},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage526.webp",[15,4771,4772],{},[18,4773],{"alt":20,"src":4774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage527.webp",[15,4776,4777],{},"This is another verification method.",[561,4779],{},[15,4781,4782],{},[18,4783],{"alt":20,"src":4784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage528.webp",[15,4786,4787],{},[18,4788],{"alt":20,"src":4789},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage529.webp",[23,4791,4793],{"className":25,"code":4792,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass AddIntsServer: public rclcpp::Node\n{\n  public:\n    AddIntsServer():Node(\"add_ints_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"服务端节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CAddIntsServer>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,4794,4795,4801,4805,4822,4826,4830,4846,4850,4869,4873,4877,4881,4903,4907,4917,4921,4944,4948,4958,4966],{"__ignoreMap":20},[32,4796,4797,4799],{"class":34,"line":35},[32,4798,39],{"class":38},[32,4800,43],{"class":42},[32,4802,4803],{"class":34,"line":46},[32,4804,50],{"emptyLinePlaceholder":49},[32,4806,4807,4809,4812,4814,4816,4818,4820],{"class":34,"line":53},[32,4808,56],{"class":38},[32,4810,4811],{"class":59}," AddIntsServer",[32,4813,64],{"class":63},[32,4815,67],{"class":38},[32,4817,70],{"class":59},[32,4819,73],{"class":63},[32,4821,76],{"class":59},[32,4823,4824],{"class":34,"line":79},[32,4825,82],{"class":63},[32,4827,4828],{"class":34,"line":85},[32,4829,88],{"class":38},[32,4831,4832,4835,4837,4839,4841,4844],{"class":34,"line":91},[32,4833,4834],{"class":59},"    AddIntsServer",[32,4836,97],{"class":63},[32,4838,100],{"class":59},[32,4840,103],{"class":63},[32,4842,4843],{"class":42},"\"add_ints_server_node_cpp\"",[32,4845,109],{"class":63},[32,4847,4848],{"class":34,"line":112},[32,4849,115],{"class":63},[32,4851,4852,4854,4856,4858,4860,4862,4864,4867],{"class":34,"line":118},[32,4853,121],{"class":59},[32,4855,103],{"class":63},[32,4857,127],{"class":126},[32,4859,130],{"class":63},[32,4861,133],{"class":59},[32,4863,136],{"class":63},[32,4865,4866],{"class":42},"\"服务端节点创建！\"",[32,4868,142],{"class":63},[32,4870,4871],{"class":34,"line":145},[32,4872,148],{"class":63},[32,4874,4875],{"class":34,"line":151},[32,4876,154],{"class":63},[32,4878,4879],{"class":34,"line":157},[32,4880,50],{"emptyLinePlaceholder":49},[32,4882,4883,4885,4887,4889,4891,4893,4895,4897,4899,4901],{"class":34,"line":162},[32,4884,165],{"class":38},[32,4886,168],{"class":59},[32,4888,103],{"class":63},[32,4890,165],{"class":38},[32,4892,176],{"class":175},[32,4894,179],{"class":63},[32,4896,182],{"class":38},[32,4898,185],{"class":38},[32,4900,188],{"class":175},[32,4902,109],{"class":63},[32,4904,4905],{"class":34,"line":193},[32,4906,82],{"class":63},[32,4908,4909,4911,4913,4915],{"class":34,"line":198},[32,4910,201],{"class":59},[32,4912,73],{"class":63},[32,4914,206],{"class":59},[32,4916,209],{"class":63},[32,4918,4919],{"class":34,"line":212},[32,4920,50],{"emptyLinePlaceholder":49},[32,4922,4923,4925,4927,4929,4931,4933,4935,4937,4939,4942],{"class":34,"line":217},[32,4924,201],{"class":59},[32,4926,73],{"class":63},[32,4928,224],{"class":59},[32,4930,103],{"class":63},[32,4932,229],{"class":59},[32,4934,73],{"class":63},[32,4936,234],{"class":59},[32,4938,237],{"class":63},[32,4940,4941],{"class":59},"AddIntsServer",[32,4943,243],{"class":63},[32,4945,4946],{"class":34,"line":246},[32,4947,50],{"emptyLinePlaceholder":49},[32,4949,4950,4952,4954,4956],{"class":34,"line":251},[32,4951,201],{"class":59},[32,4953,73],{"class":63},[32,4955,258],{"class":59},[32,4957,261],{"class":63},[32,4959,4960,4962,4964],{"class":34,"line":264},[32,4961,267],{"class":38},[32,4963,270],{"class":126},[32,4965,273],{"class":63},[32,4967,4968],{"class":34,"line":276},[32,4969,279],{"class":63},[15,4971,4972],{},[18,4973],{"alt":20,"src":4974},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage530.webp",[15,4976,4977],{},[18,4978],{"alt":20,"src":4979},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage531.webp",[15,4981,4982],{},"The server must remain running continuously.",[15,4984,4985],{},[18,4986],{"alt":20,"src":4987},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage532.webp",[15,4989,4990],{},"The client returns to the terminal once execution is complete.",[15,4992,4993],{},[18,4994],{"alt":20,"src":4995},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage533.webp",[15,4997,4998],{},"So the client doesn't need to call the spin function; it just creates the object directly.",[15,5000,5001],{},[18,5002],{"alt":20,"src":5003},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage534.webp",[23,5005,5007],{"className":25,"code":5006,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass AddIntsClient: public rclcpp::Node\n{\n  public:\n    AddIntsClient():Node(\"add_ints_client_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"客户端节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n\u002F\u002F   rclcpp::spin(std::make_shared\u003CAddIntsClient>());\n  auto client = std::make_shared\u003CAddIntsClient>();\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,5008,5009,5015,5019,5036,5040,5044,5060,5064,5083,5087,5091,5095,5117,5121,5131,5135,5141,5165,5169,5179,5187],{"__ignoreMap":20},[32,5010,5011,5013],{"class":34,"line":35},[32,5012,39],{"class":38},[32,5014,43],{"class":42},[32,5016,5017],{"class":34,"line":46},[32,5018,50],{"emptyLinePlaceholder":49},[32,5020,5021,5023,5026,5028,5030,5032,5034],{"class":34,"line":53},[32,5022,56],{"class":38},[32,5024,5025],{"class":59}," AddIntsClient",[32,5027,64],{"class":63},[32,5029,67],{"class":38},[32,5031,70],{"class":59},[32,5033,73],{"class":63},[32,5035,76],{"class":59},[32,5037,5038],{"class":34,"line":79},[32,5039,82],{"class":63},[32,5041,5042],{"class":34,"line":85},[32,5043,88],{"class":38},[32,5045,5046,5049,5051,5053,5055,5058],{"class":34,"line":91},[32,5047,5048],{"class":59},"    AddIntsClient",[32,5050,97],{"class":63},[32,5052,100],{"class":59},[32,5054,103],{"class":63},[32,5056,5057],{"class":42},"\"add_ints_client_node_cpp\"",[32,5059,109],{"class":63},[32,5061,5062],{"class":34,"line":112},[32,5063,115],{"class":63},[32,5065,5066,5068,5070,5072,5074,5076,5078,5081],{"class":34,"line":118},[32,5067,121],{"class":59},[32,5069,103],{"class":63},[32,5071,127],{"class":126},[32,5073,130],{"class":63},[32,5075,133],{"class":59},[32,5077,136],{"class":63},[32,5079,5080],{"class":42},"\"客户端节点创建！\"",[32,5082,142],{"class":63},[32,5084,5085],{"class":34,"line":145},[32,5086,148],{"class":63},[32,5088,5089],{"class":34,"line":151},[32,5090,154],{"class":63},[32,5092,5093],{"class":34,"line":157},[32,5094,50],{"emptyLinePlaceholder":49},[32,5096,5097,5099,5101,5103,5105,5107,5109,5111,5113,5115],{"class":34,"line":162},[32,5098,165],{"class":38},[32,5100,168],{"class":59},[32,5102,103],{"class":63},[32,5104,165],{"class":38},[32,5106,176],{"class":175},[32,5108,179],{"class":63},[32,5110,182],{"class":38},[32,5112,185],{"class":38},[32,5114,188],{"class":175},[32,5116,109],{"class":63},[32,5118,5119],{"class":34,"line":193},[32,5120,82],{"class":63},[32,5122,5123,5125,5127,5129],{"class":34,"line":198},[32,5124,201],{"class":59},[32,5126,73],{"class":63},[32,5128,206],{"class":59},[32,5130,209],{"class":63},[32,5132,5133],{"class":34,"line":212},[32,5134,50],{"emptyLinePlaceholder":49},[32,5136,5137],{"class":34,"line":217},[32,5138,5140],{"class":5139},"sJ8bj","\u002F\u002F   rclcpp::spin(std::make_shared\u003CAddIntsClient>());\n",[32,5142,5143,5146,5149,5151,5153,5155,5157,5159,5162],{"class":34,"line":246},[32,5144,5145],{"class":38},"  auto",[32,5147,5148],{"class":63}," client ",[32,5150,1396],{"class":38},[32,5152,1307],{"class":59},[32,5154,73],{"class":63},[32,5156,234],{"class":59},[32,5158,237],{"class":63},[32,5160,5161],{"class":59},"AddIntsClient",[32,5163,5164],{"class":63},">();\n",[32,5166,5167],{"class":34,"line":251},[32,5168,50],{"emptyLinePlaceholder":49},[32,5170,5171,5173,5175,5177],{"class":34,"line":264},[32,5172,201],{"class":59},[32,5174,73],{"class":63},[32,5176,258],{"class":59},[32,5178,261],{"class":63},[32,5180,5181,5183,5185],{"class":34,"line":276},[32,5182,267],{"class":38},[32,5184,270],{"class":126},[32,5186,273],{"class":63},[32,5188,5189],{"class":34,"line":495},[32,5190,279],{"class":63},[15,5192,5193],{},"Then you also need to edit the configuration file.",[15,5195,5196],{},[18,5197],{"alt":20,"src":5198},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage535.webp",[15,5200,5201],{},"There is no need to modify package.xml for now.",[15,5203,5204],{},[18,5205],{"alt":20,"src":5206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage536.webp",[15,5208,5209],{},[18,5210],{"alt":20,"src":5211},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage537.webp",[15,5213,5214],{},[18,5215],{"alt":20,"src":5216},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage538.webp",[15,5218,5219],{},[18,5220],{"alt":20,"src":5221},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage539.webp",[15,5223,5224],{},[18,5225],{"alt":20,"src":5226},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage540.webp",[561,5228],{},[15,5230,5231],{},[18,5232],{"alt":20,"src":5233},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage541.webp",[15,5235,5236],{},[18,5237],{"alt":20,"src":5238},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage542.webp",[15,5240,5241],{},[18,5242],{"alt":20,"src":5243},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage543.webp",[15,5245,5246],{},[18,5247],{"alt":20,"src":5248},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage544.webp",[15,5250,5251],{},[18,5252],{"alt":20,"src":5253},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage545.webp",[15,5255,5256],{},"There are 4 input parameters, but the last two have default values, so we only need to worry about the first two.",[15,5258,5259],{},"The first entry parameter is a topic name, a string.",[15,5261,5262],{},"The second input parameter is a callback function.",[15,5264,5265],{},"The return value is a smart pointer of service type.",[15,5267,5268],{},[18,5269],{"alt":20,"src":5270},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage546.webp",[15,5272,5273],{},[18,5274],{"alt":20,"src":5275},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage547.webp",[15,5277,5278],{},[18,5279],{"alt":20,"src":5280},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage548.webp",[15,5282,5283],{},[18,5284],{"alt":20,"src":5285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage549.webp",[15,5287,5288],{},[18,5289],{"alt":20,"src":5290},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage550.webp",[15,5292,5293],{},[18,5294],{"alt":20,"src":5295},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage551.webp",[15,5297,5298],{},[18,5299],{"alt":20,"src":5300},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage552.webp",[15,5302,5303],{},[18,5304],{"alt":20,"src":5305},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage553.webp",[23,5307,5309],{"className":25,"code":5308,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"base_interfaces_demo\u002Fsrv\u002Fadd_ints.hpp\"\n\nusing base_interfaces_demo::srv::AddInts;\n\nclass AddIntsServer: public rclcpp::Node\n{\n  public:\n    AddIntsServer():Node(\"add_ints_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"服务端节点创建！\");\n      server_ = this->create_service\u003Cbase_interfaces_demo::srv::AddInts>(\"add_ints\",std::bind(&AddIntsServer::add_callback,this,std::placeholders::_1,std::placeholders::2));\n    }\n  private:\n    void add_callback(const AddInts::Request::SharedPtr req,AddInts::Response::SharedPtr res)\n    {\n      res->sum = req->num1 + (*req).num2;\n      RCLCPP_INFO(this->get_logger(),\"%d + %d = %d\",req->num1,req->num2,res->sum);\n    }\n_    rclcpp::Service\u003Cbase_interfaces_demo::srv::AddInts>::SharedPtr server_;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CAddIntsServer>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,5310,5311,5317,5324,5328,5342,5346,5362,5366,5370,5384,5388,5406,5478,5482,5486,5532,5536,5558,5590,5594,5620,5624,5628,5650,5654,5664,5668,5690,5694,5704,5712],{"__ignoreMap":20},[32,5312,5313,5315],{"class":34,"line":35},[32,5314,39],{"class":38},[32,5316,43],{"class":42},[32,5318,5319,5321],{"class":34,"line":46},[32,5320,39],{"class":38},[32,5322,5323],{"class":42}," \"base_interfaces_demo\u002Fsrv\u002Fadd_ints.hpp\"\n",[32,5325,5326],{"class":34,"line":53},[32,5327,50],{"emptyLinePlaceholder":49},[32,5329,5330,5332,5334,5336,5339],{"class":34,"line":79},[32,5331,1301],{"class":38},[32,5333,3873],{"class":59},[32,5335,73],{"class":63},[32,5337,5338],{"class":59},"srv",[32,5340,5341],{"class":63},"::AddInts;\n",[32,5343,5344],{"class":34,"line":85},[32,5345,50],{"emptyLinePlaceholder":49},[32,5347,5348,5350,5352,5354,5356,5358,5360],{"class":34,"line":91},[32,5349,56],{"class":38},[32,5351,4811],{"class":59},[32,5353,64],{"class":63},[32,5355,67],{"class":38},[32,5357,70],{"class":59},[32,5359,73],{"class":63},[32,5361,76],{"class":59},[32,5363,5364],{"class":34,"line":112},[32,5365,82],{"class":63},[32,5367,5368],{"class":34,"line":118},[32,5369,88],{"class":38},[32,5371,5372,5374,5376,5378,5380,5382],{"class":34,"line":145},[32,5373,4834],{"class":59},[32,5375,97],{"class":63},[32,5377,100],{"class":59},[32,5379,103],{"class":63},[32,5381,4843],{"class":42},[32,5383,109],{"class":63},[32,5385,5386],{"class":34,"line":151},[32,5387,115],{"class":63},[32,5389,5390,5392,5394,5396,5398,5400,5402,5404],{"class":34,"line":157},[32,5391,121],{"class":59},[32,5393,103],{"class":63},[32,5395,127],{"class":126},[32,5397,130],{"class":63},[32,5399,133],{"class":59},[32,5401,136],{"class":63},[32,5403,4866],{"class":42},[32,5405,142],{"class":63},[32,5407,5408,5411,5413,5415,5418,5420,5422,5424,5426,5429,5431,5433,5436,5438,5440,5442,5444,5446,5448,5450,5453,5455,5457,5459,5461,5463,5466,5468,5470,5472,5474,5476],{"class":34,"line":162},[32,5409,5410],{"class":63},"      server_ ",[32,5412,1396],{"class":38},[32,5414,1399],{"class":126},[32,5416,5417],{"class":63},"->create_service",[32,5419,237],{"class":38},[32,5421,3778],{"class":59},[32,5423,73],{"class":63},[32,5425,5338],{"class":59},[32,5427,5428],{"class":63},"::AddInts",[32,5430,1418],{"class":38},[32,5432,103],{"class":63},[32,5434,5435],{"class":42},"\"add_ints\"",[32,5437,1426],{"class":63},[32,5439,229],{"class":59},[32,5441,73],{"class":63},[32,5443,1462],{"class":59},[32,5445,103],{"class":63},[32,5447,1467],{"class":38},[32,5449,4941],{"class":59},[32,5451,5452],{"class":63},"::add_callback,",[32,5454,127],{"class":126},[32,5456,1426],{"class":63},[32,5458,229],{"class":59},[32,5460,73],{"class":63},[32,5462,2262],{"class":59},[32,5464,5465],{"class":63},"::_1,",[32,5467,229],{"class":59},[32,5469,73],{"class":63},[32,5471,2262],{"class":59},[32,5473,73],{"class":63},[32,5475,804],{"class":126},[32,5477,1477],{"class":63},[32,5479,5480],{"class":34,"line":193},[32,5481,148],{"class":63},[32,5483,5484],{"class":34,"line":198},[32,5485,1486],{"class":38},[32,5487,5488,5490,5493,5495,5497,5500,5502,5505,5507,5510,5513,5515,5518,5520,5523,5525,5527,5530],{"class":34,"line":212},[32,5489,1491],{"class":38},[32,5491,5492],{"class":59}," add_callback",[32,5494,103],{"class":63},[32,5496,2290],{"class":38},[32,5498,5499],{"class":59}," AddInts",[32,5501,73],{"class":63},[32,5503,5504],{"class":59},"Request",[32,5506,73],{"class":63},[32,5508,5509],{"class":59},"SharedPtr",[32,5511,5512],{"class":175}," req",[32,5514,1426],{"class":63},[32,5516,5517],{"class":59},"AddInts",[32,5519,73],{"class":63},[32,5521,5522],{"class":59},"Response",[32,5524,73],{"class":63},[32,5526,5509],{"class":59},[32,5528,5529],{"class":175}," res",[32,5531,109],{"class":63},[32,5533,5534],{"class":34,"line":217},[32,5535,115],{"class":63},[32,5537,5538,5541,5543,5546,5549,5552,5555],{"class":34,"line":246},[32,5539,5540],{"class":63},"      res->sum ",[32,5542,1396],{"class":38},[32,5544,5545],{"class":63}," req->num1 ",[32,5547,5548],{"class":38},"+",[32,5550,5551],{"class":63}," (",[32,5553,5554],{"class":38},"*",[32,5556,5557],{"class":63},"req).num2;\n",[32,5559,5560,5562,5564,5566,5568,5570,5572,5574,5576,5578,5580,5583,5585,5587],{"class":34,"line":251},[32,5561,121],{"class":59},[32,5563,103],{"class":63},[32,5565,127],{"class":126},[32,5567,130],{"class":63},[32,5569,133],{"class":59},[32,5571,136],{"class":63},[32,5573,368],{"class":42},[32,5575,3964],{"class":126},[32,5577,835],{"class":42},[32,5579,3964],{"class":126},[32,5581,5582],{"class":42}," = ",[32,5584,3964],{"class":126},[32,5586,368],{"class":42},[32,5588,5589],{"class":63},",req->num1,req->num2,res->sum);\n",[32,5591,5592],{"class":34,"line":264},[32,5593,148],{"class":63},[32,5595,5596,5598,5600,5602,5605,5607,5609,5611,5613,5615,5617],{"class":34,"line":276},[32,5597,4392],{"class":63},[32,5599,4395],{"class":59},[32,5601,73],{"class":63},[32,5603,5604],{"class":59},"Service",[32,5606,237],{"class":63},[32,5608,3778],{"class":59},[32,5610,73],{"class":63},[32,5612,5338],{"class":59},[32,5614,73],{"class":63},[32,5616,5517],{"class":59},[32,5618,5619],{"class":63},">::SharedPtr server_;\n",[32,5621,5622],{"class":34,"line":495},[32,5623,154],{"class":63},[32,5625,5626],{"class":34,"line":502},[32,5627,50],{"emptyLinePlaceholder":49},[32,5629,5630,5632,5634,5636,5638,5640,5642,5644,5646,5648],{"class":34,"line":510},[32,5631,165],{"class":38},[32,5633,168],{"class":59},[32,5635,103],{"class":63},[32,5637,165],{"class":38},[32,5639,176],{"class":175},[32,5641,179],{"class":63},[32,5643,182],{"class":38},[32,5645,185],{"class":38},[32,5647,188],{"class":175},[32,5649,109],{"class":63},[32,5651,5652],{"class":34,"line":518},[32,5653,82],{"class":63},[32,5655,5656,5658,5660,5662],{"class":34,"line":524},[32,5657,201],{"class":59},[32,5659,73],{"class":63},[32,5661,206],{"class":59},[32,5663,209],{"class":63},[32,5665,5666],{"class":34,"line":530},[32,5667,50],{"emptyLinePlaceholder":49},[32,5669,5670,5672,5674,5676,5678,5680,5682,5684,5686,5688],{"class":34,"line":541},[32,5671,201],{"class":59},[32,5673,73],{"class":63},[32,5675,224],{"class":59},[32,5677,103],{"class":63},[32,5679,229],{"class":59},[32,5681,73],{"class":63},[32,5683,234],{"class":59},[32,5685,237],{"class":63},[32,5687,4941],{"class":59},[32,5689,243],{"class":63},[32,5691,5692],{"class":34,"line":547},[32,5693,50],{"emptyLinePlaceholder":49},[32,5695,5696,5698,5700,5702],{"class":34,"line":1676},[32,5697,201],{"class":59},[32,5699,73],{"class":63},[32,5701,258],{"class":59},[32,5703,261],{"class":63},[32,5705,5706,5708,5710],{"class":34,"line":1681},[32,5707,267],{"class":38},[32,5709,270],{"class":126},[32,5711,273],{"class":63},[32,5713,5714],{"class":34,"line":1692},[32,5715,279],{"class":63},[15,5717,5718],{},[18,5719],{"alt":20,"src":5720},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage554.webp",[15,5722,5723],{},[18,5724],{"alt":20,"src":5725},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage555.webp",[15,5727,5728,5729,5732],{},"Since we haven't written the client yet, we'll temporarily use the ",[29,5730,5731],{},"ros2 service call"," tool to check the server's status.",[15,5734,5735],{},[18,5736],{"alt":20,"src":5737},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage556.webp",[23,5739,5741],{"className":1761,"code":5740,"language":1763,"meta":20,"style":20},"ros2 service call \u002Fadd_ints base_interfaces_demo\u002Fsrv\u002FAddInts \"{'num1': 10,'num2': 30}\"\n",[29,5742,5743],{"__ignoreMap":20},[32,5744,5745,5747,5750,5753,5756,5759],{"class":34,"line":35},[32,5746,1770],{"class":59},[32,5748,5749],{"class":42}," service",[32,5751,5752],{"class":42}," call",[32,5754,5755],{"class":42}," \u002Fadd_ints",[32,5757,5758],{"class":42}," base_interfaces_demo\u002Fsrv\u002FAddInts",[32,5760,5761],{"class":42}," \"{'num1': 10,'num2': 30}\"\n",[15,5763,5764],{},"ros2 service call + topic name + interface data type + JSON code (which can also be understood as YAML format)",[15,5766,5767,5768,5771,5772,5774],{},"This JSON code (YAML format) format: \"{'name of the first number': ",[635,5769,5770],{},"space"," + corresponding value, 'name of the second number': ",[635,5773,5770],{}," + corresponding value}\"",[10,5776,5778],{"id":5777},"service-communication-_-experiment-1-_-client-implementation-c","Service Communication _ Experiment 1 _ Client Implementation (C++)",[15,5780,5781],{},[18,5782],{"alt":20,"src":5783},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage557.webp",[15,5785,5786],{},[18,5787],{"alt":20,"src":5788},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage558.webp",[15,5790,5791],{},[18,5792],{"alt":20,"src":5793},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage559.webp",[15,5795,5796],{},[18,5797],{"alt":20,"src":5798},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage560.webp",[15,5800,5801],{},"When running, it is followed by two integer data.",[15,5803,5804,5805,5808],{},"So this ",[29,5806,5807],{},"argc"," should be equal to 3.",[15,5810,5811],{},[18,5812],{"alt":20,"src":5813},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage561.webp",[15,5815,5816],{},[18,5817],{"alt":20,"src":5818},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage562.webp",[15,5820,5821],{},[18,5822],{"alt":20,"src":5823},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage563.webp",[15,5825,5826],{},[635,5827,5828,5829,5831],{},"argv",[32,5830],{},": receives the argc parameters returned at compile time",[15,5833,5834],{},[635,5835,5836],{},"argc is the total number of command-line arguments.",[15,5838,5839,5843,5844,5846],{},[635,5840,5828,5841],{},[32,5842],{}," contains ",[635,5845,5807],{}," parameters, where the 0th parameter is the full name of the program, and the subsequent parameters are the remaining arguments.",[15,5848,5849],{},[18,5850],{"alt":20,"src":5851},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage564.webp",[15,5853,5854],{},[18,5855],{"alt":20,"src":5856},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage565.webp",[15,5858,5859],{},"The server must be running and the client must be able to connect to it. If the server is not running, any data sent will be lost. However, service communication is typically used for important information that must not be lost.",[15,5861,5862],{},[18,5863],{"alt":20,"src":5864},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage566.webp",[15,5866,5867],{},"After the client finishes sending data, a response is generated, which is directly returned as the function's return value here.",[15,5869,5870],{},[18,5871],{"alt":20,"src":5872},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage567.webp",[15,5874,5875],{},[18,5876],{"alt":20,"src":5877},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage568.webp",[15,5879,5880],{},[18,5881],{"alt":20,"src":5882},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage569.webp",[15,5884,5885],{},[18,5886],{"alt":20,"src":5887},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage570.webp",[15,5889,5890],{},[18,5891],{"alt":20,"src":5892},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage571.webp",[15,5894,5895],{},[18,5896],{"alt":20,"src":5897},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage572.webp",[23,5899,5900],{"className":25,"code":5006,"language":27,"meta":20,"style":20},[29,5901,5902,5908,5912,5928,5932,5936,5950,5954,5972,5976,5980,5984,6006,6010,6020,6024,6028,6048,6052,6062,6070],{"__ignoreMap":20},[32,5903,5904,5906],{"class":34,"line":35},[32,5905,39],{"class":38},[32,5907,43],{"class":42},[32,5909,5910],{"class":34,"line":46},[32,5911,50],{"emptyLinePlaceholder":49},[32,5913,5914,5916,5918,5920,5922,5924,5926],{"class":34,"line":53},[32,5915,56],{"class":38},[32,5917,5025],{"class":59},[32,5919,64],{"class":63},[32,5921,67],{"class":38},[32,5923,70],{"class":59},[32,5925,73],{"class":63},[32,5927,76],{"class":59},[32,5929,5930],{"class":34,"line":79},[32,5931,82],{"class":63},[32,5933,5934],{"class":34,"line":85},[32,5935,88],{"class":38},[32,5937,5938,5940,5942,5944,5946,5948],{"class":34,"line":91},[32,5939,5048],{"class":59},[32,5941,97],{"class":63},[32,5943,100],{"class":59},[32,5945,103],{"class":63},[32,5947,5057],{"class":42},[32,5949,109],{"class":63},[32,5951,5952],{"class":34,"line":112},[32,5953,115],{"class":63},[32,5955,5956,5958,5960,5962,5964,5966,5968,5970],{"class":34,"line":118},[32,5957,121],{"class":59},[32,5959,103],{"class":63},[32,5961,127],{"class":126},[32,5963,130],{"class":63},[32,5965,133],{"class":59},[32,5967,136],{"class":63},[32,5969,5080],{"class":42},[32,5971,142],{"class":63},[32,5973,5974],{"class":34,"line":145},[32,5975,148],{"class":63},[32,5977,5978],{"class":34,"line":151},[32,5979,154],{"class":63},[32,5981,5982],{"class":34,"line":157},[32,5983,50],{"emptyLinePlaceholder":49},[32,5985,5986,5988,5990,5992,5994,5996,5998,6000,6002,6004],{"class":34,"line":162},[32,5987,165],{"class":38},[32,5989,168],{"class":59},[32,5991,103],{"class":63},[32,5993,165],{"class":38},[32,5995,176],{"class":175},[32,5997,179],{"class":63},[32,5999,182],{"class":38},[32,6001,185],{"class":38},[32,6003,188],{"class":175},[32,6005,109],{"class":63},[32,6007,6008],{"class":34,"line":193},[32,6009,82],{"class":63},[32,6011,6012,6014,6016,6018],{"class":34,"line":198},[32,6013,201],{"class":59},[32,6015,73],{"class":63},[32,6017,206],{"class":59},[32,6019,209],{"class":63},[32,6021,6022],{"class":34,"line":212},[32,6023,50],{"emptyLinePlaceholder":49},[32,6025,6026],{"class":34,"line":217},[32,6027,5140],{"class":5139},[32,6029,6030,6032,6034,6036,6038,6040,6042,6044,6046],{"class":34,"line":246},[32,6031,5145],{"class":38},[32,6033,5148],{"class":63},[32,6035,1396],{"class":38},[32,6037,1307],{"class":59},[32,6039,73],{"class":63},[32,6041,234],{"class":59},[32,6043,237],{"class":63},[32,6045,5161],{"class":59},[32,6047,5164],{"class":63},[32,6049,6050],{"class":34,"line":251},[32,6051,50],{"emptyLinePlaceholder":49},[32,6053,6054,6056,6058,6060],{"class":34,"line":264},[32,6055,201],{"class":59},[32,6057,73],{"class":63},[32,6059,258],{"class":59},[32,6061,261],{"class":63},[32,6063,6064,6066,6068],{"class":34,"line":276},[32,6065,267],{"class":38},[32,6067,270],{"class":126},[32,6069,273],{"class":63},[32,6071,6072],{"class":34,"line":495},[32,6073,279],{"class":63},[15,6075,6076],{},[18,6077],{"alt":20,"src":6078},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage573.webp",[15,6080,6081],{},"This section should be placed before node initialization to prevent performing resource-intensive operations before making a judgment.",[15,6083,6084],{},[18,6085],{"alt":20,"src":6086},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage574.webp",[15,6088,6089,6090,6092],{},"Since RCLCPP_INFO is positioned before node creation, it cannot use class methods or instantiation to call get_logger, meaning it cannot access the logger via the ",[29,6091,127],{}," pointer or the node's smart pointer.",[15,6094,6095],{},"Therefore, we adopt the following approach:",[15,6097,6098],{},[18,6099],{"alt":20,"src":6100},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage575.webp",[15,6102,6103,6104,6106],{},"This approach utilizes ",[29,6105,133],{}," from rclcpp, but requires assigning a name to the log, which we'll set as a command-line argument—let's call it \"rclcpp\".",[23,6108,6110],{"className":25,"code":6109,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass AddIntsClient: public rclcpp::Node\n{\n  public:\n    AddIntsClient():Node(\"add_ints_client_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"客户端节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 3)\n  {\n    RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"请提交两个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  auto client = std::make_shared\u003CAddIntsClient>();\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,6111,6112,6118,6122,6138,6142,6146,6160,6164,6182,6186,6190,6194,6216,6220,6236,6241,6266,6274,6278,6288,6292,6312,6316,6326,6334],{"__ignoreMap":20},[32,6113,6114,6116],{"class":34,"line":35},[32,6115,39],{"class":38},[32,6117,43],{"class":42},[32,6119,6120],{"class":34,"line":46},[32,6121,50],{"emptyLinePlaceholder":49},[32,6123,6124,6126,6128,6130,6132,6134,6136],{"class":34,"line":53},[32,6125,56],{"class":38},[32,6127,5025],{"class":59},[32,6129,64],{"class":63},[32,6131,67],{"class":38},[32,6133,70],{"class":59},[32,6135,73],{"class":63},[32,6137,76],{"class":59},[32,6139,6140],{"class":34,"line":79},[32,6141,82],{"class":63},[32,6143,6144],{"class":34,"line":85},[32,6145,88],{"class":38},[32,6147,6148,6150,6152,6154,6156,6158],{"class":34,"line":91},[32,6149,5048],{"class":59},[32,6151,97],{"class":63},[32,6153,100],{"class":59},[32,6155,103],{"class":63},[32,6157,5057],{"class":42},[32,6159,109],{"class":63},[32,6161,6162],{"class":34,"line":112},[32,6163,115],{"class":63},[32,6165,6166,6168,6170,6172,6174,6176,6178,6180],{"class":34,"line":118},[32,6167,121],{"class":59},[32,6169,103],{"class":63},[32,6171,127],{"class":126},[32,6173,130],{"class":63},[32,6175,133],{"class":59},[32,6177,136],{"class":63},[32,6179,5080],{"class":42},[32,6181,142],{"class":63},[32,6183,6184],{"class":34,"line":145},[32,6185,148],{"class":63},[32,6187,6188],{"class":34,"line":151},[32,6189,154],{"class":63},[32,6191,6192],{"class":34,"line":157},[32,6193,50],{"emptyLinePlaceholder":49},[32,6195,6196,6198,6200,6202,6204,6206,6208,6210,6212,6214],{"class":34,"line":162},[32,6197,165],{"class":38},[32,6199,168],{"class":59},[32,6201,103],{"class":63},[32,6203,165],{"class":38},[32,6205,176],{"class":175},[32,6207,179],{"class":63},[32,6209,182],{"class":38},[32,6211,185],{"class":38},[32,6213,188],{"class":175},[32,6215,109],{"class":63},[32,6217,6218],{"class":34,"line":193},[32,6219,82],{"class":63},[32,6221,6222,6225,6228,6231,6234],{"class":34,"line":198},[32,6223,6224],{"class":38},"  if",[32,6226,6227],{"class":63},"(argc ",[32,6229,6230],{"class":38},"!=",[32,6232,6233],{"class":126}," 3",[32,6235,109],{"class":63},[32,6237,6238],{"class":34,"line":212},[32,6239,6240],{"class":63},"  {\n",[32,6242,6243,6246,6248,6250,6252,6254,6256,6259,6261,6264],{"class":34,"line":217},[32,6244,6245],{"class":59},"    RCLCPP_INFO",[32,6247,103],{"class":63},[32,6249,4395],{"class":59},[32,6251,73],{"class":63},[32,6253,133],{"class":59},[32,6255,103],{"class":63},[32,6257,6258],{"class":42},"\"rclcpp\"",[32,6260,3732],{"class":63},[32,6262,6263],{"class":42},"\"请提交两个整形数字!\"",[32,6265,142],{"class":63},[32,6267,6268,6270,6272],{"class":34,"line":246},[32,6269,2016],{"class":38},[32,6271,2896],{"class":126},[32,6273,273],{"class":63},[32,6275,6276],{"class":34,"line":251},[32,6277,544],{"class":63},[32,6279,6280,6282,6284,6286],{"class":34,"line":264},[32,6281,201],{"class":59},[32,6283,73],{"class":63},[32,6285,206],{"class":59},[32,6287,209],{"class":63},[32,6289,6290],{"class":34,"line":276},[32,6291,50],{"emptyLinePlaceholder":49},[32,6293,6294,6296,6298,6300,6302,6304,6306,6308,6310],{"class":34,"line":495},[32,6295,5145],{"class":38},[32,6297,5148],{"class":63},[32,6299,1396],{"class":38},[32,6301,1307],{"class":59},[32,6303,73],{"class":63},[32,6305,234],{"class":59},[32,6307,237],{"class":63},[32,6309,5161],{"class":59},[32,6311,5164],{"class":63},[32,6313,6314],{"class":34,"line":502},[32,6315,50],{"emptyLinePlaceholder":49},[32,6317,6318,6320,6322,6324],{"class":34,"line":510},[32,6319,201],{"class":59},[32,6321,73],{"class":63},[32,6323,258],{"class":59},[32,6325,261],{"class":63},[32,6327,6328,6330,6332],{"class":34,"line":518},[32,6329,267],{"class":38},[32,6331,270],{"class":126},[32,6333,273],{"class":63},[32,6335,6336],{"class":34,"line":524},[32,6337,279],{"class":63},[15,6339,6340],{},[18,6341],{"alt":20,"src":6342},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage576.webp",[15,6344,6345],{},[18,6346],{"alt":20,"src":6347},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage577.webp",[15,6349,6350],{},[18,6351],{"alt":20,"src":6352},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage578.webp",[15,6354,6355],{},"If I don't submit any parameters and just press Enter, this is an exception, and the main function's return value is not 0.",[15,6357,6358],{},[18,6359],{"alt":20,"src":6360},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage579.webp",[15,6362,6363],{},[18,6364],{"alt":20,"src":6365},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage580.webp",[15,6367,6368],{},"You can also change INFO to ERROR.",[15,6370,6371],{},[18,6372],{"alt":20,"src":6373},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage581.webp",[23,6375,6377],{"className":25,"code":6376,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass AddIntsClient: public rclcpp::Node\n{\n  public:\n    AddIntsClient():Node(\"add_ints_client_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"客户端节点创建！\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 3)\n  {\n    RCLCPP_ERROR(rclcpp::get_logger(\"rclcpp\"),\"请提交两个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  auto client = std::make_shared\u003CAddIntsClient>();\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,6378,6379,6385,6389,6405,6409,6413,6427,6431,6449,6453,6457,6461,6483,6487,6499,6503,6526,6534,6538,6548,6552,6572,6576,6586,6594],{"__ignoreMap":20},[32,6380,6381,6383],{"class":34,"line":35},[32,6382,39],{"class":38},[32,6384,43],{"class":42},[32,6386,6387],{"class":34,"line":46},[32,6388,50],{"emptyLinePlaceholder":49},[32,6390,6391,6393,6395,6397,6399,6401,6403],{"class":34,"line":53},[32,6392,56],{"class":38},[32,6394,5025],{"class":59},[32,6396,64],{"class":63},[32,6398,67],{"class":38},[32,6400,70],{"class":59},[32,6402,73],{"class":63},[32,6404,76],{"class":59},[32,6406,6407],{"class":34,"line":79},[32,6408,82],{"class":63},[32,6410,6411],{"class":34,"line":85},[32,6412,88],{"class":38},[32,6414,6415,6417,6419,6421,6423,6425],{"class":34,"line":91},[32,6416,5048],{"class":59},[32,6418,97],{"class":63},[32,6420,100],{"class":59},[32,6422,103],{"class":63},[32,6424,5057],{"class":42},[32,6426,109],{"class":63},[32,6428,6429],{"class":34,"line":112},[32,6430,115],{"class":63},[32,6432,6433,6435,6437,6439,6441,6443,6445,6447],{"class":34,"line":118},[32,6434,121],{"class":59},[32,6436,103],{"class":63},[32,6438,127],{"class":126},[32,6440,130],{"class":63},[32,6442,133],{"class":59},[32,6444,136],{"class":63},[32,6446,5080],{"class":42},[32,6448,142],{"class":63},[32,6450,6451],{"class":34,"line":145},[32,6452,148],{"class":63},[32,6454,6455],{"class":34,"line":151},[32,6456,154],{"class":63},[32,6458,6459],{"class":34,"line":157},[32,6460,50],{"emptyLinePlaceholder":49},[32,6462,6463,6465,6467,6469,6471,6473,6475,6477,6479,6481],{"class":34,"line":162},[32,6464,165],{"class":38},[32,6466,168],{"class":59},[32,6468,103],{"class":63},[32,6470,165],{"class":38},[32,6472,176],{"class":175},[32,6474,179],{"class":63},[32,6476,182],{"class":38},[32,6478,185],{"class":38},[32,6480,188],{"class":175},[32,6482,109],{"class":63},[32,6484,6485],{"class":34,"line":193},[32,6486,82],{"class":63},[32,6488,6489,6491,6493,6495,6497],{"class":34,"line":198},[32,6490,6224],{"class":38},[32,6492,6227],{"class":63},[32,6494,6230],{"class":38},[32,6496,6233],{"class":126},[32,6498,109],{"class":63},[32,6500,6501],{"class":34,"line":212},[32,6502,6240],{"class":63},[32,6504,6505,6508,6510,6512,6514,6516,6518,6520,6522,6524],{"class":34,"line":217},[32,6506,6507],{"class":59},"    RCLCPP_ERROR",[32,6509,103],{"class":63},[32,6511,4395],{"class":59},[32,6513,73],{"class":63},[32,6515,133],{"class":59},[32,6517,103],{"class":63},[32,6519,6258],{"class":42},[32,6521,3732],{"class":63},[32,6523,6263],{"class":42},[32,6525,142],{"class":63},[32,6527,6528,6530,6532],{"class":34,"line":246},[32,6529,2016],{"class":38},[32,6531,2896],{"class":126},[32,6533,273],{"class":63},[32,6535,6536],{"class":34,"line":251},[32,6537,544],{"class":63},[32,6539,6540,6542,6544,6546],{"class":34,"line":264},[32,6541,201],{"class":59},[32,6543,73],{"class":63},[32,6545,206],{"class":59},[32,6547,209],{"class":63},[32,6549,6550],{"class":34,"line":276},[32,6551,50],{"emptyLinePlaceholder":49},[32,6553,6554,6556,6558,6560,6562,6564,6566,6568,6570],{"class":34,"line":495},[32,6555,5145],{"class":38},[32,6557,5148],{"class":63},[32,6559,1396],{"class":38},[32,6561,1307],{"class":59},[32,6563,73],{"class":63},[32,6565,234],{"class":59},[32,6567,237],{"class":63},[32,6569,5161],{"class":59},[32,6571,5164],{"class":63},[32,6573,6574],{"class":34,"line":502},[32,6575,50],{"emptyLinePlaceholder":49},[32,6577,6578,6580,6582,6584],{"class":34,"line":510},[32,6579,201],{"class":59},[32,6581,73],{"class":63},[32,6583,258],{"class":59},[32,6585,261],{"class":63},[32,6587,6588,6590,6592],{"class":34,"line":518},[32,6589,267],{"class":38},[32,6591,270],{"class":126},[32,6593,273],{"class":63},[32,6595,6596],{"class":34,"line":524},[32,6597,279],{"class":63},[561,6599],{},[15,6601,6602],{},[18,6603],{"alt":20,"src":6604},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage582.webp",[15,6606,6607],{},"There are a total of 3 entry parameters.",[15,6609,6610],{},"The first input parameter is the topic name, which is a string.",[15,6612,6613],{},"The second and third input parameters have default values, so ignore them for now.",[15,6615,6616],{},"The return value is a smart pointer for the client.",[15,6618,6619],{},[18,6620],{"alt":20,"src":6621},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage583.webp",[15,6623,6624],{},[18,6625],{"alt":20,"src":6626},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage584.webp",[15,6628,6629],{},[18,6630],{"alt":20,"src":6631},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage585.webp",[15,6633,6634],{},[18,6635],{"alt":20,"src":6636},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage586.webp",[15,6638,6639],{},[18,6640],{"alt":20,"src":6641},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage587.webp",[15,6643,6644],{},[18,6645],{"alt":20,"src":6646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage588.webp",[15,6648,6649],{},[18,6650],{"alt":20,"src":6651},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage589.webp",[15,6653,6654],{},[18,6655],{"alt":20,"src":6656},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage590.webp",[15,6658,6659],{},[18,6660],{"alt":20,"src":6661},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage591.webp",[15,6663,6664],{},[18,6665],{"alt":20,"src":6666},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage592.webp",[15,6668,6669],{},[18,6670],{"alt":20,"src":6671},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage593.webp",[15,6673,6674],{},"Once Ctrl+C is pressed to close, it will flood with INFO messages and the program cannot be stopped.",[15,6676,6677],{},[18,6678],{"alt":20,"src":6679},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage594.webp",[15,6681,6682],{},[18,6683],{"alt":20,"src":6684},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage595.webp",[15,6686,6687],{},"Press Ctrl+Z again to stop the program.",[15,6689,6690],{},[18,6691],{"alt":20,"src":6692},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage596.webp",[15,6694,6695],{},[18,6696],{"alt":20,"src":6697},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage597.webp",[15,6699,6700],{},"Fix the Ctrl+C bug mentioned above:",[15,6702,6703],{},[18,6704],{"alt":20,"src":6705},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage598.webp",[15,6707,6708,6711,6712,6715,6716,6719],{},[29,6709,6710],{},"rclcpp::ok()"," checks whether the current program is running normally. If it is running normally, it returns ",[29,6713,6714],{},"true","; if not, it returns ",[29,6717,6718],{},"false",". For example, pressing Ctrl+C causes abnormal termination.",[15,6721,6722,6723,6726],{},"When ",[29,6724,6725],{},"rclcpp::ok() != true",", that means Ctrl+C has been pressed.",[15,6728,6729],{},[18,6730],{"alt":20,"src":6731},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage599.webp",[15,6733,6734],{},"This directly allows the function to end.",[15,6736,6737],{},[18,6738],{"alt":20,"src":6739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage600.webp",[15,6741,6742],{},[18,6743],{"alt":20,"src":6744},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage601.webp",[15,6746,6747],{},"At this point, pressing Ctrl+C will throw many errors.",[15,6749,6750],{},"This is because",[15,6752,6753],{},"this->get_logger()",[15,6755,6756],{},"client->get_logger()",[15,6758,6759],{},"rclcpp::get_logger()",[15,6761,6762],{},"of different",[15,6764,6765],{},"This exception is related to the context. During initialization, a context object is created, which acts as a container. Data can be placed into this container, and data can also be retrieved from it.",[15,6767,6768],{},"Currently, if our connection fails, we print a log.",[15,6770,6771,6772,6774],{},"Pressing Ctrl+C will terminate our ROS2 program, which requires releasing resources such as closing the context. Once the context is closed, attempting to retrieve logs from the client or this instance will no longer work. Therefore, it is recommended to use ",[29,6773,6759],{}," instead.",[15,6776,6777],{},"The call to rclcpp::get_logger() has nothing to do with the context.",[15,6779,6780],{},[18,6781],{"alt":20,"src":6782},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage602.webp",[15,6784,6785],{},"The program works correctly now!",[23,6787,6789],{"className":25,"code":6788,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"base_interfaces_demo\u002Fsrv\u002Fadd_ints.hpp\"\n\nusing base_interfaces_demo::srv::AddInts;\nusing namespace std::chrono_literals;\n\nclass AddIntsClient: public rclcpp::Node\n{\n  public:\n    AddIntsClient():Node(\"add_ints_client_node_cpp\")\n    {\n      RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"客户端节点创建！\");\n      client_ = this->create_client\u003CAddInts>(\"add_ints\");\n    }\n\n    bool connect_server()\n    {\n      while(client_->wait_for_service(1s) != true)\n      {\n        RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"服务连接中!\");\n\n        if (rclcpp::ok() != true)\n        {\n          RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"强行终止客户端!\");\n          return false;\n        }\n      }\n      return true;\n    }\n\n  private:\n    rclcpp::Client\u003CAddInts>::SharedPtr client_;\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 3)\n  {\n    RCLCPP_ERROR(rclcpp::get_logger(\"rclcpp\"),\"请提交两个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  auto client = std::make_shared\u003CAddIntsClient>();\n\n  bool flag = client->connect_server();\n\n  if (flag != true)\n  {\n    RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"服务器连接失败，程序退出!\");\n    return 0;\n  }\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,6790,6791,6797,6803,6807,6819,6833,6837,6853,6857,6861,6875,6879,6901,6925,6929,6933,6943,6947,6974,6979,7002,7006,7029,7034,7058,7068,7073,7078,7087,7091,7095,7099,7115,7119,7123,7145,7149,7161,7165,7187,7196,7201,7212,7217,7238,7243,7262,7267,7281,7286,7310,7319,7324,7329,7340,7349],{"__ignoreMap":20},[32,6792,6793,6795],{"class":34,"line":35},[32,6794,39],{"class":38},[32,6796,43],{"class":42},[32,6798,6799,6801],{"class":34,"line":46},[32,6800,39],{"class":38},[32,6802,5323],{"class":42},[32,6804,6805],{"class":34,"line":53},[32,6806,50],{"emptyLinePlaceholder":49},[32,6808,6809,6811,6813,6815,6817],{"class":34,"line":79},[32,6810,1301],{"class":38},[32,6812,3873],{"class":59},[32,6814,73],{"class":63},[32,6816,5338],{"class":59},[32,6818,5341],{"class":63},[32,6820,6821,6823,6825,6827,6829,6831],{"class":34,"line":85},[32,6822,1301],{"class":38},[32,6824,1304],{"class":38},[32,6826,1307],{"class":59},[32,6828,73],{"class":63},[32,6830,1312],{"class":59},[32,6832,273],{"class":63},[32,6834,6835],{"class":34,"line":91},[32,6836,50],{"emptyLinePlaceholder":49},[32,6838,6839,6841,6843,6845,6847,6849,6851],{"class":34,"line":112},[32,6840,56],{"class":38},[32,6842,5025],{"class":59},[32,6844,64],{"class":63},[32,6846,67],{"class":38},[32,6848,70],{"class":59},[32,6850,73],{"class":63},[32,6852,76],{"class":59},[32,6854,6855],{"class":34,"line":118},[32,6856,82],{"class":63},[32,6858,6859],{"class":34,"line":145},[32,6860,88],{"class":38},[32,6862,6863,6865,6867,6869,6871,6873],{"class":34,"line":151},[32,6864,5048],{"class":59},[32,6866,97],{"class":63},[32,6868,100],{"class":59},[32,6870,103],{"class":63},[32,6872,5057],{"class":42},[32,6874,109],{"class":63},[32,6876,6877],{"class":34,"line":157},[32,6878,115],{"class":63},[32,6880,6881,6883,6885,6887,6889,6891,6893,6895,6897,6899],{"class":34,"line":162},[32,6882,121],{"class":59},[32,6884,103],{"class":63},[32,6886,4395],{"class":59},[32,6888,73],{"class":63},[32,6890,133],{"class":59},[32,6892,103],{"class":63},[32,6894,6258],{"class":42},[32,6896,3732],{"class":63},[32,6898,5080],{"class":42},[32,6900,142],{"class":63},[32,6902,6903,6906,6908,6910,6913,6915,6917,6919,6921,6923],{"class":34,"line":193},[32,6904,6905],{"class":63},"      client_ ",[32,6907,1396],{"class":38},[32,6909,1399],{"class":126},[32,6911,6912],{"class":63},"->create_client",[32,6914,237],{"class":38},[32,6916,5517],{"class":63},[32,6918,1418],{"class":38},[32,6920,103],{"class":63},[32,6922,5435],{"class":42},[32,6924,142],{"class":63},[32,6926,6927],{"class":34,"line":198},[32,6928,148],{"class":63},[32,6930,6931],{"class":34,"line":212},[32,6932,50],{"emptyLinePlaceholder":49},[32,6934,6935,6938,6941],{"class":34,"line":217},[32,6936,6937],{"class":38},"    bool",[32,6939,6940],{"class":59}," connect_server",[32,6942,1497],{"class":63},[32,6944,6945],{"class":34,"line":246},[32,6946,115],{"class":63},[32,6948,6949,6952,6955,6958,6960,6962,6964,6967,6969,6972],{"class":34,"line":251},[32,6950,6951],{"class":38},"      while",[32,6953,6954],{"class":63},"(client_->",[32,6956,6957],{"class":59},"wait_for_service",[32,6959,103],{"class":63},[32,6961,1450],{"class":126},[32,6963,1453],{"class":38},[32,6965,6966],{"class":63},") ",[32,6968,6230],{"class":38},[32,6970,6971],{"class":126}," true",[32,6973,109],{"class":63},[32,6975,6976],{"class":34,"line":264},[32,6977,6978],{"class":63},"      {\n",[32,6980,6981,6983,6985,6987,6989,6991,6993,6995,6997,7000],{"class":34,"line":276},[32,6982,1905],{"class":59},[32,6984,103],{"class":63},[32,6986,4395],{"class":59},[32,6988,73],{"class":63},[32,6990,133],{"class":59},[32,6992,103],{"class":63},[32,6994,6258],{"class":42},[32,6996,3732],{"class":63},[32,6998,6999],{"class":42},"\"服务连接中!\"",[32,7001,142],{"class":63},[32,7003,7004],{"class":34,"line":495},[32,7005,50],{"emptyLinePlaceholder":49},[32,7007,7008,7011,7013,7015,7017,7020,7023,7025,7027],{"class":34,"line":502},[32,7009,7010],{"class":38},"        if",[32,7012,5551],{"class":63},[32,7014,4395],{"class":59},[32,7016,73],{"class":63},[32,7018,7019],{"class":59},"ok",[32,7021,7022],{"class":63},"() ",[32,7024,6230],{"class":38},[32,7026,6971],{"class":126},[32,7028,109],{"class":63},[32,7030,7031],{"class":34,"line":510},[32,7032,7033],{"class":63},"        {\n",[32,7035,7036,7039,7041,7043,7045,7047,7049,7051,7053,7056],{"class":34,"line":518},[32,7037,7038],{"class":59},"          RCLCPP_INFO",[32,7040,103],{"class":63},[32,7042,4395],{"class":59},[32,7044,73],{"class":63},[32,7046,133],{"class":59},[32,7048,103],{"class":63},[32,7050,6258],{"class":42},[32,7052,3732],{"class":63},[32,7054,7055],{"class":42},"\"强行终止客户端!\"",[32,7057,142],{"class":63},[32,7059,7060,7063,7066],{"class":34,"line":524},[32,7061,7062],{"class":38},"          return",[32,7064,7065],{"class":126}," false",[32,7067,273],{"class":63},[32,7069,7070],{"class":34,"line":530},[32,7071,7072],{"class":63},"        }\n",[32,7074,7075],{"class":34,"line":541},[32,7076,7077],{"class":63},"      }\n",[32,7079,7080,7083,7085],{"class":34,"line":547},[32,7081,7082],{"class":38},"      return",[32,7084,6971],{"class":126},[32,7086,273],{"class":63},[32,7088,7089],{"class":34,"line":1676},[32,7090,148],{"class":63},[32,7092,7093],{"class":34,"line":1681},[32,7094,50],{"emptyLinePlaceholder":49},[32,7096,7097],{"class":34,"line":1692},[32,7098,1486],{"class":38},[32,7100,7101,7103,7105,7108,7110,7112],{"class":34,"line":1697},[32,7102,1604],{"class":59},[32,7104,73],{"class":63},[32,7106,7107],{"class":59},"Client",[32,7109,237],{"class":63},[32,7111,5517],{"class":59},[32,7113,7114],{"class":63},">::SharedPtr client_;\n",[32,7116,7117],{"class":34,"line":1720},[32,7118,154],{"class":63},[32,7120,7121],{"class":34,"line":1725},[32,7122,50],{"emptyLinePlaceholder":49},[32,7124,7125,7127,7129,7131,7133,7135,7137,7139,7141,7143],{"class":34,"line":1736},[32,7126,165],{"class":38},[32,7128,168],{"class":59},[32,7130,103],{"class":63},[32,7132,165],{"class":38},[32,7134,176],{"class":175},[32,7136,179],{"class":63},[32,7138,182],{"class":38},[32,7140,185],{"class":38},[32,7142,188],{"class":175},[32,7144,109],{"class":63},[32,7146,7147],{"class":34,"line":1745},[32,7148,82],{"class":63},[32,7150,7151,7153,7155,7157,7159],{"class":34,"line":4099},[32,7152,6224],{"class":38},[32,7154,6227],{"class":63},[32,7156,6230],{"class":38},[32,7158,6233],{"class":126},[32,7160,109],{"class":63},[32,7162,7163],{"class":34,"line":4110},[32,7164,6240],{"class":63},[32,7166,7167,7169,7171,7173,7175,7177,7179,7181,7183,7185],{"class":34,"line":4119},[32,7168,6507],{"class":59},[32,7170,103],{"class":63},[32,7172,4395],{"class":59},[32,7174,73],{"class":63},[32,7176,133],{"class":59},[32,7178,103],{"class":63},[32,7180,6258],{"class":42},[32,7182,3732],{"class":63},[32,7184,6263],{"class":42},[32,7186,142],{"class":63},[32,7188,7190,7192,7194],{"class":34,"line":7189},40,[32,7191,2016],{"class":38},[32,7193,2896],{"class":126},[32,7195,273],{"class":63},[32,7197,7199],{"class":34,"line":7198},41,[32,7200,544],{"class":63},[32,7202,7204,7206,7208,7210],{"class":34,"line":7203},42,[32,7205,201],{"class":59},[32,7207,73],{"class":63},[32,7209,206],{"class":59},[32,7211,209],{"class":63},[32,7213,7215],{"class":34,"line":7214},43,[32,7216,50],{"emptyLinePlaceholder":49},[32,7218,7220,7222,7224,7226,7228,7230,7232,7234,7236],{"class":34,"line":7219},44,[32,7221,5145],{"class":38},[32,7223,5148],{"class":63},[32,7225,1396],{"class":38},[32,7227,1307],{"class":59},[32,7229,73],{"class":63},[32,7231,234],{"class":59},[32,7233,237],{"class":63},[32,7235,5161],{"class":59},[32,7237,5164],{"class":63},[32,7239,7241],{"class":34,"line":7240},45,[32,7242,50],{"emptyLinePlaceholder":49},[32,7244,7246,7249,7252,7254,7257,7260],{"class":34,"line":7245},46,[32,7247,7248],{"class":38},"  bool",[32,7250,7251],{"class":63}," flag ",[32,7253,1396],{"class":38},[32,7255,7256],{"class":63}," client->",[32,7258,7259],{"class":59},"connect_server",[32,7261,261],{"class":63},[32,7263,7265],{"class":34,"line":7264},47,[32,7266,50],{"emptyLinePlaceholder":49},[32,7268,7270,7272,7275,7277,7279],{"class":34,"line":7269},48,[32,7271,6224],{"class":38},[32,7273,7274],{"class":63}," (flag ",[32,7276,6230],{"class":38},[32,7278,6971],{"class":126},[32,7280,109],{"class":63},[32,7282,7284],{"class":34,"line":7283},49,[32,7285,6240],{"class":63},[32,7287,7289,7291,7293,7295,7297,7299,7301,7303,7305,7308],{"class":34,"line":7288},50,[32,7290,6245],{"class":59},[32,7292,103],{"class":63},[32,7294,4395],{"class":59},[32,7296,73],{"class":63},[32,7298,133],{"class":59},[32,7300,103],{"class":63},[32,7302,6258],{"class":42},[32,7304,3732],{"class":63},[32,7306,7307],{"class":42},"\"服务器连接失败，程序退出!\"",[32,7309,142],{"class":63},[32,7311,7313,7315,7317],{"class":34,"line":7312},51,[32,7314,2016],{"class":38},[32,7316,270],{"class":126},[32,7318,273],{"class":63},[32,7320,7322],{"class":34,"line":7321},52,[32,7323,544],{"class":63},[32,7325,7327],{"class":34,"line":7326},53,[32,7328,50],{"emptyLinePlaceholder":49},[32,7330,7332,7334,7336,7338],{"class":34,"line":7331},54,[32,7333,201],{"class":59},[32,7335,73],{"class":63},[32,7337,258],{"class":59},[32,7339,261],{"class":63},[32,7341,7343,7345,7347],{"class":34,"line":7342},55,[32,7344,267],{"class":38},[32,7346,270],{"class":126},[32,7348,273],{"class":63},[32,7350,7352],{"class":34,"line":7351},56,[32,7353,279],{"class":63},[15,7355,7356],{},[18,7357],{"alt":20,"src":7358},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage603.webp",[561,7360],{},[15,7362,7363],{},[18,7364],{"alt":20,"src":7365},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage604.webp",[15,7367,7368],{},[18,7369],{"alt":20,"src":7370},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage605.webp",[15,7372,7373],{},[18,7374],{"alt":20,"src":7375},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage606.webp",[15,7377,7378],{},"Now that we have the return value type, let's paste it over.",[15,7380,7381],{},"Because of using base_interfaces_demo::srv::AddInts, you can abbreviate it to AddInts.",[15,7383,7384],{},[18,7385],{"alt":20,"src":7386},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage607.webp",[15,7388,7389],{},[18,7390],{"alt":20,"src":7391},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage608.webp",[15,7393,7394],{},[18,7395],{"alt":20,"src":7396},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage609.webp",[15,7398,7399],{},"In the main function, you need to call the function.",[15,7401,7402],{},[18,7403],{"alt":20,"src":7404},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage610.webp",[15,7406,7407],{},"atoi() converts data into an integer.",[15,7409,7410],{},[18,7411],{"alt":20,"src":7412},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage611.webp",[15,7414,7415],{},"We also need to handle the response. There are 3 responses.",[15,7417,7418],{},"The first is interrupt, the second is success, and the third is timeout.",[15,7420,7421],{},"We generally only consider success, and treat the other two cases as failures.",[15,7423,7424],{},[18,7425],{"alt":20,"src":7426},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage612.webp",[15,7428,7429],{},"The first entry parameter is the smart pointer of the node.",[15,7431,7432],{},"The second input parameter is the future.",[15,7434,1172],{},[15,7436,7437],{},[18,7438],{"alt":20,"src":7439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage613.webp",[15,7441,7442],{},[18,7443],{"alt":20,"src":7444},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage614.webp",[15,7446,7447],{},[18,7448],{"alt":20,"src":7449},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage615.webp",[15,7451,7452],{},[18,7453],{"alt":20,"src":7454},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage616.webp",[15,7456,7457],{},[18,7458],{"alt":20,"src":7459},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage617.webp",[23,7461,7463],{"className":25,"code":7462,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"base_interfaces_demo\u002Fsrv\u002Fadd_ints.hpp\"\n\nusing base_interfaces_demo::srv::AddInts;\nusing namespace std::chrono_literals;\n\nclass AddIntsClient: public rclcpp::Node\n{\n  public:\n    AddIntsClient():Node(\"add_ints_client_node_cpp\")\n    {\n      RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"客户端节点创建！\");\n      client_ = this->create_client\u003CAddInts>(\"add_ints\");\n    }\n\n    bool connect_server()\n    {\n      while(client_->wait_for_service(1s) != true)\n      {\n        RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"服务连接中!\");\n\n        if (rclcpp::ok() != true)\n        {\n          RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"强行终止客户端!\");\n          return false;\n        }\n      }\n      return true;\n    }\n\n    rclcpp::Client\u003CAddInts>::FutureAndRequestId send_request(int32_t num1,int32_t num2)\n    {\n      \u002F*\n        返回值 rclcpp::Client\u003Cbase_interfaces_demo::srv::AddInts>::FutureAndRequestId\n        入口参数 async_send_request(std::shared_ptr\u003Cbase_interfaces_demo::srv::AddInts_Request> request)  \u002F\u002F其实就相当于AddInts::Request类型\n      *\u002F\n      auto request = std::make_sharedautolinkAddInts::Requestautolink();\n      request->num1 = num1;\n      request->num2 = num2;\n      return client_->async_send_request(request);\n    }\n\n  private:\n    rclcpp::Client\u003CAddInts>::SharedPtr client_;\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 3)\n  {\n    RCLCPP_ERROR(rclcpp::get_logger(\"rclcpp\"),\"请提交两个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  auto client = std::make_shared\u003CAddIntsClient>();\n\n  bool flag = client->connect_server();\n\n  if (flag != true)\n  {\n    RCLCPP_INFO(rclcpp::get_logger(\"rclcpp\"),\"服务器连接失败，程序退出!\");\n    return 0;\n  }\n  auto future = client->send_request(atoi(argv[1]),atoi(argv[2]));\n\n  if (rclcpp::spin_until_future_complete(client,future) == rclcpp::FutureReturnCode::SUCCESS)\n  {\n    RCLCPP_INFO(client->get_logger(),\"响应成功! sum = %d\",future.get()->sum);\n  }\n  else\n  {\n    RCLCPP_INFO(client->get_logger(),\"响应失败!\");\n  }\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,7464,7465,7471,7477,7481,7493,7507,7511,7527,7531,7535,7549,7553,7575,7597,7601,7605,7613,7617,7639,7643,7665,7669,7689,7693,7715,7723,7727,7731,7739,7743,7747,7785,7789,7794,7799,7804,7809,7832,7842,7852,7865,7869,7873,7877,7891,7895,7899,7921,7925,7937,7941,7963,7971,7975,7985,7989,8009,8014,8029,8034,8047,8052,8075,8084,8089,8126,8131,8161,8166,8194,8199,8205,8210,8226,8231,8236,8247,8256],{"__ignoreMap":20},[32,7466,7467,7469],{"class":34,"line":35},[32,7468,39],{"class":38},[32,7470,43],{"class":42},[32,7472,7473,7475],{"class":34,"line":46},[32,7474,39],{"class":38},[32,7476,5323],{"class":42},[32,7478,7479],{"class":34,"line":53},[32,7480,50],{"emptyLinePlaceholder":49},[32,7482,7483,7485,7487,7489,7491],{"class":34,"line":79},[32,7484,1301],{"class":38},[32,7486,3873],{"class":59},[32,7488,73],{"class":63},[32,7490,5338],{"class":59},[32,7492,5341],{"class":63},[32,7494,7495,7497,7499,7501,7503,7505],{"class":34,"line":85},[32,7496,1301],{"class":38},[32,7498,1304],{"class":38},[32,7500,1307],{"class":59},[32,7502,73],{"class":63},[32,7504,1312],{"class":59},[32,7506,273],{"class":63},[32,7508,7509],{"class":34,"line":91},[32,7510,50],{"emptyLinePlaceholder":49},[32,7512,7513,7515,7517,7519,7521,7523,7525],{"class":34,"line":112},[32,7514,56],{"class":38},[32,7516,5025],{"class":59},[32,7518,64],{"class":63},[32,7520,67],{"class":38},[32,7522,70],{"class":59},[32,7524,73],{"class":63},[32,7526,76],{"class":59},[32,7528,7529],{"class":34,"line":118},[32,7530,82],{"class":63},[32,7532,7533],{"class":34,"line":145},[32,7534,88],{"class":38},[32,7536,7537,7539,7541,7543,7545,7547],{"class":34,"line":151},[32,7538,5048],{"class":59},[32,7540,97],{"class":63},[32,7542,100],{"class":59},[32,7544,103],{"class":63},[32,7546,5057],{"class":42},[32,7548,109],{"class":63},[32,7550,7551],{"class":34,"line":157},[32,7552,115],{"class":63},[32,7554,7555,7557,7559,7561,7563,7565,7567,7569,7571,7573],{"class":34,"line":162},[32,7556,121],{"class":59},[32,7558,103],{"class":63},[32,7560,4395],{"class":59},[32,7562,73],{"class":63},[32,7564,133],{"class":59},[32,7566,103],{"class":63},[32,7568,6258],{"class":42},[32,7570,3732],{"class":63},[32,7572,5080],{"class":42},[32,7574,142],{"class":63},[32,7576,7577,7579,7581,7583,7585,7587,7589,7591,7593,7595],{"class":34,"line":193},[32,7578,6905],{"class":63},[32,7580,1396],{"class":38},[32,7582,1399],{"class":126},[32,7584,6912],{"class":63},[32,7586,237],{"class":38},[32,7588,5517],{"class":63},[32,7590,1418],{"class":38},[32,7592,103],{"class":63},[32,7594,5435],{"class":42},[32,7596,142],{"class":63},[32,7598,7599],{"class":34,"line":198},[32,7600,148],{"class":63},[32,7602,7603],{"class":34,"line":212},[32,7604,50],{"emptyLinePlaceholder":49},[32,7606,7607,7609,7611],{"class":34,"line":217},[32,7608,6937],{"class":38},[32,7610,6940],{"class":59},[32,7612,1497],{"class":63},[32,7614,7615],{"class":34,"line":246},[32,7616,115],{"class":63},[32,7618,7619,7621,7623,7625,7627,7629,7631,7633,7635,7637],{"class":34,"line":251},[32,7620,6951],{"class":38},[32,7622,6954],{"class":63},[32,7624,6957],{"class":59},[32,7626,103],{"class":63},[32,7628,1450],{"class":126},[32,7630,1453],{"class":38},[32,7632,6966],{"class":63},[32,7634,6230],{"class":38},[32,7636,6971],{"class":126},[32,7638,109],{"class":63},[32,7640,7641],{"class":34,"line":264},[32,7642,6978],{"class":63},[32,7644,7645,7647,7649,7651,7653,7655,7657,7659,7661,7663],{"class":34,"line":276},[32,7646,1905],{"class":59},[32,7648,103],{"class":63},[32,7650,4395],{"class":59},[32,7652,73],{"class":63},[32,7654,133],{"class":59},[32,7656,103],{"class":63},[32,7658,6258],{"class":42},[32,7660,3732],{"class":63},[32,7662,6999],{"class":42},[32,7664,142],{"class":63},[32,7666,7667],{"class":34,"line":495},[32,7668,50],{"emptyLinePlaceholder":49},[32,7670,7671,7673,7675,7677,7679,7681,7683,7685,7687],{"class":34,"line":502},[32,7672,7010],{"class":38},[32,7674,5551],{"class":63},[32,7676,4395],{"class":59},[32,7678,73],{"class":63},[32,7680,7019],{"class":59},[32,7682,7022],{"class":63},[32,7684,6230],{"class":38},[32,7686,6971],{"class":126},[32,7688,109],{"class":63},[32,7690,7691],{"class":34,"line":510},[32,7692,7033],{"class":63},[32,7694,7695,7697,7699,7701,7703,7705,7707,7709,7711,7713],{"class":34,"line":518},[32,7696,7038],{"class":59},[32,7698,103],{"class":63},[32,7700,4395],{"class":59},[32,7702,73],{"class":63},[32,7704,133],{"class":59},[32,7706,103],{"class":63},[32,7708,6258],{"class":42},[32,7710,3732],{"class":63},[32,7712,7055],{"class":42},[32,7714,142],{"class":63},[32,7716,7717,7719,7721],{"class":34,"line":524},[32,7718,7062],{"class":38},[32,7720,7065],{"class":126},[32,7722,273],{"class":63},[32,7724,7725],{"class":34,"line":530},[32,7726,7072],{"class":63},[32,7728,7729],{"class":34,"line":541},[32,7730,7077],{"class":63},[32,7732,7733,7735,7737],{"class":34,"line":547},[32,7734,7082],{"class":38},[32,7736,6971],{"class":126},[32,7738,273],{"class":63},[32,7740,7741],{"class":34,"line":1676},[32,7742,148],{"class":63},[32,7744,7745],{"class":34,"line":1681},[32,7746,50],{"emptyLinePlaceholder":49},[32,7748,7749,7751,7753,7755,7757,7759,7762,7765,7768,7770,7773,7776,7778,7780,7783],{"class":34,"line":1692},[32,7750,1604],{"class":59},[32,7752,73],{"class":63},[32,7754,7107],{"class":59},[32,7756,237],{"class":63},[32,7758,5517],{"class":59},[32,7760,7761],{"class":63},">::",[32,7763,7764],{"class":59},"FutureAndRequestId",[32,7766,7767],{"class":59}," send_request",[32,7769,103],{"class":63},[32,7771,7772],{"class":38},"int32_t",[32,7774,7775],{"class":175}," num1",[32,7777,1426],{"class":63},[32,7779,7772],{"class":38},[32,7781,7782],{"class":175}," num2",[32,7784,109],{"class":63},[32,7786,7787],{"class":34,"line":1697},[32,7788,115],{"class":63},[32,7790,7791],{"class":34,"line":1720},[32,7792,7793],{"class":5139},"      \u002F*\n",[32,7795,7796],{"class":34,"line":1725},[32,7797,7798],{"class":5139},"        返回值 rclcpp::Client\u003Cbase_interfaces_demo::srv::AddInts>::FutureAndRequestId\n",[32,7800,7801],{"class":34,"line":1736},[32,7802,7803],{"class":5139},"        入口参数 async_send_request(std::shared_ptr\u003Cbase_interfaces_demo::srv::AddInts_Request> request)  \u002F\u002F其实就相当于AddInts::Request类型\n",[32,7805,7806],{"class":34,"line":1745},[32,7807,7808],{"class":5139},"      *\u002F\n",[32,7810,7811,7813,7816,7818,7820,7822,7825,7827,7830],{"class":34,"line":4099},[32,7812,1506],{"class":38},[32,7814,7815],{"class":63}," request ",[32,7817,1396],{"class":38},[32,7819,1307],{"class":59},[32,7821,73],{"class":63},[32,7823,7824],{"class":59},"make_sharedautolinkAddInts",[32,7826,73],{"class":63},[32,7828,7829],{"class":59},"Requestautolink",[32,7831,261],{"class":63},[32,7833,7834,7837,7839],{"class":34,"line":4110},[32,7835,7836],{"class":63},"      request->num1 ",[32,7838,1396],{"class":38},[32,7840,7841],{"class":63}," num1;\n",[32,7843,7844,7847,7849],{"class":34,"line":4119},[32,7845,7846],{"class":63},"      request->num2 ",[32,7848,1396],{"class":38},[32,7850,7851],{"class":63}," num2;\n",[32,7853,7854,7856,7859,7862],{"class":34,"line":7189},[32,7855,7082],{"class":38},[32,7857,7858],{"class":63}," client_->",[32,7860,7861],{"class":59},"async_send_request",[32,7863,7864],{"class":63},"(request);\n",[32,7866,7867],{"class":34,"line":7198},[32,7868,148],{"class":63},[32,7870,7871],{"class":34,"line":7203},[32,7872,50],{"emptyLinePlaceholder":49},[32,7874,7875],{"class":34,"line":7214},[32,7876,1486],{"class":38},[32,7878,7879,7881,7883,7885,7887,7889],{"class":34,"line":7219},[32,7880,1604],{"class":59},[32,7882,73],{"class":63},[32,7884,7107],{"class":59},[32,7886,237],{"class":63},[32,7888,5517],{"class":59},[32,7890,7114],{"class":63},[32,7892,7893],{"class":34,"line":7240},[32,7894,154],{"class":63},[32,7896,7897],{"class":34,"line":7245},[32,7898,50],{"emptyLinePlaceholder":49},[32,7900,7901,7903,7905,7907,7909,7911,7913,7915,7917,7919],{"class":34,"line":7264},[32,7902,165],{"class":38},[32,7904,168],{"class":59},[32,7906,103],{"class":63},[32,7908,165],{"class":38},[32,7910,176],{"class":175},[32,7912,179],{"class":63},[32,7914,182],{"class":38},[32,7916,185],{"class":38},[32,7918,188],{"class":175},[32,7920,109],{"class":63},[32,7922,7923],{"class":34,"line":7269},[32,7924,82],{"class":63},[32,7926,7927,7929,7931,7933,7935],{"class":34,"line":7283},[32,7928,6224],{"class":38},[32,7930,6227],{"class":63},[32,7932,6230],{"class":38},[32,7934,6233],{"class":126},[32,7936,109],{"class":63},[32,7938,7939],{"class":34,"line":7288},[32,7940,6240],{"class":63},[32,7942,7943,7945,7947,7949,7951,7953,7955,7957,7959,7961],{"class":34,"line":7312},[32,7944,6507],{"class":59},[32,7946,103],{"class":63},[32,7948,4395],{"class":59},[32,7950,73],{"class":63},[32,7952,133],{"class":59},[32,7954,103],{"class":63},[32,7956,6258],{"class":42},[32,7958,3732],{"class":63},[32,7960,6263],{"class":42},[32,7962,142],{"class":63},[32,7964,7965,7967,7969],{"class":34,"line":7321},[32,7966,2016],{"class":38},[32,7968,2896],{"class":126},[32,7970,273],{"class":63},[32,7972,7973],{"class":34,"line":7326},[32,7974,544],{"class":63},[32,7976,7977,7979,7981,7983],{"class":34,"line":7331},[32,7978,201],{"class":59},[32,7980,73],{"class":63},[32,7982,206],{"class":59},[32,7984,209],{"class":63},[32,7986,7987],{"class":34,"line":7342},[32,7988,50],{"emptyLinePlaceholder":49},[32,7990,7991,7993,7995,7997,7999,8001,8003,8005,8007],{"class":34,"line":7351},[32,7992,5145],{"class":38},[32,7994,5148],{"class":63},[32,7996,1396],{"class":38},[32,7998,1307],{"class":59},[32,8000,73],{"class":63},[32,8002,234],{"class":59},[32,8004,237],{"class":63},[32,8006,5161],{"class":59},[32,8008,5164],{"class":63},[32,8010,8012],{"class":34,"line":8011},57,[32,8013,50],{"emptyLinePlaceholder":49},[32,8015,8017,8019,8021,8023,8025,8027],{"class":34,"line":8016},58,[32,8018,7248],{"class":38},[32,8020,7251],{"class":63},[32,8022,1396],{"class":38},[32,8024,7256],{"class":63},[32,8026,7259],{"class":59},[32,8028,261],{"class":63},[32,8030,8032],{"class":34,"line":8031},59,[32,8033,50],{"emptyLinePlaceholder":49},[32,8035,8037,8039,8041,8043,8045],{"class":34,"line":8036},60,[32,8038,6224],{"class":38},[32,8040,7274],{"class":63},[32,8042,6230],{"class":38},[32,8044,6971],{"class":126},[32,8046,109],{"class":63},[32,8048,8050],{"class":34,"line":8049},61,[32,8051,6240],{"class":63},[32,8053,8055,8057,8059,8061,8063,8065,8067,8069,8071,8073],{"class":34,"line":8054},62,[32,8056,6245],{"class":59},[32,8058,103],{"class":63},[32,8060,4395],{"class":59},[32,8062,73],{"class":63},[32,8064,133],{"class":59},[32,8066,103],{"class":63},[32,8068,6258],{"class":42},[32,8070,3732],{"class":63},[32,8072,7307],{"class":42},[32,8074,142],{"class":63},[32,8076,8078,8080,8082],{"class":34,"line":8077},63,[32,8079,2016],{"class":38},[32,8081,270],{"class":126},[32,8083,273],{"class":63},[32,8085,8087],{"class":34,"line":8086},64,[32,8088,544],{"class":63},[32,8090,8092,8094,8097,8099,8101,8104,8106,8109,8112,8114,8117,8119,8121,8123],{"class":34,"line":8091},65,[32,8093,5145],{"class":38},[32,8095,8096],{"class":63}," future ",[32,8098,1396],{"class":38},[32,8100,7256],{"class":63},[32,8102,8103],{"class":59},"send_request",[32,8105,103],{"class":63},[32,8107,8108],{"class":59},"atoi",[32,8110,8111],{"class":63},"(argv[",[32,8113,1450],{"class":126},[32,8115,8116],{"class":63},"]),",[32,8118,8108],{"class":59},[32,8120,8111],{"class":63},[32,8122,804],{"class":126},[32,8124,8125],{"class":63},"]));\n",[32,8127,8129],{"class":34,"line":8128},66,[32,8130,50],{"emptyLinePlaceholder":49},[32,8132,8134,8136,8138,8140,8142,8145,8148,8151,8153,8155,8158],{"class":34,"line":8133},67,[32,8135,6224],{"class":38},[32,8137,5551],{"class":63},[32,8139,4395],{"class":59},[32,8141,73],{"class":63},[32,8143,8144],{"class":59},"spin_until_future_complete",[32,8146,8147],{"class":63},"(client,future) ",[32,8149,8150],{"class":38},"==",[32,8152,70],{"class":59},[32,8154,73],{"class":63},[32,8156,8157],{"class":59},"FutureReturnCode",[32,8159,8160],{"class":63},"::SUCCESS)\n",[32,8162,8164],{"class":34,"line":8163},68,[32,8165,6240],{"class":63},[32,8167,8169,8171,8174,8176,8178,8181,8183,8185,8188,8191],{"class":34,"line":8168},69,[32,8170,6245],{"class":59},[32,8172,8173],{"class":63},"(client->",[32,8175,133],{"class":59},[32,8177,136],{"class":63},[32,8179,8180],{"class":42},"\"响应成功! sum = ",[32,8182,3964],{"class":126},[32,8184,368],{"class":42},[32,8186,8187],{"class":63},",future.",[32,8189,8190],{"class":59},"get",[32,8192,8193],{"class":63},"()->sum);\n",[32,8195,8197],{"class":34,"line":8196},70,[32,8198,544],{"class":63},[32,8200,8202],{"class":34,"line":8201},71,[32,8203,8204],{"class":38},"  else\n",[32,8206,8208],{"class":34,"line":8207},72,[32,8209,6240],{"class":63},[32,8211,8213,8215,8217,8219,8221,8224],{"class":34,"line":8212},73,[32,8214,6245],{"class":59},[32,8216,8173],{"class":63},[32,8218,133],{"class":59},[32,8220,136],{"class":63},[32,8222,8223],{"class":42},"\"响应失败!\"",[32,8225,142],{"class":63},[32,8227,8229],{"class":34,"line":8228},74,[32,8230,544],{"class":63},[32,8232,8234],{"class":34,"line":8233},75,[32,8235,50],{"emptyLinePlaceholder":49},[32,8237,8239,8241,8243,8245],{"class":34,"line":8238},76,[32,8240,201],{"class":59},[32,8242,73],{"class":63},[32,8244,258],{"class":59},[32,8246,261],{"class":63},[32,8248,8250,8252,8254],{"class":34,"line":8249},77,[32,8251,267],{"class":38},[32,8253,270],{"class":126},[32,8255,273],{"class":63},[32,8257,8259],{"class":34,"line":8258},78,[32,8260,279],{"class":63},[10,8262,8264],{"id":8263},"motion_communication_theory","Motion_Communication_Theory",[15,8266,8267],{},[18,8268],{"alt":20,"src":8269},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage618.webp",[15,8271,8272],{},"Having B continuously return the current robot status information to A makes this communication behavior more aligned with our needs for controlling robot navigation.",[15,8274,8275],{},[18,8276],{"alt":20,"src":8277},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage619.webp",[15,8279,8280],{},"Input 10 will accumulate all numbers from 1 to 10, and will iterate through all numbers from 1 to 10, performing the accumulation. The accumulation is time-consuming; assuming each accumulation takes one second.",[15,8282,8283],{},"Then, to make the program's running status visible, an INFO message is sent with each accumulation to indicate the current progress.",[15,8285,8286],{},[18,8287],{"alt":20,"src":8288},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage620.webp",[15,8290,8291],{},"You can cancel the task while it is in progress.",[15,8293,8294],{},"First, the client sends the target data to the server.",[15,8296,8297],{},"Second, the server evaluates the target data and feeds the evaluation result back to the client (whether the target can be achieved).",[15,8299,8300],{},"Third, the client sends the final confirmed target data to the server.",[15,8302,8303],{},"Step 4: The server continuously feeds back the execution process data to the client.",[15,8305,8306],{},"Step five: After completion, the server returns the final result to the client.",[15,8308,8309],{},[18,8310],{"alt":20,"src":8311},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage621.webp",[561,8313],{},[15,8315,8316],{},[18,8317],{"alt":20,"src":8318},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage622.webp",[15,8320,8321],{},[18,8322],{"alt":20,"src":8323},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage623.webp",[15,8325,8326],{},[18,8327],{"alt":20,"src":8328},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage624.webp",[15,8330,8331],{},[18,8332],{"alt":20,"src":8333},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage625.webp",[15,8335,8336],{},[18,8337],{"alt":20,"src":8338},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage626.webp",[15,8340,8341],{},"ros2 pkg create cpp03_action --build-type ament_cmake --dependencies rclcpp rclcpp_action base_interfaces_demo --node-name demo01_action_server",[561,8343],{},[15,8345,8346],{},[18,8347],{"alt":20,"src":8348},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage627.webp",[15,8350,8351],{},[18,8352],{"alt":20,"src":8353},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage628.webp",[15,8355,8356],{},"At the very top is the request data.",[15,8358,8359],{},"In the middle is the data of the final response result.",[15,8361,8362],{},"At the very bottom is the continuous feedback data.",[15,8364,8365],{},[18,8366],{"alt":20,"src":8367},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage629.webp",[15,8369,8370],{},[18,8371],{"alt":20,"src":8372},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage630.webp",[15,8374,8375],{},[18,8376],{"alt":20,"src":8377},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage631.webp",[15,8379,8380],{},[18,8381],{"alt":20,"src":8382},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage632.webp",[15,8384,8385,8388,8389,179,8392,8395,8396,8399],{},[29,8386,8387],{},"depend"," is an integration of ",[29,8390,8391],{},"build depend",[29,8393,8394],{},"exe depend",", and ",[29,8397,8398],{},"export depend",".",[15,8401,8402],{},[18,8403],{"alt":20,"src":8404},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage633.webp",[15,8406,8407],{},[18,8408],{"alt":20,"src":8409},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage634.webp",[15,8411,8412],{},[18,8413],{"alt":20,"src":8414},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage635.webp",[15,8416,8417],{},[18,8418],{"alt":20,"src":8419},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage636.webp",[15,8421,8422],{},[18,8423],{"alt":20,"src":8424},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage637.webp",[15,8426,8427],{},[18,8428],{"alt":20,"src":8429},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage638.webp",[15,8431,8432],{},[18,8433],{"alt":20,"src":8434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage639.webp",[15,8436,8437],{},[18,8438],{"alt":20,"src":8439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage640.webp",[15,8441,8442],{},"ros2 interface show base_interfaces_demo\u002Faction\u002FProgress",[10,8444,8446],{"id":8445},"motion-communication_experiment-1_server-implementation-c","Motion Communication_Experiment 1_Server Implementation (C++)",[15,8448,8449],{},[18,8450],{"alt":20,"src":8451},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage641.webp",[23,8453,8455],{"className":25,"code":8454,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ProgressActionServer: public rclcpp::Node\n{\n  public:\n    ProgressActionServer():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action服务端创建!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CProgressActionServer>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,8456,8457,8463,8467,8484,8488,8492,8508,8512,8531,8535,8539,8543,8565,8569,8579,8583,8606,8610,8620,8628],{"__ignoreMap":20},[32,8458,8459,8461],{"class":34,"line":35},[32,8460,39],{"class":38},[32,8462,43],{"class":42},[32,8464,8465],{"class":34,"line":46},[32,8466,50],{"emptyLinePlaceholder":49},[32,8468,8469,8471,8474,8476,8478,8480,8482],{"class":34,"line":53},[32,8470,56],{"class":38},[32,8472,8473],{"class":59}," ProgressActionServer",[32,8475,64],{"class":63},[32,8477,67],{"class":38},[32,8479,70],{"class":59},[32,8481,73],{"class":63},[32,8483,76],{"class":59},[32,8485,8486],{"class":34,"line":79},[32,8487,82],{"class":63},[32,8489,8490],{"class":34,"line":85},[32,8491,88],{"class":38},[32,8493,8494,8497,8499,8501,8503,8506],{"class":34,"line":91},[32,8495,8496],{"class":59},"    ProgressActionServer",[32,8498,97],{"class":63},[32,8500,100],{"class":59},[32,8502,103],{"class":63},[32,8504,8505],{"class":42},"\"progress_action_server_node_cpp\"",[32,8507,109],{"class":63},[32,8509,8510],{"class":34,"line":112},[32,8511,115],{"class":63},[32,8513,8514,8516,8518,8520,8522,8524,8526,8529],{"class":34,"line":118},[32,8515,121],{"class":59},[32,8517,103],{"class":63},[32,8519,127],{"class":126},[32,8521,130],{"class":63},[32,8523,133],{"class":59},[32,8525,136],{"class":63},[32,8527,8528],{"class":42},"\"action服务端创建!\"",[32,8530,142],{"class":63},[32,8532,8533],{"class":34,"line":145},[32,8534,148],{"class":63},[32,8536,8537],{"class":34,"line":151},[32,8538,154],{"class":63},[32,8540,8541],{"class":34,"line":157},[32,8542,50],{"emptyLinePlaceholder":49},[32,8544,8545,8547,8549,8551,8553,8555,8557,8559,8561,8563],{"class":34,"line":162},[32,8546,165],{"class":38},[32,8548,168],{"class":59},[32,8550,103],{"class":63},[32,8552,165],{"class":38},[32,8554,176],{"class":175},[32,8556,179],{"class":63},[32,8558,182],{"class":38},[32,8560,185],{"class":38},[32,8562,188],{"class":175},[32,8564,109],{"class":63},[32,8566,8567],{"class":34,"line":193},[32,8568,82],{"class":63},[32,8570,8571,8573,8575,8577],{"class":34,"line":198},[32,8572,201],{"class":59},[32,8574,73],{"class":63},[32,8576,206],{"class":59},[32,8578,209],{"class":63},[32,8580,8581],{"class":34,"line":212},[32,8582,50],{"emptyLinePlaceholder":49},[32,8584,8585,8587,8589,8591,8593,8595,8597,8599,8601,8604],{"class":34,"line":217},[32,8586,201],{"class":59},[32,8588,73],{"class":63},[32,8590,224],{"class":59},[32,8592,103],{"class":63},[32,8594,229],{"class":59},[32,8596,73],{"class":63},[32,8598,234],{"class":59},[32,8600,237],{"class":63},[32,8602,8603],{"class":59},"ProgressActionServer",[32,8605,243],{"class":63},[32,8607,8608],{"class":34,"line":246},[32,8609,50],{"emptyLinePlaceholder":49},[32,8611,8612,8614,8616,8618],{"class":34,"line":251},[32,8613,201],{"class":59},[32,8615,73],{"class":63},[32,8617,258],{"class":59},[32,8619,261],{"class":63},[32,8621,8622,8624,8626],{"class":34,"line":264},[32,8623,267],{"class":38},[32,8625,270],{"class":126},[32,8627,273],{"class":63},[32,8629,8630],{"class":34,"line":276},[32,8631,279],{"class":63},[15,8633,8634],{},[18,8635],{"alt":20,"src":8636},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage642.webp",[23,8638,8640],{"className":25,"code":8639,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ProgressActionClient: public rclcpp::Node\n{\n  public:\n    ProgressActionClient():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action客户端创建!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CProgressActionClient>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,8641,8642,8648,8652,8669,8673,8677,8692,8696,8715,8719,8723,8727,8749,8753,8763,8767,8790,8794,8804,8812],{"__ignoreMap":20},[32,8643,8644,8646],{"class":34,"line":35},[32,8645,39],{"class":38},[32,8647,43],{"class":42},[32,8649,8650],{"class":34,"line":46},[32,8651,50],{"emptyLinePlaceholder":49},[32,8653,8654,8656,8659,8661,8663,8665,8667],{"class":34,"line":53},[32,8655,56],{"class":38},[32,8657,8658],{"class":59}," ProgressActionClient",[32,8660,64],{"class":63},[32,8662,67],{"class":38},[32,8664,70],{"class":59},[32,8666,73],{"class":63},[32,8668,76],{"class":59},[32,8670,8671],{"class":34,"line":79},[32,8672,82],{"class":63},[32,8674,8675],{"class":34,"line":85},[32,8676,88],{"class":38},[32,8678,8679,8682,8684,8686,8688,8690],{"class":34,"line":91},[32,8680,8681],{"class":59},"    ProgressActionClient",[32,8683,97],{"class":63},[32,8685,100],{"class":59},[32,8687,103],{"class":63},[32,8689,8505],{"class":42},[32,8691,109],{"class":63},[32,8693,8694],{"class":34,"line":112},[32,8695,115],{"class":63},[32,8697,8698,8700,8702,8704,8706,8708,8710,8713],{"class":34,"line":118},[32,8699,121],{"class":59},[32,8701,103],{"class":63},[32,8703,127],{"class":126},[32,8705,130],{"class":63},[32,8707,133],{"class":59},[32,8709,136],{"class":63},[32,8711,8712],{"class":42},"\"action客户端创建!\"",[32,8714,142],{"class":63},[32,8716,8717],{"class":34,"line":145},[32,8718,148],{"class":63},[32,8720,8721],{"class":34,"line":151},[32,8722,154],{"class":63},[32,8724,8725],{"class":34,"line":157},[32,8726,50],{"emptyLinePlaceholder":49},[32,8728,8729,8731,8733,8735,8737,8739,8741,8743,8745,8747],{"class":34,"line":162},[32,8730,165],{"class":38},[32,8732,168],{"class":59},[32,8734,103],{"class":63},[32,8736,165],{"class":38},[32,8738,176],{"class":175},[32,8740,179],{"class":63},[32,8742,182],{"class":38},[32,8744,185],{"class":38},[32,8746,188],{"class":175},[32,8748,109],{"class":63},[32,8750,8751],{"class":34,"line":193},[32,8752,82],{"class":63},[32,8754,8755,8757,8759,8761],{"class":34,"line":198},[32,8756,201],{"class":59},[32,8758,73],{"class":63},[32,8760,206],{"class":59},[32,8762,209],{"class":63},[32,8764,8765],{"class":34,"line":212},[32,8766,50],{"emptyLinePlaceholder":49},[32,8768,8769,8771,8773,8775,8777,8779,8781,8783,8785,8788],{"class":34,"line":217},[32,8770,201],{"class":59},[32,8772,73],{"class":63},[32,8774,224],{"class":59},[32,8776,103],{"class":63},[32,8778,229],{"class":59},[32,8780,73],{"class":63},[32,8782,234],{"class":59},[32,8784,237],{"class":63},[32,8786,8787],{"class":59},"ProgressActionClient",[32,8789,243],{"class":63},[32,8791,8792],{"class":34,"line":246},[32,8793,50],{"emptyLinePlaceholder":49},[32,8795,8796,8798,8800,8802],{"class":34,"line":251},[32,8797,201],{"class":59},[32,8799,73],{"class":63},[32,8801,258],{"class":59},[32,8803,261],{"class":63},[32,8805,8806,8808,8810],{"class":34,"line":264},[32,8807,267],{"class":38},[32,8809,270],{"class":126},[32,8811,273],{"class":63},[32,8813,8814],{"class":34,"line":276},[32,8815,279],{"class":63},[15,8817,8818],{},[18,8819],{"alt":20,"src":8820},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage643.webp",[15,8822,8823],{},[18,8824],{"alt":20,"src":8825},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage644.webp",[15,8827,8828],{},[18,8829],{"alt":20,"src":8830},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage645.webp",[15,8832,8833],{},[18,8834],{"alt":20,"src":8835},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage646.webp",[561,8837],{},[15,8839,8840],{},[18,8841],{"alt":20,"src":8842},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage647.webp",[15,8844,8845],{},[18,8846],{"alt":20,"src":8847},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage648.webp",[15,8849,8850],{},[18,8851],{"alt":20,"src":8852},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage649.webp",[15,8854,8855],{},"There are two templates; we only need to set the action, which is our action interface type.",[15,8857,8858],{},"The first parameter is node; use the this pointer within the class.",[15,8860,8861],{},"The second parameter is the topic, a string.",[15,8863,8864],{},"The third parameter is a callback function used to process the target value.",[15,8866,8867],{},"The fourth parameter is a callback function used to handle the cancellation request.",[15,8869,8870],{},"The fifth parameter is the callback function that generates continuous feedback after receiving the target value.",[15,8872,8873],{},"The sixth and seventh parameters have default values, so ignore them for now.",[15,8875,8876],{},"The return value is an action smart pointer.",[15,8878,8879],{},[18,8880],{"alt":20,"src":8881},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage650.webp",[15,8883,8884],{},[18,8885],{"alt":20,"src":8886},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage651.webp",[15,8888,8889],{},[18,8890],{"alt":20,"src":8891},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage652.webp",[15,8893,8894],{},[18,8895],{"alt":20,"src":8896},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage653.webp",[15,8898,8899],{},[18,8900],{"alt":20,"src":8901},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage654.webp",[15,8903,8904],{},[18,8905],{"alt":20,"src":8906},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage655.webp",[15,8908,8909],{},"Goal_callback analysis:",[15,8911,8912],{},"The first parameter is GoalUUID.",[15,8914,8915],{},"The second parameter is the Goal under our action interface.",[15,8917,8918],{},"The return value is goalresponse, using the namespace rclcpp_action, which encapsulates three constants underneath.",[15,8920,8921],{},"The first one is to receive and execute immediately.",[15,8923,8924],{},"The second is to receive and defer execution.",[15,8926,8927],{},"The third is rejection.",[15,8929,8930],{},[18,8931],{"alt":20,"src":8932},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage656.webp",[15,8934,8935],{},[18,8936],{"alt":20,"src":8937},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage657.webp",[15,8939,8940],{},[18,8941],{"alt":20,"src":8942},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage658.webp",[15,8944,8945],{},[18,8946],{"alt":20,"src":8947},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage659.webp",[15,8949,8950],{},[18,8951],{"alt":20,"src":8952},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage660.webp",[15,8954,8955],{},"The error is caused by not adding a placeholder.",[15,8957,8958],{},[18,8959],{"alt":20,"src":8960},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage661.webp",[15,8962,8963],{},[18,8964],{"alt":20,"src":8965},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage662.webp",[23,8967,8969],{"className":25,"code":8968,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"rclcpp_action\u002Frclcpp_action.hpp\"\n#include \"base_interfaces_demo\u002Faction\u002Fprogress.hpp\"\n\nusing base_interfaces_demo::action::Progress;\nusing std::placeholders::_1;\nusing std::placeholders::_2;\n\nclass ProgressActionServer: public rclcpp::Node\n{\n  public:\n    ProgressActionServer():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action服务端创建!\");\n      \u002F*\n      rclcpp_action::Server\u003CActionT>::SharedPtr create_server\u003CActionT,\n      NodeT>(NodeT node,\n      const std::string &name,\n      rclcpp_action::Server\u003CActionT>::GoalCallback handle_goal,\n      rclcpp_action::Server\u003CActionT>::CancelCallback handle_cancel,\n      rclcpp_action::Server\u003CActionT>::AcceptedCallback handle_accepted,\n      const rcl_action_server_options_t &options = rcl_action_server_get_default_options(),\n      rclcpp::CallbackGroup::SharedPtr group = nullptr)\n      *\u002F\n      server_ = rclcpp_action::create_server\u003CProgress>(\n        this,\n        \"get_sum_topic\",\n        std::bind(&ProgressActionServer::handle_goal_callback,this,_1,_2),\n        std::bind(&ProgressActionServer::handle_cancel_callback,this,_1),\n        std::bind(&ProgressActionServer::handle_accepted_callback,this,_1)\n        );\n    }\n    \u002F\u002Fstd::function\u003CGoalResponse(const GoalUUID &, std::shared_ptr\u003Cconst typename ActionT::Goal>)>\n    rclcpp_action::GoalResponse handle_goal_callback(const rclcpp_action::GoalUUID &, std::shared_ptr\u003Cconst Progress::Goal>)\n    {\n\n      return rclcpp_action::GoalResponse::ACCEPT_AND_EXECUTE;\n    }\n\n    \u002F\u002Fstd::function\u003CCancelResponse(std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n    rclcpp_action::CancelResponse handle_cancel_callback(std::shared_ptr\u003Crclcpp_action::ServerGoalHandle\u003CProgress>> goal_handle)\n    {\n\n      return rclcpp_action::CancelResponse::ACCEPT;\n    }\n\n    \u002F\u002Fstd::function\u003Cvoid (std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n    void handle_accepted_callback(std::shared_ptr\u003Crclcpp_action::ServerGoalHandle\u003CProgress>> goal_handle)\n    {\n    }\n\n  private:\n    rclcpp_action::Server\u003CProgress>::SharedPtr server_;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CProgressActionServer>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,8970,8971,8977,8984,8991,8995,9009,9022,9035,9039,9055,9059,9063,9077,9081,9099,9103,9108,9113,9118,9123,9128,9133,9138,9143,9147,9169,9176,9183,9205,9227,9249,9254,9258,9263,9313,9317,9321,9334,9338,9342,9347,9389,9393,9397,9410,9414,9418,9423,9456,9460,9464,9468,9472,9487,9491,9495,9517,9521,9531,9535,9557,9561,9571,9579],{"__ignoreMap":20},[32,8972,8973,8975],{"class":34,"line":35},[32,8974,39],{"class":38},[32,8976,43],{"class":42},[32,8978,8979,8981],{"class":34,"line":46},[32,8980,39],{"class":38},[32,8982,8983],{"class":42}," \"rclcpp_action\u002Frclcpp_action.hpp\"\n",[32,8985,8986,8988],{"class":34,"line":53},[32,8987,39],{"class":38},[32,8989,8990],{"class":42}," \"base_interfaces_demo\u002Faction\u002Fprogress.hpp\"\n",[32,8992,8993],{"class":34,"line":79},[32,8994,50],{"emptyLinePlaceholder":49},[32,8996,8997,8999,9001,9003,9006],{"class":34,"line":85},[32,8998,1301],{"class":38},[32,9000,3873],{"class":59},[32,9002,73],{"class":63},[32,9004,9005],{"class":59},"action",[32,9007,9008],{"class":63},"::Progress;\n",[32,9010,9011,9013,9015,9017,9019],{"class":34,"line":91},[32,9012,1301],{"class":38},[32,9014,1307],{"class":59},[32,9016,73],{"class":63},[32,9018,2262],{"class":59},[32,9020,9021],{"class":63},"::_1;\n",[32,9023,9024,9026,9028,9030,9032],{"class":34,"line":112},[32,9025,1301],{"class":38},[32,9027,1307],{"class":59},[32,9029,73],{"class":63},[32,9031,2262],{"class":59},[32,9033,9034],{"class":63},"::_2;\n",[32,9036,9037],{"class":34,"line":118},[32,9038,50],{"emptyLinePlaceholder":49},[32,9040,9041,9043,9045,9047,9049,9051,9053],{"class":34,"line":145},[32,9042,56],{"class":38},[32,9044,8473],{"class":59},[32,9046,64],{"class":63},[32,9048,67],{"class":38},[32,9050,70],{"class":59},[32,9052,73],{"class":63},[32,9054,76],{"class":59},[32,9056,9057],{"class":34,"line":151},[32,9058,82],{"class":63},[32,9060,9061],{"class":34,"line":157},[32,9062,88],{"class":38},[32,9064,9065,9067,9069,9071,9073,9075],{"class":34,"line":162},[32,9066,8496],{"class":59},[32,9068,97],{"class":63},[32,9070,100],{"class":59},[32,9072,103],{"class":63},[32,9074,8505],{"class":42},[32,9076,109],{"class":63},[32,9078,9079],{"class":34,"line":193},[32,9080,115],{"class":63},[32,9082,9083,9085,9087,9089,9091,9093,9095,9097],{"class":34,"line":198},[32,9084,121],{"class":59},[32,9086,103],{"class":63},[32,9088,127],{"class":126},[32,9090,130],{"class":63},[32,9092,133],{"class":59},[32,9094,136],{"class":63},[32,9096,8528],{"class":42},[32,9098,142],{"class":63},[32,9100,9101],{"class":34,"line":212},[32,9102,7793],{"class":5139},[32,9104,9105],{"class":34,"line":217},[32,9106,9107],{"class":5139},"      rclcpp_action::Server\u003CActionT>::SharedPtr create_server\u003CActionT,\n",[32,9109,9110],{"class":34,"line":246},[32,9111,9112],{"class":5139},"      NodeT>(NodeT node,\n",[32,9114,9115],{"class":34,"line":251},[32,9116,9117],{"class":5139},"      const std::string &name,\n",[32,9119,9120],{"class":34,"line":264},[32,9121,9122],{"class":5139},"      rclcpp_action::Server\u003CActionT>::GoalCallback handle_goal,\n",[32,9124,9125],{"class":34,"line":276},[32,9126,9127],{"class":5139},"      rclcpp_action::Server\u003CActionT>::CancelCallback handle_cancel,\n",[32,9129,9130],{"class":34,"line":495},[32,9131,9132],{"class":5139},"      rclcpp_action::Server\u003CActionT>::AcceptedCallback handle_accepted,\n",[32,9134,9135],{"class":34,"line":502},[32,9136,9137],{"class":5139},"      const rcl_action_server_options_t &options = rcl_action_server_get_default_options(),\n",[32,9139,9140],{"class":34,"line":510},[32,9141,9142],{"class":5139},"      rclcpp::CallbackGroup::SharedPtr group = nullptr)\n",[32,9144,9145],{"class":34,"line":518},[32,9146,7808],{"class":5139},[32,9148,9149,9151,9153,9156,9158,9161,9163,9166],{"class":34,"line":524},[32,9150,5410],{"class":63},[32,9152,1396],{"class":38},[32,9154,9155],{"class":59}," rclcpp_action",[32,9157,73],{"class":63},[32,9159,9160],{"class":59},"create_server",[32,9162,237],{"class":63},[32,9164,9165],{"class":59},"Progress",[32,9167,9168],{"class":63},">(\n",[32,9170,9171,9174],{"class":34,"line":530},[32,9172,9173],{"class":126},"        this",[32,9175,344],{"class":63},[32,9177,9178,9181],{"class":34,"line":541},[32,9179,9180],{"class":42},"        \"get_sum_topic\"",[32,9182,344],{"class":63},[32,9184,9185,9187,9189,9191,9193,9195,9197,9200,9202],{"class":34,"line":547},[32,9186,2843],{"class":59},[32,9188,73],{"class":63},[32,9190,1462],{"class":59},[32,9192,103],{"class":63},[32,9194,1467],{"class":38},[32,9196,8603],{"class":59},[32,9198,9199],{"class":63},"::handle_goal_callback,",[32,9201,127],{"class":126},[32,9203,9204],{"class":63},",_1,_2),\n",[32,9206,9207,9209,9211,9213,9215,9217,9219,9222,9224],{"class":34,"line":1676},[32,9208,2843],{"class":59},[32,9210,73],{"class":63},[32,9212,1462],{"class":59},[32,9214,103],{"class":63},[32,9216,1467],{"class":38},[32,9218,8603],{"class":59},[32,9220,9221],{"class":63},"::handle_cancel_callback,",[32,9223,127],{"class":126},[32,9225,9226],{"class":63},",_1),\n",[32,9228,9229,9231,9233,9235,9237,9239,9241,9244,9246],{"class":34,"line":1681},[32,9230,2843],{"class":59},[32,9232,73],{"class":63},[32,9234,1462],{"class":59},[32,9236,103],{"class":63},[32,9238,1467],{"class":38},[32,9240,8603],{"class":59},[32,9242,9243],{"class":63},"::handle_accepted_callback,",[32,9245,127],{"class":126},[32,9247,9248],{"class":63},",_1)\n",[32,9250,9251],{"class":34,"line":1692},[32,9252,9253],{"class":63},"        );\n",[32,9255,9256],{"class":34,"line":1697},[32,9257,148],{"class":63},[32,9259,9260],{"class":34,"line":1720},[32,9261,9262],{"class":5139},"    \u002F\u002Fstd::function\u003CGoalResponse(const GoalUUID &, std::shared_ptr\u003Cconst typename ActionT::Goal>)>\n",[32,9264,9265,9268,9270,9273,9276,9278,9280,9282,9284,9287,9289,9291,9293,9295,9298,9300,9302,9305,9307,9310],{"class":34,"line":1725},[32,9266,9267],{"class":59},"    rclcpp_action",[32,9269,73],{"class":63},[32,9271,9272],{"class":59},"GoalResponse",[32,9274,9275],{"class":59}," handle_goal_callback",[32,9277,103],{"class":63},[32,9279,2290],{"class":38},[32,9281,9155],{"class":59},[32,9283,73],{"class":63},[32,9285,9286],{"class":59},"GoalUUID",[32,9288,2303],{"class":38},[32,9290,179],{"class":63},[32,9292,229],{"class":59},[32,9294,73],{"class":63},[32,9296,9297],{"class":59},"shared_ptr",[32,9299,237],{"class":63},[32,9301,2290],{"class":38},[32,9303,9304],{"class":59}," Progress",[32,9306,73],{"class":63},[32,9308,9309],{"class":59},"Goal",[32,9311,9312],{"class":63},">)\n",[32,9314,9315],{"class":34,"line":1736},[32,9316,115],{"class":63},[32,9318,9319],{"class":34,"line":1745},[32,9320,50],{"emptyLinePlaceholder":49},[32,9322,9323,9325,9327,9329,9331],{"class":34,"line":4099},[32,9324,7082],{"class":38},[32,9326,9155],{"class":59},[32,9328,73],{"class":63},[32,9330,9272],{"class":59},[32,9332,9333],{"class":63},"::ACCEPT_AND_EXECUTE;\n",[32,9335,9336],{"class":34,"line":4110},[32,9337,148],{"class":63},[32,9339,9340],{"class":34,"line":4119},[32,9341,50],{"emptyLinePlaceholder":49},[32,9343,9344],{"class":34,"line":7189},[32,9345,9346],{"class":5139},"    \u002F\u002Fstd::function\u003CCancelResponse(std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n",[32,9348,9349,9351,9353,9356,9359,9361,9363,9365,9367,9369,9372,9374,9377,9379,9381,9384,9387],{"class":34,"line":7198},[32,9350,9267],{"class":59},[32,9352,73],{"class":63},[32,9354,9355],{"class":59},"CancelResponse",[32,9357,9358],{"class":59}," handle_cancel_callback",[32,9360,103],{"class":63},[32,9362,229],{"class":59},[32,9364,73],{"class":63},[32,9366,9297],{"class":59},[32,9368,237],{"class":63},[32,9370,9371],{"class":59},"rclcpp_action",[32,9373,73],{"class":63},[32,9375,9376],{"class":59},"ServerGoalHandle",[32,9378,237],{"class":63},[32,9380,9165],{"class":59},[32,9382,9383],{"class":63},">> ",[32,9385,9386],{"class":175},"goal_handle",[32,9388,109],{"class":63},[32,9390,9391],{"class":34,"line":7203},[32,9392,115],{"class":63},[32,9394,9395],{"class":34,"line":7214},[32,9396,50],{"emptyLinePlaceholder":49},[32,9398,9399,9401,9403,9405,9407],{"class":34,"line":7219},[32,9400,7082],{"class":38},[32,9402,9155],{"class":59},[32,9404,73],{"class":63},[32,9406,9355],{"class":59},[32,9408,9409],{"class":63},"::ACCEPT;\n",[32,9411,9412],{"class":34,"line":7240},[32,9413,148],{"class":63},[32,9415,9416],{"class":34,"line":7245},[32,9417,50],{"emptyLinePlaceholder":49},[32,9419,9420],{"class":34,"line":7264},[32,9421,9422],{"class":5139},"    \u002F\u002Fstd::function\u003Cvoid (std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n",[32,9424,9425,9427,9430,9432,9434,9436,9438,9440,9442,9444,9446,9448,9450,9452,9454],{"class":34,"line":7269},[32,9426,1491],{"class":38},[32,9428,9429],{"class":59}," handle_accepted_callback",[32,9431,103],{"class":63},[32,9433,229],{"class":59},[32,9435,73],{"class":63},[32,9437,9297],{"class":59},[32,9439,237],{"class":63},[32,9441,9371],{"class":59},[32,9443,73],{"class":63},[32,9445,9376],{"class":59},[32,9447,237],{"class":63},[32,9449,9165],{"class":59},[32,9451,9383],{"class":63},[32,9453,9386],{"class":175},[32,9455,109],{"class":63},[32,9457,9458],{"class":34,"line":7283},[32,9459,115],{"class":63},[32,9461,9462],{"class":34,"line":7288},[32,9463,148],{"class":63},[32,9465,9466],{"class":34,"line":7312},[32,9467,50],{"emptyLinePlaceholder":49},[32,9469,9470],{"class":34,"line":7321},[32,9471,1486],{"class":38},[32,9473,9474,9476,9478,9481,9483,9485],{"class":34,"line":7326},[32,9475,9267],{"class":59},[32,9477,73],{"class":63},[32,9479,9480],{"class":59},"Server",[32,9482,237],{"class":63},[32,9484,9165],{"class":59},[32,9486,5619],{"class":63},[32,9488,9489],{"class":34,"line":7331},[32,9490,154],{"class":63},[32,9492,9493],{"class":34,"line":7342},[32,9494,50],{"emptyLinePlaceholder":49},[32,9496,9497,9499,9501,9503,9505,9507,9509,9511,9513,9515],{"class":34,"line":7351},[32,9498,165],{"class":38},[32,9500,168],{"class":59},[32,9502,103],{"class":63},[32,9504,165],{"class":38},[32,9506,176],{"class":175},[32,9508,179],{"class":63},[32,9510,182],{"class":38},[32,9512,185],{"class":38},[32,9514,188],{"class":175},[32,9516,109],{"class":63},[32,9518,9519],{"class":34,"line":8011},[32,9520,82],{"class":63},[32,9522,9523,9525,9527,9529],{"class":34,"line":8016},[32,9524,201],{"class":59},[32,9526,73],{"class":63},[32,9528,206],{"class":59},[32,9530,209],{"class":63},[32,9532,9533],{"class":34,"line":8031},[32,9534,50],{"emptyLinePlaceholder":49},[32,9536,9537,9539,9541,9543,9545,9547,9549,9551,9553,9555],{"class":34,"line":8036},[32,9538,201],{"class":59},[32,9540,73],{"class":63},[32,9542,224],{"class":59},[32,9544,103],{"class":63},[32,9546,229],{"class":59},[32,9548,73],{"class":63},[32,9550,234],{"class":59},[32,9552,237],{"class":63},[32,9554,8603],{"class":59},[32,9556,243],{"class":63},[32,9558,9559],{"class":34,"line":8049},[32,9560,50],{"emptyLinePlaceholder":49},[32,9562,9563,9565,9567,9569],{"class":34,"line":8054},[32,9564,201],{"class":59},[32,9566,73],{"class":63},[32,9568,258],{"class":59},[32,9570,261],{"class":63},[32,9572,9573,9575,9577],{"class":34,"line":8077},[32,9574,267],{"class":38},[32,9576,270],{"class":126},[32,9578,273],{"class":63},[32,9580,9581],{"class":34,"line":8086},[32,9582,279],{"class":63},[15,9584,9585],{},[18,9586],{"alt":20,"src":9587},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage663.webp",[15,9589,9590],{},[18,9591],{"alt":20,"src":9592},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage664.webp",[15,9594,9595],{},[18,9596],{"alt":20,"src":9597},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage665.webp",[15,9599,9600],{},[18,9601],{"alt":20,"src":9602},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage666.webp",[23,9604,9606],{"className":1761,"code":9605,"language":1763,"meta":20,"style":20},"ros2 action send_goal \u002Fget_sum_topic base_interfaces_demo\u002Faction\u002FProgress -f \"{'num': 10}\"\n",[29,9607,9608],{"__ignoreMap":20},[32,9609,9610,9612,9615,9618,9621,9624,9627],{"class":34,"line":35},[32,9611,1770],{"class":59},[32,9613,9614],{"class":42}," action",[32,9616,9617],{"class":42}," send_goal",[32,9619,9620],{"class":42}," \u002Fget_sum_topic",[32,9622,9623],{"class":42}," base_interfaces_demo\u002Faction\u002FProgress",[32,9625,9626],{"class":126}," -f",[32,9628,9629],{"class":42}," \"{'num': 10}\"\n",[15,9631,9632],{},"ros2 action send_goal \u002Ftopic_name + interface_type + -f + parameters",[15,9634,9635,9638],{},[29,9636,9637],{},"-f"," is for continuous feedback, meaning it can retrieve continuous feedback.",[15,9640,9641],{},[18,9642],{"alt":20,"src":9643},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage667.webp",[15,9645,9646],{},"Send target value of 10.",[15,9648,9649],{},"Then we set an ID for our client. Since multiple clients may access this server, we need to assign a unique ID to each client.",[15,9651,9652],{},"Then the result is 0.",[15,9654,9655],{},"Because our program hasn't written anything yet.",[561,9657],{},[15,9659,9660],{},[18,9661],{"alt":20,"src":9662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage668.webp",[15,9664,9665],{},"The uuid is the client ID. Since it is not used here, use (void)uuid, because the compiler may issue a warning if it is not used.",[15,9667,9668],{},[18,9669],{"alt":20,"src":9670},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage669.webp",[15,9672,9673],{},[18,9674],{"alt":20,"src":9675},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage670.webp",[15,9677,9678],{},[18,9679],{"alt":20,"src":9680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage671.webp",[15,9682,9683],{},[18,9684],{"alt":20,"src":9685},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage672.webp",[15,9687,9688],{},[18,9689],{"alt":20,"src":9690},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage673.webp",[561,9692],{},[15,9694,9695,9696,9699],{},"Our task can be canceled normally, so simply returning ",[29,9697,9698],{},"accept"," is sufficient. Different actions can be performed within the function based on the specific requirements of each task.",[15,9701,9702],{},[18,9703],{"alt":20,"src":9704},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage674.webp",[15,9706,9707],{},[18,9708],{"alt":20,"src":9709},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage675.webp",[561,9711],{},[15,9713,9714],{},"Because our continuous feedback and final response generation are time-consuming operations, to avoid blocking the main logic, it is recommended to start a separate thread.",[15,9716,9717],{},[18,9718],{"alt":20,"src":9719},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage676.webp",[15,9721,9722],{},[18,9723],{"alt":20,"src":9724},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage677.webp",[15,9726,9727],{},[18,9728],{"alt":20,"src":9729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage678.webp",[15,9731,9732],{},[18,9733],{"alt":20,"src":9734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage679.webp",[15,9736,9737],{},[18,9738],{"alt":20,"src":9739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage680.webp",[15,9741,9742],{},"Generate a continuous feedback API that requires parameters. The parameter passed in is the Feedback object from Progress.",[15,9744,9745],{},[18,9746],{"alt":20,"src":9747},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage681.webp",[15,9749,9750,9751,9754],{},"The function ",[29,9752,9753],{},"get_goal()"," is used to retrieve the target value.",[15,9756,9757],{},[18,9758],{"alt":20,"src":9759},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage682.webp",[15,9761,9762],{},[18,9763],{"alt":20,"src":9764},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage683.webp",[15,9766,9767],{},"Because this is a time-consuming operation, in order to see the effect, we set a sleep each time we loop.",[15,9769,9770],{},[18,9771],{"alt":20,"src":9772},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage684.webp",[15,9774,9775],{},"1.0 refers to 1 Hz, meaning it executes once every second.",[15,9777,9778],{},[18,9779],{"alt":20,"src":9780},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage685.webp",[15,9782,9783,9784,9787],{},"Because it's 1Hz, our ",[29,9785,9786],{},"rate.sleep()"," will sleep for 1 second each time.",[15,9789,9790],{},[18,9791],{"alt":20,"src":9792},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage686.webp",[15,9794,9795,9796,9799,9800,8399],{},"The API to generate the final result requires parameters, and the parameter passed in is the ",[29,9797,9798],{},"Result"," object from ",[29,9801,9165],{},[15,9803,9804],{},[18,9805],{"alt":20,"src":9806},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage687.webp",[15,9808,9809,9810,9813,9814,9816,9817,9819],{},"The return value of the ",[29,9811,9812],{},"ok()"," function: returns ",[29,9815,6714],{}," if it runs normally, and returns ",[29,9818,6718],{}," if it does not run normally.",[15,9821,9822],{},[18,9823],{"alt":20,"src":9824},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage688.webp",[15,9826,9827],{},[18,9828],{"alt":20,"src":9829},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage689.webp",[15,9831,9832],{},[18,9833],{"alt":20,"src":9834},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage690.webp",[15,9836,9837],{},[18,9838],{"alt":20,"src":9839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage691.webp",[15,9841,9842],{},[18,9843],{"alt":20,"src":9844},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage692.webp",[15,9846,9847],{},[18,9848],{"alt":20,"src":9849},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage693.webp",[15,9851,9852],{},[18,9853],{"alt":20,"src":9854},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage694.webp",[15,9856,9857],{},[18,9858],{"alt":20,"src":9859},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage695.webp",[15,9861,9862],{},[18,9863],{"alt":20,"src":9864},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage696.webp",[15,9866,9867],{},[18,9868],{"alt":20,"src":9869},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage697.webp",[561,9871],{},[15,9873,9874],{},"Bug: When we terminate the client, the server does not stop running. The server must keep executing until the program ends.",[15,9876,9877],{},[18,9878],{"alt":20,"src":9879},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage698.webp",[15,9881,9882],{},"Bug Resolution Approach:",[15,9884,9885,9886,9889],{},"Upon receiving the cancellation request, it interrupts my main logic—that is, ",[29,9887,9888],{},"execute_callback"," is closed.",[15,9891,9892],{},[18,9893],{"alt":20,"src":9894},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage699.webp",[15,9896,9897,9898,9900,9901,8399],{},"This function returns a boolean value. It returns ",[29,9899,6714],{}," if a cancellation request is received, otherwise it returns ",[29,9902,6718],{},[15,9904,9905],{},[18,9906],{"alt":20,"src":9907},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage700.webp",[15,9909,9910,9911,896],{},"After we cancel, we can still report the final result back to the client using the ",[29,9912,9913],{},"canceled",[15,9915,9916],{},[18,9917],{"alt":20,"src":9918},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage701.webp",[15,9920,9921],{},[18,9922],{"alt":20,"src":9923},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage702.webp",[15,9925,9926],{},[18,9927],{"alt":20,"src":9928},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage703.webp",[15,9930,9931,9932,9935],{},"Move the definition of ",[29,9933,9934],{},"result"," to the front.",[15,9937,9938],{},[18,9939],{"alt":20,"src":9940},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage704.webp",[15,9942,9943],{},[18,9944],{"alt":20,"src":9945},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage705.webp",[15,9947,9948],{},[18,9949],{"alt":20,"src":9950},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage706.webp",[23,9952,9954],{"className":25,"code":9953,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"rclcpp_action\u002Frclcpp_action.hpp\"\n#include \"base_interfaces_demo\u002Faction\u002Fprogress.hpp\"\n\nusing base_interfaces_demo::action::Progress;\nusing std::placeholders::_1;\nusing std::placeholders::_2;\n\nclass ProgressActionServer: public rclcpp::Node\n{\n  public:\n    ProgressActionServer():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action服务端创建!\");\n      \u002F*\n      rclcpp_action::Server\u003CActionT>::SharedPtr create_server\u003CActionT,\n      NodeT>(NodeT node,\n      const std::string &name,\n      rclcpp_action::Server\u003CActionT>::GoalCallback handle_goal,\n      rclcpp_action::Server\u003CActionT>::CancelCallback handle_cancel,\n      rclcpp_action::Server\u003CActionT>::AcceptedCallback handle_accepted,\n      const rcl_action_server_options_t &options = rcl_action_server_get_default_options(),\n      rclcpp::CallbackGroup::SharedPtr group = nullptr)\n      *\u002F\n      server_ = rclcpp_action::create_server\u003CProgress>(\n        this,\n        \"get_sum_topic\",\n        std::bind(&ProgressActionServer::handle_goal_callback,this,_1,_2),\n        std::bind(&ProgressActionServer::handle_cancel_callback,this,_1),\n        std::bind(&ProgressActionServer::handle_accepted_callback,this,_1)\n        );\n    }\n\n    \u002F\u002Fstd::function\u003CGoalResponse(const GoalUUID &, std::shared_ptr\u003Cconst typename ActionT::Goal>)>\n    rclcpp_action::GoalResponse handle_goal_callback(const rclcpp_action::GoalUUID &uuid, std::shared_ptr\u003Cconst Progress::Goal> goal)\n    {\n      (void)uuid;\n      if(goal->num \u003C= 1)\n      {\n        RCLCPP_INFO(this->get_logger(),\"提交的目标值必须大于1!\");\n        return rclcpp_action::GoalResponse::REJECT;\n      }\n      RCLCPP_INFO(this->get_logger(),\"提交的目标值合法!\");\n      return rclcpp_action::GoalResponse::ACCEPT_AND_EXECUTE;\n    }\n\n    \u002F\u002Fstd::function\u003CCancelResponse(std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n    rclcpp_action::CancelResponse handle_cancel_callback(std::shared_ptr\u003Crclcpp_action::ServerGoalHandle\u003CProgress>> goal_handle)\n    {\n      (void)goal_handle;\n      RCLCPP_INFO(this->get_logger(),\"接收到任务取消请求!\");\n      return rclcpp_action::CancelResponse::ACCEPT;\n    }\n\n    \u002F\u002Fstd::function\u003Cvoid (std::shared_ptr\u003CServerGoalHandle\u003CActionT>>)>\n    void execute_callback(std::shared_ptr\u003Crclcpp_action::ServerGoalHandle\u003CProgress>> goal_handle)\n    {\n      \u002F\u002Fvoid publish_feedback(std::shared_ptr\u003Cbase_interfaces_demo::action::Progress_Feedback> feedback_msg)\n      \u002F\u002Fgoal_handle->publish_feedback();\n      int num = goal_handle->get_goal()->num;\n      int sum = 0;\n      auto feedback = std::make_sharedautolinkProgress::Feedbackautolink();\n      auto result = std::make_sharedautolinkProgress::Resultautolink();\n      rclcpp::Rate rate(1.0);\n      for (int32_t i = 1; i \u003C= num; i++)\n      {\n        sum += i;\n        double progress = i \u002F (double)num;\n        feedback->progress = progress;\n\n        goal_handle->publish_feedback(feedback);\n        RCLCPP_INFO(this->get_logger(),\"连续反馈中，当前进度为:%.2f\",progress);\n\n        if(goal_handle->is_canceling() == true)\n        {\n          result->sum = sum;\n          goal_handle->canceled(result);\n          RCLCPP_INFO(this->get_logger(),\"任务被取消了!\");\n          return;\n        }\n\n        rate.sleep();\n      }\n\n      \u002F\u002Fvoid succeed(std::shared_ptr\u003Cbase_interfaces_demo::action::Progress_Result> result_msg)\n      \u002F\u002Fgoal_handle->succeed();\n\n      if(rclcpp::ok() == true)\n      {\n        result->sum = sum;\n        goal_handle->succeed(result);\n        RCLCPP_INFO(this->get_logger(),\"最终响应结果为:%d\",sum);\n      }\n\n    }\n\n    void handle_accepted_callback(std::shared_ptr\u003Crclcpp_action::ServerGoalHandle\u003CProgress>> goal_handle)\n    {\n      std::thread(std::bind(&ProgressActionServer::execute_callback,this,goal_handle)).detach();\n    }\n\n  private:\n    rclcpp_action::Server\u003CProgress>::SharedPtr server_;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CProgressActionServer>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,9955,9956,9962,9968,9974,9978,9990,10002,10014,10018,10034,10038,10042,10056,10060,10078,10082,10086,10090,10094,10098,10102,10106,10110,10114,10118,10136,10142,10148,10168,10188,10208,10212,10216,10220,10224,10275,10279,10290,10305,10309,10328,10341,10345,10364,10376,10380,10384,10388,10424,10428,10437,10456,10468,10472,10476,10480,10513,10517,10522,10527,10546,10559,10582,10604,10622,10650,10654,10665,10688,10698,10702,10713,10737,10741,10759,10763,10773,10783,10802,10809,10814,10819,10830,10835,10840,10846,10852,10857,10878,10883,10893,10903,10928,10933,10938,10943,10948,10981,10986,11024,11029,11034,11039,11054,11059,11064,11087,11092,11103,11108,11131,11136,11147,11156],{"__ignoreMap":20},[32,9957,9958,9960],{"class":34,"line":35},[32,9959,39],{"class":38},[32,9961,43],{"class":42},[32,9963,9964,9966],{"class":34,"line":46},[32,9965,39],{"class":38},[32,9967,8983],{"class":42},[32,9969,9970,9972],{"class":34,"line":53},[32,9971,39],{"class":38},[32,9973,8990],{"class":42},[32,9975,9976],{"class":34,"line":79},[32,9977,50],{"emptyLinePlaceholder":49},[32,9979,9980,9982,9984,9986,9988],{"class":34,"line":85},[32,9981,1301],{"class":38},[32,9983,3873],{"class":59},[32,9985,73],{"class":63},[32,9987,9005],{"class":59},[32,9989,9008],{"class":63},[32,9991,9992,9994,9996,9998,10000],{"class":34,"line":91},[32,9993,1301],{"class":38},[32,9995,1307],{"class":59},[32,9997,73],{"class":63},[32,9999,2262],{"class":59},[32,10001,9021],{"class":63},[32,10003,10004,10006,10008,10010,10012],{"class":34,"line":112},[32,10005,1301],{"class":38},[32,10007,1307],{"class":59},[32,10009,73],{"class":63},[32,10011,2262],{"class":59},[32,10013,9034],{"class":63},[32,10015,10016],{"class":34,"line":118},[32,10017,50],{"emptyLinePlaceholder":49},[32,10019,10020,10022,10024,10026,10028,10030,10032],{"class":34,"line":145},[32,10021,56],{"class":38},[32,10023,8473],{"class":59},[32,10025,64],{"class":63},[32,10027,67],{"class":38},[32,10029,70],{"class":59},[32,10031,73],{"class":63},[32,10033,76],{"class":59},[32,10035,10036],{"class":34,"line":151},[32,10037,82],{"class":63},[32,10039,10040],{"class":34,"line":157},[32,10041,88],{"class":38},[32,10043,10044,10046,10048,10050,10052,10054],{"class":34,"line":162},[32,10045,8496],{"class":59},[32,10047,97],{"class":63},[32,10049,100],{"class":59},[32,10051,103],{"class":63},[32,10053,8505],{"class":42},[32,10055,109],{"class":63},[32,10057,10058],{"class":34,"line":193},[32,10059,115],{"class":63},[32,10061,10062,10064,10066,10068,10070,10072,10074,10076],{"class":34,"line":198},[32,10063,121],{"class":59},[32,10065,103],{"class":63},[32,10067,127],{"class":126},[32,10069,130],{"class":63},[32,10071,133],{"class":59},[32,10073,136],{"class":63},[32,10075,8528],{"class":42},[32,10077,142],{"class":63},[32,10079,10080],{"class":34,"line":212},[32,10081,7793],{"class":5139},[32,10083,10084],{"class":34,"line":217},[32,10085,9107],{"class":5139},[32,10087,10088],{"class":34,"line":246},[32,10089,9112],{"class":5139},[32,10091,10092],{"class":34,"line":251},[32,10093,9117],{"class":5139},[32,10095,10096],{"class":34,"line":264},[32,10097,9122],{"class":5139},[32,10099,10100],{"class":34,"line":276},[32,10101,9127],{"class":5139},[32,10103,10104],{"class":34,"line":495},[32,10105,9132],{"class":5139},[32,10107,10108],{"class":34,"line":502},[32,10109,9137],{"class":5139},[32,10111,10112],{"class":34,"line":510},[32,10113,9142],{"class":5139},[32,10115,10116],{"class":34,"line":518},[32,10117,7808],{"class":5139},[32,10119,10120,10122,10124,10126,10128,10130,10132,10134],{"class":34,"line":524},[32,10121,5410],{"class":63},[32,10123,1396],{"class":38},[32,10125,9155],{"class":59},[32,10127,73],{"class":63},[32,10129,9160],{"class":59},[32,10131,237],{"class":63},[32,10133,9165],{"class":59},[32,10135,9168],{"class":63},[32,10137,10138,10140],{"class":34,"line":530},[32,10139,9173],{"class":126},[32,10141,344],{"class":63},[32,10143,10144,10146],{"class":34,"line":541},[32,10145,9180],{"class":42},[32,10147,344],{"class":63},[32,10149,10150,10152,10154,10156,10158,10160,10162,10164,10166],{"class":34,"line":547},[32,10151,2843],{"class":59},[32,10153,73],{"class":63},[32,10155,1462],{"class":59},[32,10157,103],{"class":63},[32,10159,1467],{"class":38},[32,10161,8603],{"class":59},[32,10163,9199],{"class":63},[32,10165,127],{"class":126},[32,10167,9204],{"class":63},[32,10169,10170,10172,10174,10176,10178,10180,10182,10184,10186],{"class":34,"line":1676},[32,10171,2843],{"class":59},[32,10173,73],{"class":63},[32,10175,1462],{"class":59},[32,10177,103],{"class":63},[32,10179,1467],{"class":38},[32,10181,8603],{"class":59},[32,10183,9221],{"class":63},[32,10185,127],{"class":126},[32,10187,9226],{"class":63},[32,10189,10190,10192,10194,10196,10198,10200,10202,10204,10206],{"class":34,"line":1681},[32,10191,2843],{"class":59},[32,10193,73],{"class":63},[32,10195,1462],{"class":59},[32,10197,103],{"class":63},[32,10199,1467],{"class":38},[32,10201,8603],{"class":59},[32,10203,9243],{"class":63},[32,10205,127],{"class":126},[32,10207,9248],{"class":63},[32,10209,10210],{"class":34,"line":1692},[32,10211,9253],{"class":63},[32,10213,10214],{"class":34,"line":1697},[32,10215,148],{"class":63},[32,10217,10218],{"class":34,"line":1720},[32,10219,50],{"emptyLinePlaceholder":49},[32,10221,10222],{"class":34,"line":1725},[32,10223,9262],{"class":5139},[32,10225,10226,10228,10230,10232,10234,10236,10238,10240,10242,10244,10246,10249,10251,10253,10255,10257,10259,10261,10263,10265,10267,10270,10273],{"class":34,"line":1736},[32,10227,9267],{"class":59},[32,10229,73],{"class":63},[32,10231,9272],{"class":59},[32,10233,9275],{"class":59},[32,10235,103],{"class":63},[32,10237,2290],{"class":38},[32,10239,9155],{"class":59},[32,10241,73],{"class":63},[32,10243,9286],{"class":59},[32,10245,2303],{"class":38},[32,10247,10248],{"class":175},"uuid",[32,10250,179],{"class":63},[32,10252,229],{"class":59},[32,10254,73],{"class":63},[32,10256,9297],{"class":59},[32,10258,237],{"class":63},[32,10260,2290],{"class":38},[32,10262,9304],{"class":59},[32,10264,73],{"class":63},[32,10266,9309],{"class":59},[32,10268,10269],{"class":63},"> ",[32,10271,10272],{"class":175},"goal",[32,10274,109],{"class":63},[32,10276,10277],{"class":34,"line":1745},[32,10278,115],{"class":63},[32,10280,10281,10284,10287],{"class":34,"line":4099},[32,10282,10283],{"class":63},"      (",[32,10285,10286],{"class":38},"void",[32,10288,10289],{"class":63},")uuid;\n",[32,10291,10292,10295,10298,10301,10303],{"class":34,"line":4110},[32,10293,10294],{"class":38},"      if",[32,10296,10297],{"class":63},"(goal->num ",[32,10299,10300],{"class":38},"\u003C=",[32,10302,2896],{"class":126},[32,10304,109],{"class":63},[32,10306,10307],{"class":34,"line":4119},[32,10308,6978],{"class":63},[32,10310,10311,10313,10315,10317,10319,10321,10323,10326],{"class":34,"line":7189},[32,10312,1905],{"class":59},[32,10314,103],{"class":63},[32,10316,127],{"class":126},[32,10318,130],{"class":63},[32,10320,133],{"class":59},[32,10322,136],{"class":63},[32,10324,10325],{"class":42},"\"提交的目标值必须大于1!\"",[32,10327,142],{"class":63},[32,10329,10330,10332,10334,10336,10338],{"class":34,"line":7198},[32,10331,2893],{"class":38},[32,10333,9155],{"class":59},[32,10335,73],{"class":63},[32,10337,9272],{"class":59},[32,10339,10340],{"class":63},"::REJECT;\n",[32,10342,10343],{"class":34,"line":7203},[32,10344,7077],{"class":63},[32,10346,10347,10349,10351,10353,10355,10357,10359,10362],{"class":34,"line":7214},[32,10348,121],{"class":59},[32,10350,103],{"class":63},[32,10352,127],{"class":126},[32,10354,130],{"class":63},[32,10356,133],{"class":59},[32,10358,136],{"class":63},[32,10360,10361],{"class":42},"\"提交的目标值合法!\"",[32,10363,142],{"class":63},[32,10365,10366,10368,10370,10372,10374],{"class":34,"line":7219},[32,10367,7082],{"class":38},[32,10369,9155],{"class":59},[32,10371,73],{"class":63},[32,10373,9272],{"class":59},[32,10375,9333],{"class":63},[32,10377,10378],{"class":34,"line":7240},[32,10379,148],{"class":63},[32,10381,10382],{"class":34,"line":7245},[32,10383,50],{"emptyLinePlaceholder":49},[32,10385,10386],{"class":34,"line":7264},[32,10387,9346],{"class":5139},[32,10389,10390,10392,10394,10396,10398,10400,10402,10404,10406,10408,10410,10412,10414,10416,10418,10420,10422],{"class":34,"line":7269},[32,10391,9267],{"class":59},[32,10393,73],{"class":63},[32,10395,9355],{"class":59},[32,10397,9358],{"class":59},[32,10399,103],{"class":63},[32,10401,229],{"class":59},[32,10403,73],{"class":63},[32,10405,9297],{"class":59},[32,10407,237],{"class":63},[32,10409,9371],{"class":59},[32,10411,73],{"class":63},[32,10413,9376],{"class":59},[32,10415,237],{"class":63},[32,10417,9165],{"class":59},[32,10419,9383],{"class":63},[32,10421,9386],{"class":175},[32,10423,109],{"class":63},[32,10425,10426],{"class":34,"line":7283},[32,10427,115],{"class":63},[32,10429,10430,10432,10434],{"class":34,"line":7288},[32,10431,10283],{"class":63},[32,10433,10286],{"class":38},[32,10435,10436],{"class":63},")goal_handle;\n",[32,10438,10439,10441,10443,10445,10447,10449,10451,10454],{"class":34,"line":7312},[32,10440,121],{"class":59},[32,10442,103],{"class":63},[32,10444,127],{"class":126},[32,10446,130],{"class":63},[32,10448,133],{"class":59},[32,10450,136],{"class":63},[32,10452,10453],{"class":42},"\"接收到任务取消请求!\"",[32,10455,142],{"class":63},[32,10457,10458,10460,10462,10464,10466],{"class":34,"line":7321},[32,10459,7082],{"class":38},[32,10461,9155],{"class":59},[32,10463,73],{"class":63},[32,10465,9355],{"class":59},[32,10467,9409],{"class":63},[32,10469,10470],{"class":34,"line":7326},[32,10471,148],{"class":63},[32,10473,10474],{"class":34,"line":7331},[32,10475,50],{"emptyLinePlaceholder":49},[32,10477,10478],{"class":34,"line":7342},[32,10479,9422],{"class":5139},[32,10481,10482,10484,10487,10489,10491,10493,10495,10497,10499,10501,10503,10505,10507,10509,10511],{"class":34,"line":7351},[32,10483,1491],{"class":38},[32,10485,10486],{"class":59}," execute_callback",[32,10488,103],{"class":63},[32,10490,229],{"class":59},[32,10492,73],{"class":63},[32,10494,9297],{"class":59},[32,10496,237],{"class":63},[32,10498,9371],{"class":59},[32,10500,73],{"class":63},[32,10502,9376],{"class":59},[32,10504,237],{"class":63},[32,10506,9165],{"class":59},[32,10508,9383],{"class":63},[32,10510,9386],{"class":175},[32,10512,109],{"class":63},[32,10514,10515],{"class":34,"line":8011},[32,10516,115],{"class":63},[32,10518,10519],{"class":34,"line":8016},[32,10520,10521],{"class":5139},"      \u002F\u002Fvoid publish_feedback(std::shared_ptr\u003Cbase_interfaces_demo::action::Progress_Feedback> feedback_msg)\n",[32,10523,10524],{"class":34,"line":8031},[32,10525,10526],{"class":5139},"      \u002F\u002Fgoal_handle->publish_feedback();\n",[32,10528,10529,10532,10535,10537,10540,10543],{"class":34,"line":8036},[32,10530,10531],{"class":38},"      int",[32,10533,10534],{"class":63}," num ",[32,10536,1396],{"class":38},[32,10538,10539],{"class":63}," goal_handle->",[32,10541,10542],{"class":59},"get_goal",[32,10544,10545],{"class":63},"()->num;\n",[32,10547,10548,10550,10553,10555,10557],{"class":34,"line":8049},[32,10549,10531],{"class":38},[32,10551,10552],{"class":63}," sum ",[32,10554,1396],{"class":38},[32,10556,270],{"class":126},[32,10558,273],{"class":63},[32,10560,10561,10563,10566,10568,10570,10572,10575,10577,10580],{"class":34,"line":8054},[32,10562,1506],{"class":38},[32,10564,10565],{"class":63}," feedback ",[32,10567,1396],{"class":38},[32,10569,1307],{"class":59},[32,10571,73],{"class":63},[32,10573,10574],{"class":59},"make_sharedautolinkProgress",[32,10576,73],{"class":63},[32,10578,10579],{"class":59},"Feedbackautolink",[32,10581,261],{"class":63},[32,10583,10584,10586,10589,10591,10593,10595,10597,10599,10602],{"class":34,"line":8077},[32,10585,1506],{"class":38},[32,10587,10588],{"class":63}," result ",[32,10590,1396],{"class":38},[32,10592,1307],{"class":59},[32,10594,73],{"class":63},[32,10596,10574],{"class":59},[32,10598,73],{"class":63},[32,10600,10601],{"class":59},"Resultautolink",[32,10603,261],{"class":63},[32,10605,10606,10609,10612,10615,10617,10620],{"class":34,"line":8086},[32,10607,10608],{"class":59},"      rclcpp",[32,10610,10611],{"class":63},"::Rate ",[32,10613,10614],{"class":59},"rate",[32,10616,103],{"class":63},[32,10618,10619],{"class":126},"1.0",[32,10621,142],{"class":63},[32,10623,10624,10627,10629,10631,10634,10636,10638,10641,10643,10646,10648],{"class":34,"line":8091},[32,10625,10626],{"class":38},"      for",[32,10628,5551],{"class":63},[32,10630,7772],{"class":38},[32,10632,10633],{"class":63}," i ",[32,10635,1396],{"class":38},[32,10637,2896],{"class":126},[32,10639,10640],{"class":63},"; i ",[32,10642,10300],{"class":38},[32,10644,10645],{"class":63}," num; i",[32,10647,1551],{"class":38},[32,10649,109],{"class":63},[32,10651,10652],{"class":34,"line":8128},[32,10653,6978],{"class":63},[32,10655,10656,10659,10662],{"class":34,"line":8133},[32,10657,10658],{"class":63},"        sum ",[32,10660,10661],{"class":38},"+=",[32,10663,10664],{"class":63}," i;\n",[32,10666,10667,10670,10673,10675,10677,10680,10682,10685],{"class":34,"line":8163},[32,10668,10669],{"class":38},"        double",[32,10671,10672],{"class":63}," progress ",[32,10674,1396],{"class":38},[32,10676,10633],{"class":63},[32,10678,10679],{"class":38},"\u002F",[32,10681,5551],{"class":63},[32,10683,10684],{"class":38},"double",[32,10686,10687],{"class":63},")num;\n",[32,10689,10690,10693,10695],{"class":34,"line":8168},[32,10691,10692],{"class":63},"        feedback->progress ",[32,10694,1396],{"class":38},[32,10696,10697],{"class":63}," progress;\n",[32,10699,10700],{"class":34,"line":8196},[32,10701,50],{"emptyLinePlaceholder":49},[32,10703,10704,10707,10710],{"class":34,"line":8201},[32,10705,10706],{"class":63},"        goal_handle->",[32,10708,10709],{"class":59},"publish_feedback",[32,10711,10712],{"class":63},"(feedback);\n",[32,10714,10715,10717,10719,10721,10723,10725,10727,10730,10732,10734],{"class":34,"line":8207},[32,10716,1905],{"class":59},[32,10718,103],{"class":63},[32,10720,127],{"class":126},[32,10722,130],{"class":63},[32,10724,133],{"class":59},[32,10726,136],{"class":63},[32,10728,10729],{"class":42},"\"连续反馈中，当前进度为:",[32,10731,3969],{"class":126},[32,10733,368],{"class":42},[32,10735,10736],{"class":63},",progress);\n",[32,10738,10739],{"class":34,"line":8212},[32,10740,50],{"emptyLinePlaceholder":49},[32,10742,10743,10745,10748,10751,10753,10755,10757],{"class":34,"line":8228},[32,10744,7010],{"class":38},[32,10746,10747],{"class":63},"(goal_handle->",[32,10749,10750],{"class":59},"is_canceling",[32,10752,7022],{"class":63},[32,10754,8150],{"class":38},[32,10756,6971],{"class":126},[32,10758,109],{"class":63},[32,10760,10761],{"class":34,"line":8233},[32,10762,7033],{"class":63},[32,10764,10765,10768,10770],{"class":34,"line":8238},[32,10766,10767],{"class":63},"          result->sum ",[32,10769,1396],{"class":38},[32,10771,10772],{"class":63}," sum;\n",[32,10774,10775,10778,10780],{"class":34,"line":8249},[32,10776,10777],{"class":63},"          goal_handle->",[32,10779,9913],{"class":59},[32,10781,10782],{"class":63},"(result);\n",[32,10784,10785,10787,10789,10791,10793,10795,10797,10800],{"class":34,"line":8258},[32,10786,7038],{"class":59},[32,10788,103],{"class":63},[32,10790,127],{"class":126},[32,10792,130],{"class":63},[32,10794,133],{"class":59},[32,10796,136],{"class":63},[32,10798,10799],{"class":42},"\"任务被取消了!\"",[32,10801,142],{"class":63},[32,10803,10805,10807],{"class":34,"line":10804},79,[32,10806,7062],{"class":38},[32,10808,273],{"class":63},[32,10810,10812],{"class":34,"line":10811},80,[32,10813,7072],{"class":63},[32,10815,10817],{"class":34,"line":10816},81,[32,10818,50],{"emptyLinePlaceholder":49},[32,10820,10822,10825,10828],{"class":34,"line":10821},82,[32,10823,10824],{"class":63},"        rate.",[32,10826,10827],{"class":59},"sleep",[32,10829,261],{"class":63},[32,10831,10833],{"class":34,"line":10832},83,[32,10834,7077],{"class":63},[32,10836,10838],{"class":34,"line":10837},84,[32,10839,50],{"emptyLinePlaceholder":49},[32,10841,10843],{"class":34,"line":10842},85,[32,10844,10845],{"class":5139},"      \u002F\u002Fvoid succeed(std::shared_ptr\u003Cbase_interfaces_demo::action::Progress_Result> result_msg)\n",[32,10847,10849],{"class":34,"line":10848},86,[32,10850,10851],{"class":5139},"      \u002F\u002Fgoal_handle->succeed();\n",[32,10853,10855],{"class":34,"line":10854},87,[32,10856,50],{"emptyLinePlaceholder":49},[32,10858,10860,10862,10864,10866,10868,10870,10872,10874,10876],{"class":34,"line":10859},88,[32,10861,10294],{"class":38},[32,10863,103],{"class":63},[32,10865,4395],{"class":59},[32,10867,73],{"class":63},[32,10869,7019],{"class":59},[32,10871,7022],{"class":63},[32,10873,8150],{"class":38},[32,10875,6971],{"class":126},[32,10877,109],{"class":63},[32,10879,10881],{"class":34,"line":10880},89,[32,10882,6978],{"class":63},[32,10884,10886,10889,10891],{"class":34,"line":10885},90,[32,10887,10888],{"class":63},"        result->sum ",[32,10890,1396],{"class":38},[32,10892,10772],{"class":63},[32,10894,10896,10898,10901],{"class":34,"line":10895},91,[32,10897,10706],{"class":63},[32,10899,10900],{"class":59},"succeed",[32,10902,10782],{"class":63},[32,10904,10906,10908,10910,10912,10914,10916,10918,10921,10923,10925],{"class":34,"line":10905},92,[32,10907,1905],{"class":59},[32,10909,103],{"class":63},[32,10911,127],{"class":126},[32,10913,130],{"class":63},[32,10915,133],{"class":59},[32,10917,136],{"class":63},[32,10919,10920],{"class":42},"\"最终响应结果为:",[32,10922,3964],{"class":126},[32,10924,368],{"class":42},[32,10926,10927],{"class":63},",sum);\n",[32,10929,10931],{"class":34,"line":10930},93,[32,10932,7077],{"class":63},[32,10934,10936],{"class":34,"line":10935},94,[32,10937,50],{"emptyLinePlaceholder":49},[32,10939,10941],{"class":34,"line":10940},95,[32,10942,148],{"class":63},[32,10944,10946],{"class":34,"line":10945},96,[32,10947,50],{"emptyLinePlaceholder":49},[32,10949,10951,10953,10955,10957,10959,10961,10963,10965,10967,10969,10971,10973,10975,10977,10979],{"class":34,"line":10950},97,[32,10952,1491],{"class":38},[32,10954,9429],{"class":59},[32,10956,103],{"class":63},[32,10958,229],{"class":59},[32,10960,73],{"class":63},[32,10962,9297],{"class":59},[32,10964,237],{"class":63},[32,10966,9371],{"class":59},[32,10968,73],{"class":63},[32,10970,9376],{"class":59},[32,10972,237],{"class":63},[32,10974,9165],{"class":59},[32,10976,9383],{"class":63},[32,10978,9386],{"class":175},[32,10980,109],{"class":63},[32,10982,10984],{"class":34,"line":10983},98,[32,10985,115],{"class":63},[32,10987,10989,10992,10994,10997,10999,11001,11003,11005,11007,11009,11011,11014,11016,11019,11022],{"class":34,"line":10988},99,[32,10990,10991],{"class":59},"      std",[32,10993,73],{"class":63},[32,10995,10996],{"class":59},"thread",[32,10998,103],{"class":63},[32,11000,229],{"class":59},[32,11002,73],{"class":63},[32,11004,1462],{"class":59},[32,11006,103],{"class":63},[32,11008,1467],{"class":38},[32,11010,8603],{"class":59},[32,11012,11013],{"class":63},"::execute_callback,",[32,11015,127],{"class":126},[32,11017,11018],{"class":63},",goal_handle)).",[32,11020,11021],{"class":59},"detach",[32,11023,261],{"class":63},[32,11025,11027],{"class":34,"line":11026},100,[32,11028,148],{"class":63},[32,11030,11032],{"class":34,"line":11031},101,[32,11033,50],{"emptyLinePlaceholder":49},[32,11035,11037],{"class":34,"line":11036},102,[32,11038,1486],{"class":38},[32,11040,11042,11044,11046,11048,11050,11052],{"class":34,"line":11041},103,[32,11043,9267],{"class":59},[32,11045,73],{"class":63},[32,11047,9480],{"class":59},[32,11049,237],{"class":63},[32,11051,9165],{"class":59},[32,11053,5619],{"class":63},[32,11055,11057],{"class":34,"line":11056},104,[32,11058,154],{"class":63},[32,11060,11062],{"class":34,"line":11061},105,[32,11063,50],{"emptyLinePlaceholder":49},[32,11065,11067,11069,11071,11073,11075,11077,11079,11081,11083,11085],{"class":34,"line":11066},106,[32,11068,165],{"class":38},[32,11070,168],{"class":59},[32,11072,103],{"class":63},[32,11074,165],{"class":38},[32,11076,176],{"class":175},[32,11078,179],{"class":63},[32,11080,182],{"class":38},[32,11082,185],{"class":38},[32,11084,188],{"class":175},[32,11086,109],{"class":63},[32,11088,11090],{"class":34,"line":11089},107,[32,11091,82],{"class":63},[32,11093,11095,11097,11099,11101],{"class":34,"line":11094},108,[32,11096,201],{"class":59},[32,11098,73],{"class":63},[32,11100,206],{"class":59},[32,11102,209],{"class":63},[32,11104,11106],{"class":34,"line":11105},109,[32,11107,50],{"emptyLinePlaceholder":49},[32,11109,11111,11113,11115,11117,11119,11121,11123,11125,11127,11129],{"class":34,"line":11110},110,[32,11112,201],{"class":59},[32,11114,73],{"class":63},[32,11116,224],{"class":59},[32,11118,103],{"class":63},[32,11120,229],{"class":59},[32,11122,73],{"class":63},[32,11124,234],{"class":59},[32,11126,237],{"class":63},[32,11128,8603],{"class":59},[32,11130,243],{"class":63},[32,11132,11134],{"class":34,"line":11133},111,[32,11135,50],{"emptyLinePlaceholder":49},[32,11137,11139,11141,11143,11145],{"class":34,"line":11138},112,[32,11140,201],{"class":59},[32,11142,73],{"class":63},[32,11144,258],{"class":59},[32,11146,261],{"class":63},[32,11148,11150,11152,11154],{"class":34,"line":11149},113,[32,11151,267],{"class":38},[32,11153,270],{"class":126},[32,11155,273],{"class":63},[32,11157,11159],{"class":34,"line":11158},114,[32,11160,279],{"class":63},[10,11162,11164],{"id":11163},"action-communication_experiment-1_client-implementation-c","Action Communication_Experiment 1_Client Implementation (C++)",[15,11166,11167],{},[18,11168],{"alt":20,"src":11169},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage707.webp",[15,11171,11172],{},"This red line is already encapsulated for us by the action_client, so you don't need to worry about it.",[15,11174,11175],{},[18,11176],{"alt":20,"src":11177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage708.webp",[23,11179,11181],{"className":25,"code":11180,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ProgressActionClient: public rclcpp::Node\n{\n  public:\n    ProgressActionClient():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action客户端创建!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 2)\n  {\n    RCLCPP_INFO(rclcpp::get_logger(\"rclcppp\"),\"请输入一个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  rclcpp::spin(std::make_shared\u003CProgressActionClient>());\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,11182,11183,11189,11193,11209,11213,11217,11231,11235,11253,11257,11261,11265,11287,11291,11304,11308,11332,11340,11344,11354,11358,11380,11384,11394,11402],{"__ignoreMap":20},[32,11184,11185,11187],{"class":34,"line":35},[32,11186,39],{"class":38},[32,11188,43],{"class":42},[32,11190,11191],{"class":34,"line":46},[32,11192,50],{"emptyLinePlaceholder":49},[32,11194,11195,11197,11199,11201,11203,11205,11207],{"class":34,"line":53},[32,11196,56],{"class":38},[32,11198,8658],{"class":59},[32,11200,64],{"class":63},[32,11202,67],{"class":38},[32,11204,70],{"class":59},[32,11206,73],{"class":63},[32,11208,76],{"class":59},[32,11210,11211],{"class":34,"line":79},[32,11212,82],{"class":63},[32,11214,11215],{"class":34,"line":85},[32,11216,88],{"class":38},[32,11218,11219,11221,11223,11225,11227,11229],{"class":34,"line":91},[32,11220,8681],{"class":59},[32,11222,97],{"class":63},[32,11224,100],{"class":59},[32,11226,103],{"class":63},[32,11228,8505],{"class":42},[32,11230,109],{"class":63},[32,11232,11233],{"class":34,"line":112},[32,11234,115],{"class":63},[32,11236,11237,11239,11241,11243,11245,11247,11249,11251],{"class":34,"line":118},[32,11238,121],{"class":59},[32,11240,103],{"class":63},[32,11242,127],{"class":126},[32,11244,130],{"class":63},[32,11246,133],{"class":59},[32,11248,136],{"class":63},[32,11250,8712],{"class":42},[32,11252,142],{"class":63},[32,11254,11255],{"class":34,"line":145},[32,11256,148],{"class":63},[32,11258,11259],{"class":34,"line":151},[32,11260,154],{"class":63},[32,11262,11263],{"class":34,"line":157},[32,11264,50],{"emptyLinePlaceholder":49},[32,11266,11267,11269,11271,11273,11275,11277,11279,11281,11283,11285],{"class":34,"line":162},[32,11268,165],{"class":38},[32,11270,168],{"class":59},[32,11272,103],{"class":63},[32,11274,165],{"class":38},[32,11276,176],{"class":175},[32,11278,179],{"class":63},[32,11280,182],{"class":38},[32,11282,185],{"class":38},[32,11284,188],{"class":175},[32,11286,109],{"class":63},[32,11288,11289],{"class":34,"line":193},[32,11290,82],{"class":63},[32,11292,11293,11295,11297,11299,11302],{"class":34,"line":198},[32,11294,6224],{"class":38},[32,11296,6227],{"class":63},[32,11298,6230],{"class":38},[32,11300,11301],{"class":126}," 2",[32,11303,109],{"class":63},[32,11305,11306],{"class":34,"line":212},[32,11307,6240],{"class":63},[32,11309,11310,11312,11314,11316,11318,11320,11322,11325,11327,11330],{"class":34,"line":217},[32,11311,6245],{"class":59},[32,11313,103],{"class":63},[32,11315,4395],{"class":59},[32,11317,73],{"class":63},[32,11319,133],{"class":59},[32,11321,103],{"class":63},[32,11323,11324],{"class":42},"\"rclcppp\"",[32,11326,3732],{"class":63},[32,11328,11329],{"class":42},"\"请输入一个整形数字!\"",[32,11331,142],{"class":63},[32,11333,11334,11336,11338],{"class":34,"line":246},[32,11335,2016],{"class":38},[32,11337,2896],{"class":126},[32,11339,273],{"class":63},[32,11341,11342],{"class":34,"line":251},[32,11343,544],{"class":63},[32,11345,11346,11348,11350,11352],{"class":34,"line":264},[32,11347,201],{"class":59},[32,11349,73],{"class":63},[32,11351,206],{"class":59},[32,11353,209],{"class":63},[32,11355,11356],{"class":34,"line":276},[32,11357,50],{"emptyLinePlaceholder":49},[32,11359,11360,11362,11364,11366,11368,11370,11372,11374,11376,11378],{"class":34,"line":495},[32,11361,201],{"class":59},[32,11363,73],{"class":63},[32,11365,224],{"class":59},[32,11367,103],{"class":63},[32,11369,229],{"class":59},[32,11371,73],{"class":63},[32,11373,234],{"class":59},[32,11375,237],{"class":63},[32,11377,8787],{"class":59},[32,11379,243],{"class":63},[32,11381,11382],{"class":34,"line":502},[32,11383,50],{"emptyLinePlaceholder":49},[32,11385,11386,11388,11390,11392],{"class":34,"line":510},[32,11387,201],{"class":59},[32,11389,73],{"class":63},[32,11391,258],{"class":59},[32,11393,261],{"class":63},[32,11395,11396,11398,11400],{"class":34,"line":518},[32,11397,267],{"class":38},[32,11399,270],{"class":126},[32,11401,273],{"class":63},[32,11403,11404],{"class":34,"line":524},[32,11405,279],{"class":63},[15,11407,11408],{},[18,11409],{"alt":20,"src":11410},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage709.webp",[15,11412,11413],{},[18,11414],{"alt":20,"src":11415},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage710.webp",[15,11417,11418],{},[18,11419],{"alt":20,"src":11420},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage711.webp",[15,11422,11423],{},[18,11424],{"alt":20,"src":11425},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage712.webp",[15,11427,11428],{},"The first input parameter is node.",[15,11430,11431],{},"The second input parameter is the topic name, a string.",[15,11433,11434],{},"The third input parameter and the fourth input parameter both have default values.",[15,11436,11437],{},"The return value is a client-side smart pointer.",[15,11439,11440],{},[18,11441],{"alt":20,"src":11442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage713.webp",[15,11444,11445],{},[18,11446],{"alt":20,"src":11447},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage714.webp",[15,11449,11450],{},[18,11451],{"alt":20,"src":11452},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage715.webp",[15,11454,11455],{},[18,11456],{"alt":20,"src":11457},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage716.webp",[15,11459,11460],{},"Need to split one step into two steps.",[15,11462,11463],{},[18,11464],{"alt":20,"src":11465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage717.webp",[15,11467,11468],{},"Call the send_goal function again.",[15,11470,11471],{},[18,11472],{"alt":20,"src":11473},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage718.webp",[561,11475],{},[15,11477,11478],{},[18,11479],{"alt":20,"src":11480},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage719.webp",[15,11482,11483],{},"async_send_goal asynchronously sends target values.",[15,11485,11486],{},[18,11487],{"alt":20,"src":11488},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage720.webp",[15,11490,11491],{},"The first input parameter is the target value in our interface file.",[15,11493,11494],{},"The second input parameter is the target sending options object, through which we can set certain callback functions that need to be handled after the target is sent.",[15,11496,11497],{},"The return value is",[15,11499,11500],{},[18,11501],{"alt":20,"src":11502},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage721.webp",[15,11504,11505],{},[18,11506],{"alt":20,"src":11507},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage722.webp",[15,11509,11510],{},[18,11511],{"alt":20,"src":11512},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage723.webp",[15,11514,11515],{},[18,11516],{"alt":20,"src":11517},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage724.webp",[15,11519,11520],{},"For now, just define the functions casually, with void as both the return type and entry parameters, just to prevent the program from throwing errors.",[15,11522,11523],{},[18,11524],{"alt":20,"src":11525},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage725.webp",[15,11527,11528],{},[18,11529],{"alt":20,"src":11530},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage726.webp",[15,11532,11533],{},[18,11534],{"alt":20,"src":11535},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage727.webp",[15,11537,11538],{},"Got it.",[15,11540,11541],{},"The return value of GoalResponseCallback is void, with goalhandle as the input parameter. The goalhandle is above this diagram, being a client goal handle that belongs to the rclcpp_action workspace.",[15,11543,11544],{},[18,11545],{"alt":20,"src":11546},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage728.webp",[15,11548,11549],{},[18,11550],{"alt":20,"src":11551},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage729.webp",[15,11553,11554],{},[18,11555],{"alt":20,"src":11556},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage730.webp",[15,11558,11559],{},[18,11560],{"alt":20,"src":11561},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage731.webp",[15,11563,11564],{},[18,11565],{"alt":20,"src":11566},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage732.webp",[15,11568,11569],{},"The return value is void.",[15,11571,11572],{},"The first entry parameter is clientgoalhandle.",[15,11574,11575],{},"The second input parameter is feedback.",[15,11577,11578],{},[18,11579],{"alt":20,"src":11580},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage733.webp",[15,11582,11583],{},[18,11584],{"alt":20,"src":11585},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage734.webp",[15,11587,11588],{},[18,11589],{"alt":20,"src":11590},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage735.webp",[15,11592,11593],{},[18,11594],{"alt":20,"src":11595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage736.webp",[15,11597,11598],{},[18,11599],{"alt":20,"src":11600},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage737.webp",[561,11602],{},[15,11604,11605],{},[18,11606],{"alt":20,"src":11607},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage738.webp",[15,11609,11610],{},"Send a value to the server. The server must first retrieve the target value, determine whether it can be accepted or rejected, and then respond with the processing result to the client.",[15,11612,11613],{},"If the goal value is actionable, then the goal_handle contains data;",[15,11615,11616],{},"If it cannot be processed, then goal_handle is a null pointer.",[15,11618,11619],{},[18,11620],{"alt":20,"src":11621},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage739.webp",[15,11623,11624],{},[18,11625],{"alt":20,"src":11626},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage740.webp",[15,11628,11629],{},[18,11630],{"alt":20,"src":11631},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage741.webp",[15,11633,11634],{},[18,11635],{"alt":20,"src":11636},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage742.webp",[561,11638],{},[15,11640,11641],{},"Now processing the feedback data:",[15,11643,11644],{},[18,11645],{"alt":20,"src":11646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage743.webp",[15,11648,11649],{},"If we are only parsing the feedback data, then the goal_handle is not needed.",[15,11651,11652],{},[18,11653],{"alt":20,"src":11654},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage744.webp",[15,11656,11657],{},[18,11658],{"alt":20,"src":11659},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage745.webp",[15,11661,11662],{},[18,11663],{"alt":20,"src":11664},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage746.webp",[15,11666,11667,11668,11671,11672,11674],{},"You need to use two ",[29,11669,11670],{},"%"," signs to escape a ",[29,11673,11670],{},", as shown in the example above, which is a case of printing percentage data.",[15,11676,11677],{},"If progress_int is 50, it will output 50%.",[15,11679,11680,11681,11683,11684,11687],{},"If you only want to print a single ",[29,11682,11670],{},", you need to use ",[29,11685,11686],{},"%%"," to escape it.",[15,11689,11690],{},[18,11691],{"alt":20,"src":11692},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage747.webp",[15,11694,11695],{},[18,11696],{"alt":20,"src":11697},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage748.webp",[15,11699,11700],{},"Callback functions may experience data loss. This is normal behavior.",[561,11702],{},[15,11704,11705],{},"Final response.",[15,11707,11708],{},"The final status of this result is uncertain; the task may have been canceled, terminated, or completed normally.",[15,11710,11711],{},"Therefore, we need to determine the status based on the status code.",[15,11713,11714],{},[18,11715],{"alt":20,"src":11716},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage749.webp",[15,11718,11719],{},"The first one was forcibly terminated.",[15,11721,11722],{},"The second is to cancel.",[15,11724,11725],{},"The third one is success.",[15,11727,11728],{},"The fourth one is unknown.",[15,11730,11731],{},[18,11732],{"alt":20,"src":11733},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage750.webp",[15,11735,11736],{},[18,11737],{"alt":20,"src":11738},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage751.webp",[15,11740,11741],{},[18,11742],{"alt":20,"src":11743},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage752.webp",[23,11745,11747],{"className":25,"code":11746,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"rclcpp_action\u002Frclcpp_action.hpp\"\n#include \"base_interfaces_demo\u002Faction\u002Fprogress.hpp\"\n\nusing base_interfaces_demo::action::Progress;\nusing namespace std::chrono_literals;\nusing std::placeholders::_1;\nusing std::placeholders::_2;\n\nclass ProgressActionClient: public rclcpp::Node\n{\n  public:\n    ProgressActionClient():Node(\"progress_action_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"action客户端创建!\");\n      \u002F*\n      rclcpp_action::Client\u003CActionT>::SharedPtr create_client\u003CActionT,\n      NodeT>(NodeT node, const std::string &name,\n      rclcpp::CallbackGroup::SharedPtr group = nullptr,\n      const rcl_action_client_options_t &options = rcl_action_client_get_default_options())\n      *\u002F\n      client_ = rclcpp_action::create_client\u003CProgress>(this,\"get_sum_topic\");\n    }\n\n    void send_goal(int32_t num)\n    {\n      if(client_->wait_for_action_server(1s) != true)\n      {\n        RCLCPP_ERROR(this->get_logger(),\"服务连接失败!\");\n        return;\n      }\n\n      \u002F*\n      std::shared_future\u003Crclcpp_action::ClientGoalHandle\u003Cbase_interfaces_demo::action::Progress>::SharedPtr>\n      async_send_goal(const base_interfaces_demo::action::Progress::Goal &goal,\n      const rclcpp_action::Client\u003Cbase_interfaces_demo::action::Progress>::SendGoalOptions &options)\n      *\u002F\n      auto goal = Progress::Goal();\n      goal.num = num;\n\n      rclcpp_action::Client\u003CProgress>::SendGoalOptions options;\n      options.goal_response_callback = std::bind(&ProgressActionClient::goal_response_callback,this,_1);\n      options.feedback_callback = std::bind(&ProgressActionClient::feedback_callback,this,_1,_2);\n      options.result_callback = std::bind(&ProgressActionClient::result_callback,this,_1);\n\n      auto future = client_->async_send_goal(goal,options);\n    }\n\n  void goal_response_callback(rclcpp_action::ClientGoalHandle\u003CProgress>::SharedPtr goal_handle)\n  {\n    if(goal_handle == nullptr)\n    {\n      RCLCPP_INFO(this->get_logger(),\"目标请求被服务端拒绝!\");\n    }\n    else\n    {\n      RCLCPP_INFO(this->get_logger(),\"目标处理中!\");\n    }\n  }\n\n  void feedback_callback(rclcpp_action::ClientGoalHandle\u003CProgress>::SharedPtr goal_handle,std::shared_ptr\u003Cconst Progress::Feedback> feedback)\n  {\n    (void)goal_handle;\n    double progress = feedback->progress;\n    int progress_int = (int) (progress * 100);\n    RCLCPP_INFO(this->get_logger(),\"当前进度为:%d%%\",progress_int);\n  }\n\n  void result_callback(const rclcpp_action::ClientGoalHandle\u003CProgress>::WrappedResult & result)\n  {\n    if (result.code == rclcpp_action::ResultCode::SUCCEEDED)\n    {\n      RCLCPP_INFO(this->get_logger(),\"最终结果为:%d\",result.result->sum);\n    }\n    else if(result.code == rclcpp_action::ResultCode::ABORTED)\n    {\n      RCLCPP_INFO(this->get_logger(),\"过程被中断!\");\n    }\n    else if(result.code == rclcpp_action::ResultCode::CANCELED)\n    {\n      RCLCPP_INFO(this->get_logger(),\"任务被取消!\");\n    }\n    else\n    {\n      RCLCPP_INFO(this->get_logger(),\"未知异常!\");\n    }\n  }\n\n  private:\n    rclcpp_action::Client\u003CProgress>::SharedPtr client_;\n};\n\nint main(int argc, char ** argv)\n{\n  if(argc != 2)\n  {\n    RCLCPP_ERROR(rclcpp::get_logger(\"rclcppp\"),\"请输入一个整形数字!\");\n    return 1;\n  }\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CProgressActionClient>();\n\n  node->send_goal(atoi(argv[1]));\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,11748,11749,11755,11761,11767,11771,11783,11797,11809,11821,11825,11841,11845,11849,11863,11867,11885,11889,11894,11899,11904,11909,11913,11942,11946,11950,11965,11969,11992,11996,12016,12022,12026,12030,12034,12039,12044,12049,12053,12070,12080,12084,12100,12127,12154,12180,12184,12200,12204,12208,12238,12242,12256,12260,12279,12283,12288,12292,12311,12315,12319,12323,12374,12378,12387,12399,12423,12448,12452,12456,12489,12493,12512,12516,12540,12544,12566,12570,12589,12593,12612,12616,12635,12639,12643,12647,12666,12670,12674,12678,12682,12696,12700,12704,12726,12730,12742,12746,12768,12776,12780,12790,12794,12815,12819,12837,12841,12852,12856,12866,12874],{"__ignoreMap":20},[32,11750,11751,11753],{"class":34,"line":35},[32,11752,39],{"class":38},[32,11754,43],{"class":42},[32,11756,11757,11759],{"class":34,"line":46},[32,11758,39],{"class":38},[32,11760,8983],{"class":42},[32,11762,11763,11765],{"class":34,"line":53},[32,11764,39],{"class":38},[32,11766,8990],{"class":42},[32,11768,11769],{"class":34,"line":79},[32,11770,50],{"emptyLinePlaceholder":49},[32,11772,11773,11775,11777,11779,11781],{"class":34,"line":85},[32,11774,1301],{"class":38},[32,11776,3873],{"class":59},[32,11778,73],{"class":63},[32,11780,9005],{"class":59},[32,11782,9008],{"class":63},[32,11784,11785,11787,11789,11791,11793,11795],{"class":34,"line":91},[32,11786,1301],{"class":38},[32,11788,1304],{"class":38},[32,11790,1307],{"class":59},[32,11792,73],{"class":63},[32,11794,1312],{"class":59},[32,11796,273],{"class":63},[32,11798,11799,11801,11803,11805,11807],{"class":34,"line":112},[32,11800,1301],{"class":38},[32,11802,1307],{"class":59},[32,11804,73],{"class":63},[32,11806,2262],{"class":59},[32,11808,9021],{"class":63},[32,11810,11811,11813,11815,11817,11819],{"class":34,"line":118},[32,11812,1301],{"class":38},[32,11814,1307],{"class":59},[32,11816,73],{"class":63},[32,11818,2262],{"class":59},[32,11820,9034],{"class":63},[32,11822,11823],{"class":34,"line":145},[32,11824,50],{"emptyLinePlaceholder":49},[32,11826,11827,11829,11831,11833,11835,11837,11839],{"class":34,"line":151},[32,11828,56],{"class":38},[32,11830,8658],{"class":59},[32,11832,64],{"class":63},[32,11834,67],{"class":38},[32,11836,70],{"class":59},[32,11838,73],{"class":63},[32,11840,76],{"class":59},[32,11842,11843],{"class":34,"line":157},[32,11844,82],{"class":63},[32,11846,11847],{"class":34,"line":162},[32,11848,88],{"class":38},[32,11850,11851,11853,11855,11857,11859,11861],{"class":34,"line":193},[32,11852,8681],{"class":59},[32,11854,97],{"class":63},[32,11856,100],{"class":59},[32,11858,103],{"class":63},[32,11860,8505],{"class":42},[32,11862,109],{"class":63},[32,11864,11865],{"class":34,"line":198},[32,11866,115],{"class":63},[32,11868,11869,11871,11873,11875,11877,11879,11881,11883],{"class":34,"line":212},[32,11870,121],{"class":59},[32,11872,103],{"class":63},[32,11874,127],{"class":126},[32,11876,130],{"class":63},[32,11878,133],{"class":59},[32,11880,136],{"class":63},[32,11882,8712],{"class":42},[32,11884,142],{"class":63},[32,11886,11887],{"class":34,"line":217},[32,11888,7793],{"class":5139},[32,11890,11891],{"class":34,"line":246},[32,11892,11893],{"class":5139},"      rclcpp_action::Client\u003CActionT>::SharedPtr create_client\u003CActionT,\n",[32,11895,11896],{"class":34,"line":251},[32,11897,11898],{"class":5139},"      NodeT>(NodeT node, const std::string &name,\n",[32,11900,11901],{"class":34,"line":264},[32,11902,11903],{"class":5139},"      rclcpp::CallbackGroup::SharedPtr group = nullptr,\n",[32,11905,11906],{"class":34,"line":276},[32,11907,11908],{"class":5139},"      const rcl_action_client_options_t &options = rcl_action_client_get_default_options())\n",[32,11910,11911],{"class":34,"line":495},[32,11912,7808],{"class":5139},[32,11914,11915,11917,11919,11921,11923,11926,11928,11930,11933,11935,11937,11940],{"class":34,"line":502},[32,11916,6905],{"class":63},[32,11918,1396],{"class":38},[32,11920,9155],{"class":59},[32,11922,73],{"class":63},[32,11924,11925],{"class":59},"create_client",[32,11927,237],{"class":63},[32,11929,9165],{"class":59},[32,11931,11932],{"class":63},">(",[32,11934,127],{"class":126},[32,11936,1426],{"class":63},[32,11938,11939],{"class":42},"\"get_sum_topic\"",[32,11941,142],{"class":63},[32,11943,11944],{"class":34,"line":510},[32,11945,148],{"class":63},[32,11947,11948],{"class":34,"line":518},[32,11949,50],{"emptyLinePlaceholder":49},[32,11951,11952,11954,11956,11958,11960,11963],{"class":34,"line":524},[32,11953,1491],{"class":38},[32,11955,9617],{"class":59},[32,11957,103],{"class":63},[32,11959,7772],{"class":38},[32,11961,11962],{"class":175}," num",[32,11964,109],{"class":63},[32,11966,11967],{"class":34,"line":530},[32,11968,115],{"class":63},[32,11970,11971,11973,11975,11978,11980,11982,11984,11986,11988,11990],{"class":34,"line":541},[32,11972,10294],{"class":38},[32,11974,6954],{"class":63},[32,11976,11977],{"class":59},"wait_for_action_server",[32,11979,103],{"class":63},[32,11981,1450],{"class":126},[32,11983,1453],{"class":38},[32,11985,6966],{"class":63},[32,11987,6230],{"class":38},[32,11989,6971],{"class":126},[32,11991,109],{"class":63},[32,11993,11994],{"class":34,"line":547},[32,11995,6978],{"class":63},[32,11997,11998,12001,12003,12005,12007,12009,12011,12014],{"class":34,"line":1676},[32,11999,12000],{"class":59},"        RCLCPP_ERROR",[32,12002,103],{"class":63},[32,12004,127],{"class":126},[32,12006,130],{"class":63},[32,12008,133],{"class":59},[32,12010,136],{"class":63},[32,12012,12013],{"class":42},"\"服务连接失败!\"",[32,12015,142],{"class":63},[32,12017,12018,12020],{"class":34,"line":1681},[32,12019,2893],{"class":38},[32,12021,273],{"class":63},[32,12023,12024],{"class":34,"line":1692},[32,12025,7077],{"class":63},[32,12027,12028],{"class":34,"line":1697},[32,12029,50],{"emptyLinePlaceholder":49},[32,12031,12032],{"class":34,"line":1720},[32,12033,7793],{"class":5139},[32,12035,12036],{"class":34,"line":1725},[32,12037,12038],{"class":5139},"      std::shared_future\u003Crclcpp_action::ClientGoalHandle\u003Cbase_interfaces_demo::action::Progress>::SharedPtr>\n",[32,12040,12041],{"class":34,"line":1736},[32,12042,12043],{"class":5139},"      async_send_goal(const base_interfaces_demo::action::Progress::Goal &goal,\n",[32,12045,12046],{"class":34,"line":1745},[32,12047,12048],{"class":5139},"      const rclcpp_action::Client\u003Cbase_interfaces_demo::action::Progress>::SendGoalOptions &options)\n",[32,12050,12051],{"class":34,"line":4099},[32,12052,7808],{"class":5139},[32,12054,12055,12057,12060,12062,12064,12066,12068],{"class":34,"line":4110},[32,12056,1506],{"class":38},[32,12058,12059],{"class":63}," goal ",[32,12061,1396],{"class":38},[32,12063,9304],{"class":59},[32,12065,73],{"class":63},[32,12067,9309],{"class":59},[32,12069,261],{"class":63},[32,12071,12072,12075,12077],{"class":34,"line":4119},[32,12073,12074],{"class":63},"      goal.num ",[32,12076,1396],{"class":38},[32,12078,12079],{"class":63}," num;\n",[32,12081,12082],{"class":34,"line":7189},[32,12083,50],{"emptyLinePlaceholder":49},[32,12085,12086,12089,12091,12093,12095,12097],{"class":34,"line":7198},[32,12087,12088],{"class":59},"      rclcpp_action",[32,12090,73],{"class":63},[32,12092,7107],{"class":59},[32,12094,237],{"class":63},[32,12096,9165],{"class":59},[32,12098,12099],{"class":63},">::SendGoalOptions options;\n",[32,12101,12102,12105,12107,12109,12111,12113,12115,12117,12119,12122,12124],{"class":34,"line":7203},[32,12103,12104],{"class":63},"      options.goal_response_callback ",[32,12106,1396],{"class":38},[32,12108,1307],{"class":59},[32,12110,73],{"class":63},[32,12112,1462],{"class":59},[32,12114,103],{"class":63},[32,12116,1467],{"class":38},[32,12118,8787],{"class":59},[32,12120,12121],{"class":63},"::goal_response_callback,",[32,12123,127],{"class":126},[32,12125,12126],{"class":63},",_1);\n",[32,12128,12129,12132,12134,12136,12138,12140,12142,12144,12146,12149,12151],{"class":34,"line":7214},[32,12130,12131],{"class":63},"      options.feedback_callback ",[32,12133,1396],{"class":38},[32,12135,1307],{"class":59},[32,12137,73],{"class":63},[32,12139,1462],{"class":59},[32,12141,103],{"class":63},[32,12143,1467],{"class":38},[32,12145,8787],{"class":59},[32,12147,12148],{"class":63},"::feedback_callback,",[32,12150,127],{"class":126},[32,12152,12153],{"class":63},",_1,_2);\n",[32,12155,12156,12159,12161,12163,12165,12167,12169,12171,12173,12176,12178],{"class":34,"line":7219},[32,12157,12158],{"class":63},"      options.result_callback ",[32,12160,1396],{"class":38},[32,12162,1307],{"class":59},[32,12164,73],{"class":63},[32,12166,1462],{"class":59},[32,12168,103],{"class":63},[32,12170,1467],{"class":38},[32,12172,8787],{"class":59},[32,12174,12175],{"class":63},"::result_callback,",[32,12177,127],{"class":126},[32,12179,12126],{"class":63},[32,12181,12182],{"class":34,"line":7240},[32,12183,50],{"emptyLinePlaceholder":49},[32,12185,12186,12188,12190,12192,12194,12197],{"class":34,"line":7245},[32,12187,1506],{"class":38},[32,12189,8096],{"class":63},[32,12191,1396],{"class":38},[32,12193,7858],{"class":63},[32,12195,12196],{"class":59},"async_send_goal",[32,12198,12199],{"class":63},"(goal,options);\n",[32,12201,12202],{"class":34,"line":7264},[32,12203,148],{"class":63},[32,12205,12206],{"class":34,"line":7269},[32,12207,50],{"emptyLinePlaceholder":49},[32,12209,12210,12213,12216,12218,12220,12222,12225,12227,12229,12231,12233,12236],{"class":34,"line":7283},[32,12211,12212],{"class":38},"  void",[32,12214,12215],{"class":59}," goal_response_callback",[32,12217,103],{"class":63},[32,12219,9371],{"class":59},[32,12221,73],{"class":63},[32,12223,12224],{"class":59},"ClientGoalHandle",[32,12226,237],{"class":63},[32,12228,9165],{"class":59},[32,12230,7761],{"class":63},[32,12232,5509],{"class":59},[32,12234,12235],{"class":175}," goal_handle",[32,12237,109],{"class":63},[32,12239,12240],{"class":34,"line":7288},[32,12241,6240],{"class":63},[32,12243,12244,12246,12249,12251,12254],{"class":34,"line":7312},[32,12245,2808],{"class":38},[32,12247,12248],{"class":63},"(goal_handle ",[32,12250,8150],{"class":38},[32,12252,12253],{"class":126}," nullptr",[32,12255,109],{"class":63},[32,12257,12258],{"class":34,"line":7321},[32,12259,115],{"class":63},[32,12261,12262,12264,12266,12268,12270,12272,12274,12277],{"class":34,"line":7326},[32,12263,121],{"class":59},[32,12265,103],{"class":63},[32,12267,127],{"class":126},[32,12269,130],{"class":63},[32,12271,133],{"class":59},[32,12273,136],{"class":63},[32,12275,12276],{"class":42},"\"目标请求被服务端拒绝!\"",[32,12278,142],{"class":63},[32,12280,12281],{"class":34,"line":7331},[32,12282,148],{"class":63},[32,12284,12285],{"class":34,"line":7342},[32,12286,12287],{"class":38},"    else\n",[32,12289,12290],{"class":34,"line":7351},[32,12291,115],{"class":63},[32,12293,12294,12296,12298,12300,12302,12304,12306,12309],{"class":34,"line":8011},[32,12295,121],{"class":59},[32,12297,103],{"class":63},[32,12299,127],{"class":126},[32,12301,130],{"class":63},[32,12303,133],{"class":59},[32,12305,136],{"class":63},[32,12307,12308],{"class":42},"\"目标处理中!\"",[32,12310,142],{"class":63},[32,12312,12313],{"class":34,"line":8016},[32,12314,148],{"class":63},[32,12316,12317],{"class":34,"line":8031},[32,12318,544],{"class":63},[32,12320,12321],{"class":34,"line":8036},[32,12322,50],{"emptyLinePlaceholder":49},[32,12324,12325,12327,12330,12332,12334,12336,12338,12340,12342,12344,12346,12348,12350,12352,12354,12356,12358,12360,12362,12364,12367,12369,12372],{"class":34,"line":8049},[32,12326,12212],{"class":38},[32,12328,12329],{"class":59}," feedback_callback",[32,12331,103],{"class":63},[32,12333,9371],{"class":59},[32,12335,73],{"class":63},[32,12337,12224],{"class":59},[32,12339,237],{"class":63},[32,12341,9165],{"class":59},[32,12343,7761],{"class":63},[32,12345,5509],{"class":59},[32,12347,12235],{"class":175},[32,12349,1426],{"class":63},[32,12351,229],{"class":59},[32,12353,73],{"class":63},[32,12355,9297],{"class":59},[32,12357,237],{"class":63},[32,12359,2290],{"class":38},[32,12361,9304],{"class":59},[32,12363,73],{"class":63},[32,12365,12366],{"class":59},"Feedback",[32,12368,10269],{"class":63},[32,12370,12371],{"class":175},"feedback",[32,12373,109],{"class":63},[32,12375,12376],{"class":34,"line":8054},[32,12377,6240],{"class":63},[32,12379,12380,12383,12385],{"class":34,"line":8077},[32,12381,12382],{"class":63},"    (",[32,12384,10286],{"class":38},[32,12386,10436],{"class":63},[32,12388,12389,12392,12394,12396],{"class":34,"line":8086},[32,12390,12391],{"class":38},"    double",[32,12393,10672],{"class":63},[32,12395,1396],{"class":38},[32,12397,12398],{"class":63}," feedback->progress;\n",[32,12400,12401,12404,12407,12409,12411,12413,12416,12418,12421],{"class":34,"line":8091},[32,12402,12403],{"class":38},"    int",[32,12405,12406],{"class":63}," progress_int ",[32,12408,1396],{"class":38},[32,12410,5551],{"class":63},[32,12412,165],{"class":38},[32,12414,12415],{"class":63},") (progress ",[32,12417,5554],{"class":38},[32,12419,12420],{"class":126}," 100",[32,12422,142],{"class":63},[32,12424,12425,12427,12429,12431,12433,12435,12437,12440,12443,12445],{"class":34,"line":8128},[32,12426,6245],{"class":59},[32,12428,103],{"class":63},[32,12430,127],{"class":126},[32,12432,130],{"class":63},[32,12434,133],{"class":59},[32,12436,136],{"class":63},[32,12438,12439],{"class":42},"\"当前进度为:",[32,12441,12442],{"class":126},"%d%%",[32,12444,368],{"class":42},[32,12446,12447],{"class":63},",progress_int);\n",[32,12449,12450],{"class":34,"line":8133},[32,12451,544],{"class":63},[32,12453,12454],{"class":34,"line":8163},[32,12455,50],{"emptyLinePlaceholder":49},[32,12457,12458,12460,12463,12465,12467,12469,12471,12473,12475,12477,12479,12482,12484,12487],{"class":34,"line":8168},[32,12459,12212],{"class":38},[32,12461,12462],{"class":59}," result_callback",[32,12464,103],{"class":63},[32,12466,2290],{"class":38},[32,12468,9155],{"class":59},[32,12470,73],{"class":63},[32,12472,12224],{"class":59},[32,12474,237],{"class":63},[32,12476,9165],{"class":59},[32,12478,7761],{"class":63},[32,12480,12481],{"class":59},"WrappedResult",[32,12483,2303],{"class":38},[32,12485,12486],{"class":175}," result",[32,12488,109],{"class":63},[32,12490,12491],{"class":34,"line":8196},[32,12492,6240],{"class":63},[32,12494,12495,12497,12500,12502,12504,12506,12509],{"class":34,"line":8201},[32,12496,2808],{"class":38},[32,12498,12499],{"class":63}," (result.code ",[32,12501,8150],{"class":38},[32,12503,9155],{"class":59},[32,12505,73],{"class":63},[32,12507,12508],{"class":59},"ResultCode",[32,12510,12511],{"class":63},"::SUCCEEDED)\n",[32,12513,12514],{"class":34,"line":8207},[32,12515,115],{"class":63},[32,12517,12518,12520,12522,12524,12526,12528,12530,12533,12535,12537],{"class":34,"line":8212},[32,12519,121],{"class":59},[32,12521,103],{"class":63},[32,12523,127],{"class":126},[32,12525,130],{"class":63},[32,12527,133],{"class":59},[32,12529,136],{"class":63},[32,12531,12532],{"class":42},"\"最终结果为:",[32,12534,3964],{"class":126},[32,12536,368],{"class":42},[32,12538,12539],{"class":63},",result.result->sum);\n",[32,12541,12542],{"class":34,"line":8228},[32,12543,148],{"class":63},[32,12545,12546,12549,12552,12555,12557,12559,12561,12563],{"class":34,"line":8233},[32,12547,12548],{"class":38},"    else",[32,12550,12551],{"class":38}," if",[32,12553,12554],{"class":63},"(result.code ",[32,12556,8150],{"class":38},[32,12558,9155],{"class":59},[32,12560,73],{"class":63},[32,12562,12508],{"class":59},[32,12564,12565],{"class":63},"::ABORTED)\n",[32,12567,12568],{"class":34,"line":8238},[32,12569,115],{"class":63},[32,12571,12572,12574,12576,12578,12580,12582,12584,12587],{"class":34,"line":8249},[32,12573,121],{"class":59},[32,12575,103],{"class":63},[32,12577,127],{"class":126},[32,12579,130],{"class":63},[32,12581,133],{"class":59},[32,12583,136],{"class":63},[32,12585,12586],{"class":42},"\"过程被中断!\"",[32,12588,142],{"class":63},[32,12590,12591],{"class":34,"line":8258},[32,12592,148],{"class":63},[32,12594,12595,12597,12599,12601,12603,12605,12607,12609],{"class":34,"line":10804},[32,12596,12548],{"class":38},[32,12598,12551],{"class":38},[32,12600,12554],{"class":63},[32,12602,8150],{"class":38},[32,12604,9155],{"class":59},[32,12606,73],{"class":63},[32,12608,12508],{"class":59},[32,12610,12611],{"class":63},"::CANCELED)\n",[32,12613,12614],{"class":34,"line":10811},[32,12615,115],{"class":63},[32,12617,12618,12620,12622,12624,12626,12628,12630,12633],{"class":34,"line":10816},[32,12619,121],{"class":59},[32,12621,103],{"class":63},[32,12623,127],{"class":126},[32,12625,130],{"class":63},[32,12627,133],{"class":59},[32,12629,136],{"class":63},[32,12631,12632],{"class":42},"\"任务被取消!\"",[32,12634,142],{"class":63},[32,12636,12637],{"class":34,"line":10821},[32,12638,148],{"class":63},[32,12640,12641],{"class":34,"line":10832},[32,12642,12287],{"class":38},[32,12644,12645],{"class":34,"line":10837},[32,12646,115],{"class":63},[32,12648,12649,12651,12653,12655,12657,12659,12661,12664],{"class":34,"line":10842},[32,12650,121],{"class":59},[32,12652,103],{"class":63},[32,12654,127],{"class":126},[32,12656,130],{"class":63},[32,12658,133],{"class":59},[32,12660,136],{"class":63},[32,12662,12663],{"class":42},"\"未知异常!\"",[32,12665,142],{"class":63},[32,12667,12668],{"class":34,"line":10848},[32,12669,148],{"class":63},[32,12671,12672],{"class":34,"line":10854},[32,12673,544],{"class":63},[32,12675,12676],{"class":34,"line":10859},[32,12677,50],{"emptyLinePlaceholder":49},[32,12679,12680],{"class":34,"line":10880},[32,12681,1486],{"class":38},[32,12683,12684,12686,12688,12690,12692,12694],{"class":34,"line":10885},[32,12685,9267],{"class":59},[32,12687,73],{"class":63},[32,12689,7107],{"class":59},[32,12691,237],{"class":63},[32,12693,9165],{"class":59},[32,12695,7114],{"class":63},[32,12697,12698],{"class":34,"line":10895},[32,12699,154],{"class":63},[32,12701,12702],{"class":34,"line":10905},[32,12703,50],{"emptyLinePlaceholder":49},[32,12705,12706,12708,12710,12712,12714,12716,12718,12720,12722,12724],{"class":34,"line":10930},[32,12707,165],{"class":38},[32,12709,168],{"class":59},[32,12711,103],{"class":63},[32,12713,165],{"class":38},[32,12715,176],{"class":175},[32,12717,179],{"class":63},[32,12719,182],{"class":38},[32,12721,185],{"class":38},[32,12723,188],{"class":175},[32,12725,109],{"class":63},[32,12727,12728],{"class":34,"line":10935},[32,12729,82],{"class":63},[32,12731,12732,12734,12736,12738,12740],{"class":34,"line":10940},[32,12733,6224],{"class":38},[32,12735,6227],{"class":63},[32,12737,6230],{"class":38},[32,12739,11301],{"class":126},[32,12741,109],{"class":63},[32,12743,12744],{"class":34,"line":10945},[32,12745,6240],{"class":63},[32,12747,12748,12750,12752,12754,12756,12758,12760,12762,12764,12766],{"class":34,"line":10950},[32,12749,6507],{"class":59},[32,12751,103],{"class":63},[32,12753,4395],{"class":59},[32,12755,73],{"class":63},[32,12757,133],{"class":59},[32,12759,103],{"class":63},[32,12761,11324],{"class":42},[32,12763,3732],{"class":63},[32,12765,11329],{"class":42},[32,12767,142],{"class":63},[32,12769,12770,12772,12774],{"class":34,"line":10983},[32,12771,2016],{"class":38},[32,12773,2896],{"class":126},[32,12775,273],{"class":63},[32,12777,12778],{"class":34,"line":10988},[32,12779,544],{"class":63},[32,12781,12782,12784,12786,12788],{"class":34,"line":11026},[32,12783,201],{"class":59},[32,12785,73],{"class":63},[32,12787,206],{"class":59},[32,12789,209],{"class":63},[32,12791,12792],{"class":34,"line":11031},[32,12793,50],{"emptyLinePlaceholder":49},[32,12795,12796,12798,12801,12803,12805,12807,12809,12811,12813],{"class":34,"line":11036},[32,12797,5145],{"class":38},[32,12799,12800],{"class":63}," node ",[32,12802,1396],{"class":38},[32,12804,1307],{"class":59},[32,12806,73],{"class":63},[32,12808,234],{"class":59},[32,12810,237],{"class":63},[32,12812,8787],{"class":59},[32,12814,5164],{"class":63},[32,12816,12817],{"class":34,"line":11041},[32,12818,50],{"emptyLinePlaceholder":49},[32,12820,12821,12824,12827,12829,12831,12833,12835],{"class":34,"line":11056},[32,12822,12823],{"class":63},"  node->",[32,12825,12826],{"class":59},"send_goal",[32,12828,103],{"class":63},[32,12830,8108],{"class":59},[32,12832,8111],{"class":63},[32,12834,1450],{"class":126},[32,12836,8125],{"class":63},[32,12838,12839],{"class":34,"line":11061},[32,12840,50],{"emptyLinePlaceholder":49},[32,12842,12843,12845,12847,12849],{"class":34,"line":11066},[32,12844,201],{"class":59},[32,12846,73],{"class":63},[32,12848,224],{"class":59},[32,12850,12851],{"class":63},"(node);\n",[32,12853,12854],{"class":34,"line":11089},[32,12855,50],{"emptyLinePlaceholder":49},[32,12857,12858,12860,12862,12864],{"class":34,"line":11094},[32,12859,201],{"class":59},[32,12861,73],{"class":63},[32,12863,258],{"class":59},[32,12865,261],{"class":63},[32,12867,12868,12870,12872],{"class":34,"line":11105},[32,12869,267],{"class":38},[32,12871,270],{"class":126},[32,12873,273],{"class":63},[32,12875,12876],{"class":34,"line":11110},[32,12877,279],{"class":63},[15,12879,12880],{},[18,12881],{"alt":20,"src":12882},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage753.webp",[15,12884,12885],{},[18,12886],{"alt":20,"src":12887},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage754.webp",[15,12889,12890,12891,12894],{},"At this point, we cancel the client, but the server is still running. The ",[29,12892,12893],{},"ctrl+c"," here only terminates our client, rather than instructing it to send a cancel request command. We need to capture our keyboard input in order to send the cancel request command.",[561,12896],{},[15,12898,12899],{},"Fix bug:",[15,12901,12902],{},"Not fixed yet.",[23,12904,12906],{"className":25,"code":12905,"language":27,"meta":20,"style":20},"\u002F\u002F 发送取消请求auto future_cancel = client_->async_cancel_goal(goal_handle);\nrclcpp::spin_until_future_complete(this->get_node_base_interface(), future_cancel);\nif (future_cancel.wait_for(1s) == std::future_status::ready)\n{\n  RCLCPP_INFO(this->get_logger(), \"终止请求已发送!\");\n}\nelse\n{\n  RCLCPP_ERROR(this->get_logger(), \"无法发送终止请求...\");\n}\n",[29,12907,12908,12913,12933,12964,12968,12989,12993,12998,13002,13022],{"__ignoreMap":20},[32,12909,12910],{"class":34,"line":35},[32,12911,12912],{"class":5139},"\u002F\u002F 发送取消请求auto future_cancel = client_->async_cancel_goal(goal_handle);\n",[32,12914,12915,12917,12919,12921,12923,12925,12927,12930],{"class":34,"line":46},[32,12916,4395],{"class":59},[32,12918,73],{"class":63},[32,12920,8144],{"class":59},[32,12922,103],{"class":63},[32,12924,127],{"class":126},[32,12926,130],{"class":63},[32,12928,12929],{"class":59},"get_node_base_interface",[32,12931,12932],{"class":63},"(), future_cancel);\n",[32,12934,12935,12938,12941,12944,12946,12948,12950,12952,12954,12956,12958,12961],{"class":34,"line":53},[32,12936,12937],{"class":38},"if",[32,12939,12940],{"class":63}," (future_cancel.",[32,12942,12943],{"class":59},"wait_for",[32,12945,103],{"class":63},[32,12947,1450],{"class":126},[32,12949,1453],{"class":38},[32,12951,6966],{"class":63},[32,12953,8150],{"class":38},[32,12955,1307],{"class":59},[32,12957,73],{"class":63},[32,12959,12960],{"class":59},"future_status",[32,12962,12963],{"class":63},"::ready)\n",[32,12965,12966],{"class":34,"line":79},[32,12967,82],{"class":63},[32,12969,12970,12973,12975,12977,12979,12981,12984,12987],{"class":34,"line":85},[32,12971,12972],{"class":59},"  RCLCPP_INFO",[32,12974,103],{"class":63},[32,12976,127],{"class":126},[32,12978,130],{"class":63},[32,12980,133],{"class":59},[32,12982,12983],{"class":63},"(), ",[32,12985,12986],{"class":42},"\"终止请求已发送!\"",[32,12988,142],{"class":63},[32,12990,12991],{"class":34,"line":91},[32,12992,279],{"class":63},[32,12994,12995],{"class":34,"line":112},[32,12996,12997],{"class":38},"else\n",[32,12999,13000],{"class":34,"line":118},[32,13001,82],{"class":63},[32,13003,13004,13007,13009,13011,13013,13015,13017,13020],{"class":34,"line":145},[32,13005,13006],{"class":59},"  RCLCPP_ERROR",[32,13008,103],{"class":63},[32,13010,127],{"class":126},[32,13012,130],{"class":63},[32,13014,133],{"class":59},[32,13016,12983],{"class":63},[32,13018,13019],{"class":42},"\"无法发送终止请求...\"",[32,13021,142],{"class":63},[32,13023,13024],{"class":34,"line":151},[32,13025,279],{"class":63},[10,13027,13029],{"id":13028},"parameter-service-theory-and-api-introduction-c","Parameter Service: Theory and API Introduction (C++)",[15,13031,13032],{},[18,13033],{"alt":20,"src":13034},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage755.webp",[15,13036,13037],{},[18,13038],{"alt":20,"src":13039},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage756.webp",[15,13041,13042],{},"Of course, there are special cases, such as setting parameters to private.",[561,13044],{},[15,13046,13047],{},[18,13048],{"alt":20,"src":13049},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage757.webp",[15,13051,13052],{},[18,13053],{"alt":20,"src":13054},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage758.webp",[15,13056,13057],{},"Other communication methods require you to create your own interface files, but parameter services do not. ROS2 has already encapsulated the API, so we only need to call the API.",[15,13059,13060],{},[18,13061],{"alt":20,"src":13062},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage759.webp",[15,13064,13065],{},[18,13066],{"alt":20,"src":13067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage760.webp",[15,13069,13070],{},[18,13071],{"alt":20,"src":13072},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage761.webp",[15,13074,13075],{},"Just to demonstrate the API, first create a parameter package to show the API, without creating the client and server for now.",[15,13077,13078],{},[18,13079],{"alt":20,"src":13080},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage762.webp",[15,13082,13083],{},[18,13084],{"alt":20,"src":13085},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage763.webp",[15,13087,13088],{},[18,13089],{"alt":20,"src":13090},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage764.webp",[15,13092,13093],{},"rclcpp::parameter object (key, value);",[15,13095,13096],{},[18,13097],{"alt":20,"src":13098},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage765.webp",[15,13100,13101],{},[18,13102],{"alt":20,"src":13103},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage766.webp",[15,13105,13106],{},[18,13107],{"alt":20,"src":13108},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage767.webp",[15,13110,13111],{},[18,13112],{"alt":20,"src":13113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage768.webp",[15,13115,13116],{},[18,13117],{"alt":20,"src":13118},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage769.webp",[15,13120,13121],{},[18,13122],{"alt":20,"src":13123},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage770.webp",[15,13125,13126],{},[18,13127],{"alt":20,"src":13128},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage771.webp",[15,13130,13131],{},"This function assigns a value to the parameter, with 18 overloads for various types.",[15,13133,13134],{},"The term \"empty\" means not assigning a value, so there are only keys, no values.",[10,13136,13138],{"id":13137},"parameter_server_experiment1_server_sidec","Parameter_Server_Experiment1_Server_Side(C++)",[15,13140,13141],{},[18,13142],{"alt":20,"src":13143},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage772.webp",[15,13145,13146],{},[18,13147],{"alt":20,"src":13148},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage773.webp",[15,13150,13151,13152,13154,13155,13158],{},"Here's the difference: a second parameter is passed in ",[29,13153,100],{},", which is specifically used to allow parameter deletion. ",[29,13156,13157],{},"undeclared"," removes the declaration.",[15,13160,13161],{},[18,13162],{"alt":20,"src":13163},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage774.webp",[15,13165,13166],{},[18,13167],{"alt":20,"src":13168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage775.webp",[15,13170,13171],{},[18,13172],{"alt":20,"src":13173},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage776.webp",[15,13175,13176],{},[18,13177],{"alt":20,"src":13178},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage777.webp",[15,13180,13181],{},[18,13182],{"alt":20,"src":13183},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage778.webp",[15,13185,13186],{},"Only query and modification interface APIs are provided, without APIs for creation or deletion. This is a security consideration in ROS2.",[15,13188,13189],{},[18,13190],{"alt":20,"src":13191},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage779.webp",[15,13193,13194],{},[18,13195],{"alt":20,"src":13196},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage780.webp",[15,13198,13199],{},[18,13200],{"alt":20,"src":13201},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage781.webp",[15,13203,13204],{},[18,13205],{"alt":20,"src":13206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage782.webp",[23,13208,13210],{"className":25,"code":13209,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ParamServer: public rclcpp::Node\n{\n  public:\n    ParamServer():Node(\"param_server_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"参数服务端搭建!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CParamServer>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ParamClient: public rclcpp::Node\n{\n  public:\n    ParamClient():Node(\"param_client_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"参数客户端搭建!\");\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CParamClient>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,13211,13212,13218,13222,13239,13243,13247,13263,13267,13286,13290,13294,13298,13320,13324,13334,13338,13359,13363,13373,13377,13387,13395,13399,13405,13409,13426,13430,13434,13450,13454,13473,13477,13481,13485,13507,13511,13521,13525,13546,13550,13560,13564,13574,13582],{"__ignoreMap":20},[32,13213,13214,13216],{"class":34,"line":35},[32,13215,39],{"class":38},[32,13217,43],{"class":42},[32,13219,13220],{"class":34,"line":46},[32,13221,50],{"emptyLinePlaceholder":49},[32,13223,13224,13226,13229,13231,13233,13235,13237],{"class":34,"line":53},[32,13225,56],{"class":38},[32,13227,13228],{"class":59}," ParamServer",[32,13230,64],{"class":63},[32,13232,67],{"class":38},[32,13234,70],{"class":59},[32,13236,73],{"class":63},[32,13238,76],{"class":59},[32,13240,13241],{"class":34,"line":79},[32,13242,82],{"class":63},[32,13244,13245],{"class":34,"line":85},[32,13246,88],{"class":38},[32,13248,13249,13252,13254,13256,13258,13261],{"class":34,"line":91},[32,13250,13251],{"class":59},"    ParamServer",[32,13253,97],{"class":63},[32,13255,100],{"class":59},[32,13257,103],{"class":63},[32,13259,13260],{"class":42},"\"param_server_node_cpp\"",[32,13262,109],{"class":63},[32,13264,13265],{"class":34,"line":112},[32,13266,115],{"class":63},[32,13268,13269,13271,13273,13275,13277,13279,13281,13284],{"class":34,"line":118},[32,13270,121],{"class":59},[32,13272,103],{"class":63},[32,13274,127],{"class":126},[32,13276,130],{"class":63},[32,13278,133],{"class":59},[32,13280,136],{"class":63},[32,13282,13283],{"class":42},"\"参数服务端搭建!\"",[32,13285,142],{"class":63},[32,13287,13288],{"class":34,"line":145},[32,13289,148],{"class":63},[32,13291,13292],{"class":34,"line":151},[32,13293,154],{"class":63},[32,13295,13296],{"class":34,"line":157},[32,13297,50],{"emptyLinePlaceholder":49},[32,13299,13300,13302,13304,13306,13308,13310,13312,13314,13316,13318],{"class":34,"line":162},[32,13301,165],{"class":38},[32,13303,168],{"class":59},[32,13305,103],{"class":63},[32,13307,165],{"class":38},[32,13309,176],{"class":175},[32,13311,179],{"class":63},[32,13313,182],{"class":38},[32,13315,185],{"class":38},[32,13317,188],{"class":175},[32,13319,109],{"class":63},[32,13321,13322],{"class":34,"line":193},[32,13323,82],{"class":63},[32,13325,13326,13328,13330,13332],{"class":34,"line":198},[32,13327,201],{"class":59},[32,13329,73],{"class":63},[32,13331,206],{"class":59},[32,13333,209],{"class":63},[32,13335,13336],{"class":34,"line":212},[32,13337,50],{"emptyLinePlaceholder":49},[32,13339,13340,13342,13344,13346,13348,13350,13352,13354,13357],{"class":34,"line":217},[32,13341,5145],{"class":38},[32,13343,12800],{"class":63},[32,13345,1396],{"class":38},[32,13347,1307],{"class":59},[32,13349,73],{"class":63},[32,13351,234],{"class":59},[32,13353,237],{"class":63},[32,13355,13356],{"class":59},"ParamServer",[32,13358,5164],{"class":63},[32,13360,13361],{"class":34,"line":246},[32,13362,50],{"emptyLinePlaceholder":49},[32,13364,13365,13367,13369,13371],{"class":34,"line":251},[32,13366,201],{"class":59},[32,13368,73],{"class":63},[32,13370,224],{"class":59},[32,13372,12851],{"class":63},[32,13374,13375],{"class":34,"line":264},[32,13376,50],{"emptyLinePlaceholder":49},[32,13378,13379,13381,13383,13385],{"class":34,"line":276},[32,13380,201],{"class":59},[32,13382,73],{"class":63},[32,13384,258],{"class":59},[32,13386,261],{"class":63},[32,13388,13389,13391,13393],{"class":34,"line":495},[32,13390,267],{"class":38},[32,13392,270],{"class":126},[32,13394,273],{"class":63},[32,13396,13397],{"class":34,"line":502},[32,13398,279],{"class":63},[32,13400,13401,13403],{"class":34,"line":510},[32,13402,39],{"class":38},[32,13404,43],{"class":42},[32,13406,13407],{"class":34,"line":518},[32,13408,50],{"emptyLinePlaceholder":49},[32,13410,13411,13413,13416,13418,13420,13422,13424],{"class":34,"line":524},[32,13412,56],{"class":38},[32,13414,13415],{"class":59}," ParamClient",[32,13417,64],{"class":63},[32,13419,67],{"class":38},[32,13421,70],{"class":59},[32,13423,73],{"class":63},[32,13425,76],{"class":59},[32,13427,13428],{"class":34,"line":530},[32,13429,82],{"class":63},[32,13431,13432],{"class":34,"line":541},[32,13433,88],{"class":38},[32,13435,13436,13439,13441,13443,13445,13448],{"class":34,"line":547},[32,13437,13438],{"class":59},"    ParamClient",[32,13440,97],{"class":63},[32,13442,100],{"class":59},[32,13444,103],{"class":63},[32,13446,13447],{"class":42},"\"param_client_node_cpp\"",[32,13449,109],{"class":63},[32,13451,13452],{"class":34,"line":1676},[32,13453,115],{"class":63},[32,13455,13456,13458,13460,13462,13464,13466,13468,13471],{"class":34,"line":1681},[32,13457,121],{"class":59},[32,13459,103],{"class":63},[32,13461,127],{"class":126},[32,13463,130],{"class":63},[32,13465,133],{"class":59},[32,13467,136],{"class":63},[32,13469,13470],{"class":42},"\"参数客户端搭建!\"",[32,13472,142],{"class":63},[32,13474,13475],{"class":34,"line":1692},[32,13476,148],{"class":63},[32,13478,13479],{"class":34,"line":1697},[32,13480,154],{"class":63},[32,13482,13483],{"class":34,"line":1720},[32,13484,50],{"emptyLinePlaceholder":49},[32,13486,13487,13489,13491,13493,13495,13497,13499,13501,13503,13505],{"class":34,"line":1725},[32,13488,165],{"class":38},[32,13490,168],{"class":59},[32,13492,103],{"class":63},[32,13494,165],{"class":38},[32,13496,176],{"class":175},[32,13498,179],{"class":63},[32,13500,182],{"class":38},[32,13502,185],{"class":38},[32,13504,188],{"class":175},[32,13506,109],{"class":63},[32,13508,13509],{"class":34,"line":1736},[32,13510,82],{"class":63},[32,13512,13513,13515,13517,13519],{"class":34,"line":1745},[32,13514,201],{"class":59},[32,13516,73],{"class":63},[32,13518,206],{"class":59},[32,13520,209],{"class":63},[32,13522,13523],{"class":34,"line":4099},[32,13524,50],{"emptyLinePlaceholder":49},[32,13526,13527,13529,13531,13533,13535,13537,13539,13541,13544],{"class":34,"line":4110},[32,13528,5145],{"class":38},[32,13530,12800],{"class":63},[32,13532,1396],{"class":38},[32,13534,1307],{"class":59},[32,13536,73],{"class":63},[32,13538,234],{"class":59},[32,13540,237],{"class":63},[32,13542,13543],{"class":59},"ParamClient",[32,13545,5164],{"class":63},[32,13547,13548],{"class":34,"line":4119},[32,13549,50],{"emptyLinePlaceholder":49},[32,13551,13552,13554,13556,13558],{"class":34,"line":7189},[32,13553,201],{"class":59},[32,13555,73],{"class":63},[32,13557,224],{"class":59},[32,13559,12851],{"class":63},[32,13561,13562],{"class":34,"line":7198},[32,13563,50],{"emptyLinePlaceholder":49},[32,13565,13566,13568,13570,13572],{"class":34,"line":7203},[32,13567,201],{"class":59},[32,13569,73],{"class":63},[32,13571,258],{"class":59},[32,13573,261],{"class":63},[32,13575,13576,13578,13580],{"class":34,"line":7214},[32,13577,267],{"class":38},[32,13579,270],{"class":126},[32,13581,273],{"class":63},[32,13583,13584],{"class":34,"line":7219},[32,13585,279],{"class":63},[15,13587,13588],{},[18,13589],{"alt":20,"src":13590},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage783.webp",[15,13592,13593],{},[18,13594],{"alt":20,"src":13595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage784.webp",[15,13597,13598],{},[18,13599],{"alt":20,"src":13600},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage785.webp",[15,13602,13603],{},[18,13604],{"alt":20,"src":13605},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage786.webp",[561,13607],{},[15,13609,13610],{},[18,13611],{"alt":20,"src":13612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage787.webp",[15,13614,13615],{},[18,13616],{"alt":20,"src":13617},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage788.webp",[15,13619,13620],{},[18,13621],{"alt":20,"src":13622},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage789.webp",[15,13624,13625],{},"Chain programming.",[15,13627,13628],{},"An ordinary node can act as a parameter server without needing to create a separate parameter server.",[15,13630,13631],{},[18,13632],{"alt":20,"src":13633},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage790.webp",[15,13635,13636],{},[18,13637],{"alt":20,"src":13638},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage791.webp",[23,13640,13642],{"className":25,"code":13641,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ParamServer: public rclcpp::Node\n{\n  public:\n    ParamServer():Node(\"param_server_node_cpp\",rclcpp::NodeOptions().allow_undeclared_parameters(true))\n    {\n      RCLCPP_INFO(this->get_logger(),\"参数服务端搭建!\");\n    }\n\n    void create_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------增操作--------------\");\n    }\n\n    void get_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------查操作--------------\");\n    }\n\n    void update_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------改操作--------------\");\n    }\n\n    void delete_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------删操作--------------\");\n    }\n\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CParamServer>();\n\n  node->create_param();\n  node->get_param();\n  node->update_param();\n  node->delete_param();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,13643,13644,13650,13654,13670,13674,13678,13712,13716,13734,13738,13742,13751,13755,13774,13778,13782,13791,13795,13814,13818,13822,13831,13835,13854,13858,13862,13871,13875,13894,13898,13902,13906,13910,13932,13936,13946,13950,13970,13974,13983,13992,14001,14010,14014,14024,14028,14038,14046],{"__ignoreMap":20},[32,13645,13646,13648],{"class":34,"line":35},[32,13647,39],{"class":38},[32,13649,43],{"class":42},[32,13651,13652],{"class":34,"line":46},[32,13653,50],{"emptyLinePlaceholder":49},[32,13655,13656,13658,13660,13662,13664,13666,13668],{"class":34,"line":53},[32,13657,56],{"class":38},[32,13659,13228],{"class":59},[32,13661,64],{"class":63},[32,13663,67],{"class":38},[32,13665,70],{"class":59},[32,13667,73],{"class":63},[32,13669,76],{"class":59},[32,13671,13672],{"class":34,"line":79},[32,13673,82],{"class":63},[32,13675,13676],{"class":34,"line":85},[32,13677,88],{"class":38},[32,13679,13680,13682,13684,13686,13688,13690,13692,13694,13696,13699,13702,13705,13707,13709],{"class":34,"line":91},[32,13681,13251],{"class":59},[32,13683,97],{"class":63},[32,13685,100],{"class":59},[32,13687,103],{"class":63},[32,13689,13260],{"class":42},[32,13691,1426],{"class":63},[32,13693,4395],{"class":59},[32,13695,73],{"class":63},[32,13697,13698],{"class":59},"NodeOptions",[32,13700,13701],{"class":63},"().",[32,13703,13704],{"class":59},"allow_undeclared_parameters",[32,13706,103],{"class":63},[32,13708,6714],{"class":126},[32,13710,13711],{"class":63},"))\n",[32,13713,13714],{"class":34,"line":112},[32,13715,115],{"class":63},[32,13717,13718,13720,13722,13724,13726,13728,13730,13732],{"class":34,"line":118},[32,13719,121],{"class":59},[32,13721,103],{"class":63},[32,13723,127],{"class":126},[32,13725,130],{"class":63},[32,13727,133],{"class":59},[32,13729,136],{"class":63},[32,13731,13283],{"class":42},[32,13733,142],{"class":63},[32,13735,13736],{"class":34,"line":145},[32,13737,148],{"class":63},[32,13739,13740],{"class":34,"line":151},[32,13741,50],{"emptyLinePlaceholder":49},[32,13743,13744,13746,13749],{"class":34,"line":157},[32,13745,1491],{"class":38},[32,13747,13748],{"class":59}," create_param",[32,13750,1497],{"class":63},[32,13752,13753],{"class":34,"line":162},[32,13754,115],{"class":63},[32,13756,13757,13759,13761,13763,13765,13767,13769,13772],{"class":34,"line":193},[32,13758,121],{"class":59},[32,13760,103],{"class":63},[32,13762,127],{"class":126},[32,13764,130],{"class":63},[32,13766,133],{"class":59},[32,13768,136],{"class":63},[32,13770,13771],{"class":42},"\"-------------增操作--------------\"",[32,13773,142],{"class":63},[32,13775,13776],{"class":34,"line":198},[32,13777,148],{"class":63},[32,13779,13780],{"class":34,"line":212},[32,13781,50],{"emptyLinePlaceholder":49},[32,13783,13784,13786,13789],{"class":34,"line":217},[32,13785,1491],{"class":38},[32,13787,13788],{"class":59}," get_param",[32,13790,1497],{"class":63},[32,13792,13793],{"class":34,"line":246},[32,13794,115],{"class":63},[32,13796,13797,13799,13801,13803,13805,13807,13809,13812],{"class":34,"line":251},[32,13798,121],{"class":59},[32,13800,103],{"class":63},[32,13802,127],{"class":126},[32,13804,130],{"class":63},[32,13806,133],{"class":59},[32,13808,136],{"class":63},[32,13810,13811],{"class":42},"\"-------------查操作--------------\"",[32,13813,142],{"class":63},[32,13815,13816],{"class":34,"line":264},[32,13817,148],{"class":63},[32,13819,13820],{"class":34,"line":276},[32,13821,50],{"emptyLinePlaceholder":49},[32,13823,13824,13826,13829],{"class":34,"line":495},[32,13825,1491],{"class":38},[32,13827,13828],{"class":59}," update_param",[32,13830,1497],{"class":63},[32,13832,13833],{"class":34,"line":502},[32,13834,115],{"class":63},[32,13836,13837,13839,13841,13843,13845,13847,13849,13852],{"class":34,"line":510},[32,13838,121],{"class":59},[32,13840,103],{"class":63},[32,13842,127],{"class":126},[32,13844,130],{"class":63},[32,13846,133],{"class":59},[32,13848,136],{"class":63},[32,13850,13851],{"class":42},"\"-------------改操作--------------\"",[32,13853,142],{"class":63},[32,13855,13856],{"class":34,"line":518},[32,13857,148],{"class":63},[32,13859,13860],{"class":34,"line":524},[32,13861,50],{"emptyLinePlaceholder":49},[32,13863,13864,13866,13869],{"class":34,"line":530},[32,13865,1491],{"class":38},[32,13867,13868],{"class":59}," delete_param",[32,13870,1497],{"class":63},[32,13872,13873],{"class":34,"line":541},[32,13874,115],{"class":63},[32,13876,13877,13879,13881,13883,13885,13887,13889,13892],{"class":34,"line":547},[32,13878,121],{"class":59},[32,13880,103],{"class":63},[32,13882,127],{"class":126},[32,13884,130],{"class":63},[32,13886,133],{"class":59},[32,13888,136],{"class":63},[32,13890,13891],{"class":42},"\"-------------删操作--------------\"",[32,13893,142],{"class":63},[32,13895,13896],{"class":34,"line":1676},[32,13897,148],{"class":63},[32,13899,13900],{"class":34,"line":1681},[32,13901,50],{"emptyLinePlaceholder":49},[32,13903,13904],{"class":34,"line":1692},[32,13905,154],{"class":63},[32,13907,13908],{"class":34,"line":1697},[32,13909,50],{"emptyLinePlaceholder":49},[32,13911,13912,13914,13916,13918,13920,13922,13924,13926,13928,13930],{"class":34,"line":1720},[32,13913,165],{"class":38},[32,13915,168],{"class":59},[32,13917,103],{"class":63},[32,13919,165],{"class":38},[32,13921,176],{"class":175},[32,13923,179],{"class":63},[32,13925,182],{"class":38},[32,13927,185],{"class":38},[32,13929,188],{"class":175},[32,13931,109],{"class":63},[32,13933,13934],{"class":34,"line":1725},[32,13935,82],{"class":63},[32,13937,13938,13940,13942,13944],{"class":34,"line":1736},[32,13939,201],{"class":59},[32,13941,73],{"class":63},[32,13943,206],{"class":59},[32,13945,209],{"class":63},[32,13947,13948],{"class":34,"line":1745},[32,13949,50],{"emptyLinePlaceholder":49},[32,13951,13952,13954,13956,13958,13960,13962,13964,13966,13968],{"class":34,"line":4099},[32,13953,5145],{"class":38},[32,13955,12800],{"class":63},[32,13957,1396],{"class":38},[32,13959,1307],{"class":59},[32,13961,73],{"class":63},[32,13963,234],{"class":59},[32,13965,237],{"class":63},[32,13967,13356],{"class":59},[32,13969,5164],{"class":63},[32,13971,13972],{"class":34,"line":4110},[32,13973,50],{"emptyLinePlaceholder":49},[32,13975,13976,13978,13981],{"class":34,"line":4119},[32,13977,12823],{"class":63},[32,13979,13980],{"class":59},"create_param",[32,13982,261],{"class":63},[32,13984,13985,13987,13990],{"class":34,"line":7189},[32,13986,12823],{"class":63},[32,13988,13989],{"class":59},"get_param",[32,13991,261],{"class":63},[32,13993,13994,13996,13999],{"class":34,"line":7198},[32,13995,12823],{"class":63},[32,13997,13998],{"class":59},"update_param",[32,14000,261],{"class":63},[32,14002,14003,14005,14008],{"class":34,"line":7203},[32,14004,12823],{"class":63},[32,14006,14007],{"class":59},"delete_param",[32,14009,261],{"class":63},[32,14011,14012],{"class":34,"line":7214},[32,14013,50],{"emptyLinePlaceholder":49},[32,14015,14016,14018,14020,14022],{"class":34,"line":7219},[32,14017,201],{"class":59},[32,14019,73],{"class":63},[32,14021,224],{"class":59},[32,14023,12851],{"class":63},[32,14025,14026],{"class":34,"line":7240},[32,14027,50],{"emptyLinePlaceholder":49},[32,14029,14030,14032,14034,14036],{"class":34,"line":7245},[32,14031,201],{"class":59},[32,14033,73],{"class":63},[32,14035,258],{"class":59},[32,14037,261],{"class":63},[32,14039,14040,14042,14044],{"class":34,"line":7264},[32,14041,267],{"class":38},[32,14043,270],{"class":126},[32,14045,273],{"class":63},[32,14047,14048],{"class":34,"line":7269},[32,14049,279],{"class":63},[561,14051],{},[15,14053,14054],{},[18,14055],{"alt":20,"src":14056},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage792.webp",[15,14058,14059],{},[18,14060],{"alt":20,"src":14061},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage793.webp",[15,14063,14064],{},[18,14065],{"alt":20,"src":14066},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage794.webp",[15,14068,14069],{},"ros2 param list",[15,14071,14072],{},"Query all parameters in all nodes.",[15,14074,14075],{},[18,14076],{"alt":20,"src":14077},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage795.webp",[15,14079,14080,14081,14084],{},"Use ",[29,14082,14083],{},"ros2 param get \u002Fnode_name parameter_key"," to view the value of a parameter.",[561,14086],{},[15,14088,14089],{},[18,14090],{"alt":20,"src":14091},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage796.webp",[15,14093,14094],{},"You can query the value of a parameter by its key.",[15,14096,14097],{},[18,14098],{"alt":20,"src":14099},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage797.webp",[15,14101,14102],{},"Functions with plural forms can obtain some parameter objects through containers composed of keys.",[15,14104,14105],{},[18,14106],{"alt":20,"src":14107},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage798.webp",[15,14109,14110],{},"to determine whether the parameter exists. The input parameter is also a key, and the return value is a boolean.",[15,14112,14113],{},[18,14114],{"alt":20,"src":14115},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage799.webp",[15,14117,14118],{},[18,14119],{"alt":20,"src":14120},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage800.webp",[15,14122,14123],{},[18,14124],{"alt":20,"src":14125},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage801.webp",[15,14127,14128],{},[18,14129],{"alt":20,"src":14130},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage802.webp",[15,14132,14133],{},[18,14134],{"alt":20,"src":14135},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage803.webp",[15,14137,14138],{},[18,14139],{"alt":20,"src":14140},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage804.webp",[561,14142],{},[15,14144,14145],{},[18,14146],{"alt":20,"src":14147},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage805.webp",[15,14149,14150],{},"The parameter object needs to be passed in.",[15,14152,14153],{},[18,14154],{"alt":20,"src":14155},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage806.webp",[15,14157,14158],{},"We just overwrite the old value.",[15,14160,14161],{},[18,14162],{"alt":20,"src":14163},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage807.webp",[15,14165,14166],{},[18,14167],{"alt":20,"src":14168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage808.webp",[15,14170,14171],{},"You can also create parameters via set_parameter, but you must declare allow_undeclared_parameters(true).",[15,14173,14174],{},[18,14175],{"alt":20,"src":14176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage809.webp",[15,14178,14179],{},[18,14180],{"alt":20,"src":14181},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage810.webp",[15,14183,14184],{},[18,14185],{"alt":20,"src":14186},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage811.webp",[561,14188],{},[15,14190,14191],{},[18,14192],{"alt":20,"src":14193},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage812.webp",[15,14195,14196],{},[18,14197],{"alt":20,"src":14198},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage813.webp",[15,14200,14201],{},"Parameters declared in this way cannot be deleted; only undeclared but set parameters can be removed.",[15,14203,14204],{},[18,14205],{"alt":20,"src":14206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage814.webp",[15,14208,14209],{},[18,14210],{"alt":20,"src":14211},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage815.webp",[23,14213,14215],{"className":25,"code":14214,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass ParamServer: public rclcpp::Node\n{\n  public:\n    ParamServer():Node(\"param_server_node_cpp\",rclcpp::NodeOptions().allow_undeclared_parameters(true))\n    {\n      RCLCPP_INFO(this->get_logger(),\"参数服务端搭建!\");\n    }\n\n    void create_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------增操作--------------\");\n\n      this->declare_parameter(\"car_name\",\"ER\");\n      this->declare_parameter(\"width\",1.55);\n      this->declare_parameter(\"wheels\",5);\n\n      this->set_parameter(rclcpp::Parameter(\"height\",2.00));\n    }\n\n    void get_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------查操作--------------\");\n\n      auto car = this->get_parameter(\"car_name\");\n      RCLCPP_INFO(this->get_logger(),\"key = %s,value = %s\",car.get_name().c_str(),car.as_string().c_str()); \n\n      auto params = this->get_parameters({\"car_name\",\"width\",\"wheels\"});\n      for(auto &¶m : params)\n      {\n        RCLCPP_INFO(this->get_logger(),\"key = %s,value = %s\",param.get_name().c_str(),param.value_to_string().c_str());\n      }\n      bool car_name_flag = this->has_parameter(\"car_name\");\n      bool height_flag = this->has_parameter(\"height\");\n      RCLCPP_INFO(this->get_logger(),\"是否包含car_name? 答案:%d\",car_name_flag);\n      RCLCPP_INFO(this->get_logger(),\"是否包含height? 答案:%d\",height_flag);\n    }\n\n    void update_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------改操作--------------\");\n      this->set_parameter(rclcpp::Parameter(\"width\",1.85));\n      RCLCPP_INFO(this->get_logger(),\"width = %.2f\",this->get_parameter(\"width\").as_double());\n    }\n\n    void delete_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-------------删操作--------------\");\n    \u002F\u002F   this->undeclare_parameter(\"car_name\");\n    \u002F\u002F   RCLCPP_INFO(this->get_logger(),\"是否包含car_name? 答案:%d\",this->has_parameter(\"car_name\"));\n      this->undeclare_parameter(\"height\");\n      RCLCPP_INFO(this->get_logger(),\"是否包含height? 答案:%d\",this->has_parameter(\"height\"));\n    }\n\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CParamServer>();\n\n  node->create_param();\n  node->get_param();\n  node->update_param();\n  node->delete_param();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,14216,14217,14223,14227,14243,14247,14251,14281,14285,14303,14307,14311,14319,14323,14341,14345,14367,14387,14407,14411,14441,14445,14449,14457,14461,14479,14483,14505,14554,14558,14590,14604,14608,14653,14657,14680,14701,14725,14749,14753,14757,14765,14769,14787,14814,14855,14859,14863,14871,14875,14893,14898,14903,14918,14952,14956,14960,14964,14968,14990,14994,15004,15008,15028,15032,15040,15048,15056,15064,15068,15078,15082,15092,15100],{"__ignoreMap":20},[32,14218,14219,14221],{"class":34,"line":35},[32,14220,39],{"class":38},[32,14222,43],{"class":42},[32,14224,14225],{"class":34,"line":46},[32,14226,50],{"emptyLinePlaceholder":49},[32,14228,14229,14231,14233,14235,14237,14239,14241],{"class":34,"line":53},[32,14230,56],{"class":38},[32,14232,13228],{"class":59},[32,14234,64],{"class":63},[32,14236,67],{"class":38},[32,14238,70],{"class":59},[32,14240,73],{"class":63},[32,14242,76],{"class":59},[32,14244,14245],{"class":34,"line":79},[32,14246,82],{"class":63},[32,14248,14249],{"class":34,"line":85},[32,14250,88],{"class":38},[32,14252,14253,14255,14257,14259,14261,14263,14265,14267,14269,14271,14273,14275,14277,14279],{"class":34,"line":91},[32,14254,13251],{"class":59},[32,14256,97],{"class":63},[32,14258,100],{"class":59},[32,14260,103],{"class":63},[32,14262,13260],{"class":42},[32,14264,1426],{"class":63},[32,14266,4395],{"class":59},[32,14268,73],{"class":63},[32,14270,13698],{"class":59},[32,14272,13701],{"class":63},[32,14274,13704],{"class":59},[32,14276,103],{"class":63},[32,14278,6714],{"class":126},[32,14280,13711],{"class":63},[32,14282,14283],{"class":34,"line":112},[32,14284,115],{"class":63},[32,14286,14287,14289,14291,14293,14295,14297,14299,14301],{"class":34,"line":118},[32,14288,121],{"class":59},[32,14290,103],{"class":63},[32,14292,127],{"class":126},[32,14294,130],{"class":63},[32,14296,133],{"class":59},[32,14298,136],{"class":63},[32,14300,13283],{"class":42},[32,14302,142],{"class":63},[32,14304,14305],{"class":34,"line":145},[32,14306,148],{"class":63},[32,14308,14309],{"class":34,"line":151},[32,14310,50],{"emptyLinePlaceholder":49},[32,14312,14313,14315,14317],{"class":34,"line":157},[32,14314,1491],{"class":38},[32,14316,13748],{"class":59},[32,14318,1497],{"class":63},[32,14320,14321],{"class":34,"line":162},[32,14322,115],{"class":63},[32,14324,14325,14327,14329,14331,14333,14335,14337,14339],{"class":34,"line":193},[32,14326,121],{"class":59},[32,14328,103],{"class":63},[32,14330,127],{"class":126},[32,14332,130],{"class":63},[32,14334,133],{"class":59},[32,14336,136],{"class":63},[32,14338,13771],{"class":42},[32,14340,142],{"class":63},[32,14342,14343],{"class":34,"line":198},[32,14344,50],{"emptyLinePlaceholder":49},[32,14346,14347,14350,14352,14355,14357,14360,14362,14365],{"class":34,"line":212},[32,14348,14349],{"class":126},"      this",[32,14351,130],{"class":63},[32,14353,14354],{"class":59},"declare_parameter",[32,14356,103],{"class":63},[32,14358,14359],{"class":42},"\"car_name\"",[32,14361,1426],{"class":63},[32,14363,14364],{"class":42},"\"ER\"",[32,14366,142],{"class":63},[32,14368,14369,14371,14373,14375,14377,14380,14382,14385],{"class":34,"line":217},[32,14370,14349],{"class":126},[32,14372,130],{"class":63},[32,14374,14354],{"class":59},[32,14376,103],{"class":63},[32,14378,14379],{"class":42},"\"width\"",[32,14381,1426],{"class":63},[32,14383,14384],{"class":126},"1.55",[32,14386,142],{"class":63},[32,14388,14389,14391,14393,14395,14397,14400,14402,14405],{"class":34,"line":246},[32,14390,14349],{"class":126},[32,14392,130],{"class":63},[32,14394,14354],{"class":59},[32,14396,103],{"class":63},[32,14398,14399],{"class":42},"\"wheels\"",[32,14401,1426],{"class":63},[32,14403,14404],{"class":126},"5",[32,14406,142],{"class":63},[32,14408,14409],{"class":34,"line":251},[32,14410,50],{"emptyLinePlaceholder":49},[32,14412,14413,14415,14417,14420,14422,14424,14426,14429,14431,14434,14436,14439],{"class":34,"line":264},[32,14414,14349],{"class":126},[32,14416,130],{"class":63},[32,14418,14419],{"class":59},"set_parameter",[32,14421,103],{"class":63},[32,14423,4395],{"class":59},[32,14425,73],{"class":63},[32,14427,14428],{"class":59},"Parameter",[32,14430,103],{"class":63},[32,14432,14433],{"class":42},"\"height\"",[32,14435,1426],{"class":63},[32,14437,14438],{"class":126},"2.00",[32,14440,1477],{"class":63},[32,14442,14443],{"class":34,"line":276},[32,14444,148],{"class":63},[32,14446,14447],{"class":34,"line":495},[32,14448,50],{"emptyLinePlaceholder":49},[32,14450,14451,14453,14455],{"class":34,"line":502},[32,14452,1491],{"class":38},[32,14454,13788],{"class":59},[32,14456,1497],{"class":63},[32,14458,14459],{"class":34,"line":510},[32,14460,115],{"class":63},[32,14462,14463,14465,14467,14469,14471,14473,14475,14477],{"class":34,"line":518},[32,14464,121],{"class":59},[32,14466,103],{"class":63},[32,14468,127],{"class":126},[32,14470,130],{"class":63},[32,14472,133],{"class":59},[32,14474,136],{"class":63},[32,14476,13811],{"class":42},[32,14478,142],{"class":63},[32,14480,14481],{"class":34,"line":524},[32,14482,50],{"emptyLinePlaceholder":49},[32,14484,14485,14487,14490,14492,14494,14496,14499,14501,14503],{"class":34,"line":530},[32,14486,1506],{"class":38},[32,14488,14489],{"class":63}," car ",[32,14491,1396],{"class":38},[32,14493,1399],{"class":126},[32,14495,130],{"class":63},[32,14497,14498],{"class":59},"get_parameter",[32,14500,103],{"class":63},[32,14502,14359],{"class":42},[32,14504,142],{"class":63},[32,14506,14507,14509,14511,14513,14515,14517,14519,14522,14524,14527,14529,14531,14534,14537,14539,14541,14544,14547,14549,14551],{"class":34,"line":541},[32,14508,121],{"class":59},[32,14510,103],{"class":63},[32,14512,127],{"class":126},[32,14514,130],{"class":63},[32,14516,133],{"class":59},[32,14518,136],{"class":63},[32,14520,14521],{"class":42},"\"key = ",[32,14523,1573],{"class":126},[32,14525,14526],{"class":42},",value = ",[32,14528,1573],{"class":126},[32,14530,368],{"class":42},[32,14532,14533],{"class":63},",car.",[32,14535,14536],{"class":59},"get_name",[32,14538,13701],{"class":63},[32,14540,1581],{"class":59},[32,14542,14543],{"class":63},"(),car.",[32,14545,14546],{"class":59},"as_string",[32,14548,13701],{"class":63},[32,14550,1581],{"class":59},[32,14552,14553],{"class":63},"()); \n",[32,14555,14556],{"class":34,"line":547},[32,14557,50],{"emptyLinePlaceholder":49},[32,14559,14560,14562,14565,14567,14569,14571,14574,14577,14579,14581,14583,14585,14587],{"class":34,"line":1676},[32,14561,1506],{"class":38},[32,14563,14564],{"class":63}," params ",[32,14566,1396],{"class":38},[32,14568,1399],{"class":126},[32,14570,130],{"class":63},[32,14572,14573],{"class":59},"get_parameters",[32,14575,14576],{"class":63},"({",[32,14578,14359],{"class":42},[32,14580,1426],{"class":63},[32,14582,14379],{"class":42},[32,14584,1426],{"class":63},[32,14586,14399],{"class":42},[32,14588,14589],{"class":63},"});\n",[32,14591,14592,14594,14596,14599,14601],{"class":34,"line":1681},[32,14593,10626],{"class":38},[32,14595,103],{"class":63},[32,14597,14598],{"class":38},"auto",[32,14600,2303],{"class":38},[32,14602,14603],{"class":63},"¶m : params)\n",[32,14605,14606],{"class":34,"line":1692},[32,14607,6978],{"class":63},[32,14609,14610,14612,14614,14616,14618,14620,14622,14624,14626,14628,14630,14632,14635,14637,14639,14641,14644,14647,14649,14651],{"class":34,"line":1697},[32,14611,1905],{"class":59},[32,14613,103],{"class":63},[32,14615,127],{"class":126},[32,14617,130],{"class":63},[32,14619,133],{"class":59},[32,14621,136],{"class":63},[32,14623,14521],{"class":42},[32,14625,1573],{"class":126},[32,14627,14526],{"class":42},[32,14629,1573],{"class":126},[32,14631,368],{"class":42},[32,14633,14634],{"class":63},",param.",[32,14636,14536],{"class":59},[32,14638,13701],{"class":63},[32,14640,1581],{"class":59},[32,14642,14643],{"class":63},"(),param.",[32,14645,14646],{"class":59},"value_to_string",[32,14648,13701],{"class":63},[32,14650,1581],{"class":59},[32,14652,1584],{"class":63},[32,14654,14655],{"class":34,"line":1720},[32,14656,7077],{"class":63},[32,14658,14659,14662,14665,14667,14669,14671,14674,14676,14678],{"class":34,"line":1725},[32,14660,14661],{"class":38},"      bool",[32,14663,14664],{"class":63}," car_name_flag ",[32,14666,1396],{"class":38},[32,14668,1399],{"class":126},[32,14670,130],{"class":63},[32,14672,14673],{"class":59},"has_parameter",[32,14675,103],{"class":63},[32,14677,14359],{"class":42},[32,14679,142],{"class":63},[32,14681,14682,14684,14687,14689,14691,14693,14695,14697,14699],{"class":34,"line":1736},[32,14683,14661],{"class":38},[32,14685,14686],{"class":63}," height_flag ",[32,14688,1396],{"class":38},[32,14690,1399],{"class":126},[32,14692,130],{"class":63},[32,14694,14673],{"class":59},[32,14696,103],{"class":63},[32,14698,14433],{"class":42},[32,14700,142],{"class":63},[32,14702,14703,14705,14707,14709,14711,14713,14715,14718,14720,14722],{"class":34,"line":1745},[32,14704,121],{"class":59},[32,14706,103],{"class":63},[32,14708,127],{"class":126},[32,14710,130],{"class":63},[32,14712,133],{"class":59},[32,14714,136],{"class":63},[32,14716,14717],{"class":42},"\"是否包含car_name? 答案:",[32,14719,3964],{"class":126},[32,14721,368],{"class":42},[32,14723,14724],{"class":63},",car_name_flag);\n",[32,14726,14727,14729,14731,14733,14735,14737,14739,14742,14744,14746],{"class":34,"line":4099},[32,14728,121],{"class":59},[32,14730,103],{"class":63},[32,14732,127],{"class":126},[32,14734,130],{"class":63},[32,14736,133],{"class":59},[32,14738,136],{"class":63},[32,14740,14741],{"class":42},"\"是否包含height? 答案:",[32,14743,3964],{"class":126},[32,14745,368],{"class":42},[32,14747,14748],{"class":63},",height_flag);\n",[32,14750,14751],{"class":34,"line":4110},[32,14752,148],{"class":63},[32,14754,14755],{"class":34,"line":4119},[32,14756,50],{"emptyLinePlaceholder":49},[32,14758,14759,14761,14763],{"class":34,"line":7189},[32,14760,1491],{"class":38},[32,14762,13828],{"class":59},[32,14764,1497],{"class":63},[32,14766,14767],{"class":34,"line":7198},[32,14768,115],{"class":63},[32,14770,14771,14773,14775,14777,14779,14781,14783,14785],{"class":34,"line":7203},[32,14772,121],{"class":59},[32,14774,103],{"class":63},[32,14776,127],{"class":126},[32,14778,130],{"class":63},[32,14780,133],{"class":59},[32,14782,136],{"class":63},[32,14784,13851],{"class":42},[32,14786,142],{"class":63},[32,14788,14789,14791,14793,14795,14797,14799,14801,14803,14805,14807,14809,14812],{"class":34,"line":7214},[32,14790,14349],{"class":126},[32,14792,130],{"class":63},[32,14794,14419],{"class":59},[32,14796,103],{"class":63},[32,14798,4395],{"class":59},[32,14800,73],{"class":63},[32,14802,14428],{"class":59},[32,14804,103],{"class":63},[32,14806,14379],{"class":42},[32,14808,1426],{"class":63},[32,14810,14811],{"class":126},"1.85",[32,14813,1477],{"class":63},[32,14815,14816,14818,14820,14822,14824,14826,14828,14831,14833,14835,14837,14839,14841,14843,14845,14847,14850,14853],{"class":34,"line":7219},[32,14817,121],{"class":59},[32,14819,103],{"class":63},[32,14821,127],{"class":126},[32,14823,130],{"class":63},[32,14825,133],{"class":59},[32,14827,136],{"class":63},[32,14829,14830],{"class":42},"\"width = ",[32,14832,3969],{"class":126},[32,14834,368],{"class":42},[32,14836,1426],{"class":63},[32,14838,127],{"class":126},[32,14840,130],{"class":63},[32,14842,14498],{"class":59},[32,14844,103],{"class":63},[32,14846,14379],{"class":42},[32,14848,14849],{"class":63},").",[32,14851,14852],{"class":59},"as_double",[32,14854,1584],{"class":63},[32,14856,14857],{"class":34,"line":7240},[32,14858,148],{"class":63},[32,14860,14861],{"class":34,"line":7245},[32,14862,50],{"emptyLinePlaceholder":49},[32,14864,14865,14867,14869],{"class":34,"line":7264},[32,14866,1491],{"class":38},[32,14868,13868],{"class":59},[32,14870,1497],{"class":63},[32,14872,14873],{"class":34,"line":7269},[32,14874,115],{"class":63},[32,14876,14877,14879,14881,14883,14885,14887,14889,14891],{"class":34,"line":7283},[32,14878,121],{"class":59},[32,14880,103],{"class":63},[32,14882,127],{"class":126},[32,14884,130],{"class":63},[32,14886,133],{"class":59},[32,14888,136],{"class":63},[32,14890,13891],{"class":42},[32,14892,142],{"class":63},[32,14894,14895],{"class":34,"line":7288},[32,14896,14897],{"class":5139},"    \u002F\u002F   this->undeclare_parameter(\"car_name\");\n",[32,14899,14900],{"class":34,"line":7312},[32,14901,14902],{"class":5139},"    \u002F\u002F   RCLCPP_INFO(this->get_logger(),\"是否包含car_name? 答案:%d\",this->has_parameter(\"car_name\"));\n",[32,14904,14905,14907,14909,14912,14914,14916],{"class":34,"line":7321},[32,14906,14349],{"class":126},[32,14908,130],{"class":63},[32,14910,14911],{"class":59},"undeclare_parameter",[32,14913,103],{"class":63},[32,14915,14433],{"class":42},[32,14917,142],{"class":63},[32,14919,14920,14922,14924,14926,14928,14930,14932,14934,14936,14938,14940,14942,14944,14946,14948,14950],{"class":34,"line":7326},[32,14921,121],{"class":59},[32,14923,103],{"class":63},[32,14925,127],{"class":126},[32,14927,130],{"class":63},[32,14929,133],{"class":59},[32,14931,136],{"class":63},[32,14933,14741],{"class":42},[32,14935,3964],{"class":126},[32,14937,368],{"class":42},[32,14939,1426],{"class":63},[32,14941,127],{"class":126},[32,14943,130],{"class":63},[32,14945,14673],{"class":59},[32,14947,103],{"class":63},[32,14949,14433],{"class":42},[32,14951,1477],{"class":63},[32,14953,14954],{"class":34,"line":7331},[32,14955,148],{"class":63},[32,14957,14958],{"class":34,"line":7342},[32,14959,50],{"emptyLinePlaceholder":49},[32,14961,14962],{"class":34,"line":7351},[32,14963,154],{"class":63},[32,14965,14966],{"class":34,"line":8011},[32,14967,50],{"emptyLinePlaceholder":49},[32,14969,14970,14972,14974,14976,14978,14980,14982,14984,14986,14988],{"class":34,"line":8016},[32,14971,165],{"class":38},[32,14973,168],{"class":59},[32,14975,103],{"class":63},[32,14977,165],{"class":38},[32,14979,176],{"class":175},[32,14981,179],{"class":63},[32,14983,182],{"class":38},[32,14985,185],{"class":38},[32,14987,188],{"class":175},[32,14989,109],{"class":63},[32,14991,14992],{"class":34,"line":8031},[32,14993,82],{"class":63},[32,14995,14996,14998,15000,15002],{"class":34,"line":8036},[32,14997,201],{"class":59},[32,14999,73],{"class":63},[32,15001,206],{"class":59},[32,15003,209],{"class":63},[32,15005,15006],{"class":34,"line":8049},[32,15007,50],{"emptyLinePlaceholder":49},[32,15009,15010,15012,15014,15016,15018,15020,15022,15024,15026],{"class":34,"line":8054},[32,15011,5145],{"class":38},[32,15013,12800],{"class":63},[32,15015,1396],{"class":38},[32,15017,1307],{"class":59},[32,15019,73],{"class":63},[32,15021,234],{"class":59},[32,15023,237],{"class":63},[32,15025,13356],{"class":59},[32,15027,5164],{"class":63},[32,15029,15030],{"class":34,"line":8077},[32,15031,50],{"emptyLinePlaceholder":49},[32,15033,15034,15036,15038],{"class":34,"line":8086},[32,15035,12823],{"class":63},[32,15037,13980],{"class":59},[32,15039,261],{"class":63},[32,15041,15042,15044,15046],{"class":34,"line":8091},[32,15043,12823],{"class":63},[32,15045,13989],{"class":59},[32,15047,261],{"class":63},[32,15049,15050,15052,15054],{"class":34,"line":8128},[32,15051,12823],{"class":63},[32,15053,13998],{"class":59},[32,15055,261],{"class":63},[32,15057,15058,15060,15062],{"class":34,"line":8133},[32,15059,12823],{"class":63},[32,15061,14007],{"class":59},[32,15063,261],{"class":63},[32,15065,15066],{"class":34,"line":8163},[32,15067,50],{"emptyLinePlaceholder":49},[32,15069,15070,15072,15074,15076],{"class":34,"line":8168},[32,15071,201],{"class":59},[32,15073,73],{"class":63},[32,15075,224],{"class":59},[32,15077,12851],{"class":63},[32,15079,15080],{"class":34,"line":8196},[32,15081,50],{"emptyLinePlaceholder":49},[32,15083,15084,15086,15088,15090],{"class":34,"line":8201},[32,15085,201],{"class":59},[32,15087,73],{"class":63},[32,15089,258],{"class":59},[32,15091,261],{"class":63},[32,15093,15094,15096,15098],{"class":34,"line":8207},[32,15095,267],{"class":38},[32,15097,270],{"class":126},[32,15099,273],{"class":63},[32,15101,15102],{"class":34,"line":8212},[32,15103,279],{"class":63},[10,15105,15107],{"id":15106},"parameter-service-experiment-1-client-c","Parameter Service - Experiment 1 - Client (C++)",[15,15109,15110],{},[18,15111],{"alt":20,"src":15112},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage816.webp",[15,15114,15115],{},[18,15116],{"alt":20,"src":15117},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage817.webp",[15,15119,15120],{},[18,15121],{"alt":20,"src":15122},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage818.webp",[15,15124,15125],{},[18,15126],{"alt":20,"src":15127},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage819.webp",[15,15129,15130],{},[18,15131],{"alt":20,"src":15132},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage820.webp",[15,15134,15135],{},[18,15136],{"alt":20,"src":15137},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage821.webp",[15,15139,15140],{},[18,15141],{"alt":20,"src":15142},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage822.webp",[15,15144,15145],{},[18,15146],{"alt":20,"src":15147},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage823.webp",[15,15149,15150],{},[18,15151],{"alt":20,"src":15152},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage824.webp",[15,15154,15155],{},[18,15156],{"alt":20,"src":15157},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage825.webp",[15,15159,15160],{},"The first entry parameter is the client node object.",[15,15162,15163],{},"The second entry parameter is the name of the server node to connect to.",[15,15165,15166],{},[18,15167],{"alt":20,"src":15168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage826.webp",[15,15170,15171],{},"If connected within 1 second, return true; if the connection times out after 1 second, return false.",[15,15173,15174],{},[18,15175],{"alt":20,"src":15176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage827.webp",[15,15178,15179],{},[18,15180],{"alt":20,"src":15181},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage828.webp",[23,15183,15185],{"className":25,"code":15184,"language":27,"meta":20,"style":20},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nusing namespace std::chrono_literals;\n\nclass ParamClient: public rclcpp::Node\n{\n  public:\n    ParamClient():Node(\"param_client_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"参数客户端搭建!\");\n      param_client_ = std::make_sharedautolinkrclcpp::SyncParametersClientautolink(this,\"param_server_node_cpp\");\n    }\n\n    bool connect_server()\n    {\n      while(param_client_->wait_for_service(1s) != true)\n      {\n        if(rclcpp::ok() != true)\n        {\n          return false;\n        }\n        RCLCPP_INFO(this->get_logger(),\"服务连接中!\");\n      }\n      return true;\n    }\n\n    void get_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-----------参数查询操作-------------\");\n    }\n\n    void update_param()\n    {\n      RCLCPP_INFO(this->get_logger(),\"-----------参数更新操作-------------\");\n    }\n\n  private:\n    rclcpp::SyncParametersClient::SharedPtr param_client_;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto client = std::make_shared\u003CParamClient>();\n\n  bool flag = client->connect_server();\n\n  if(!flag)\n  {\n    return 0;\n  }\n\n  client->get_param();\n  client->update_param();\n  client->get_param();\n\n  \u002F\u002F rclcpp::spin(client);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[29,15186,15187,15193,15197,15211,15215,15231,15235,15239,15253,15257,15275,15304,15308,15312,15320,15324,15347,15351,15371,15375,15383,15387,15405,15409,15417,15421,15425,15433,15437,15456,15460,15464,15472,15476,15495,15499,15503,15507,15519,15523,15527,15549,15553,15563,15567,15587,15591,15605,15609,15621,15625,15633,15637,15641,15650,15658,15666,15670,15675,15679,15689,15697],{"__ignoreMap":20},[32,15188,15189,15191],{"class":34,"line":35},[32,15190,39],{"class":38},[32,15192,43],{"class":42},[32,15194,15195],{"class":34,"line":46},[32,15196,50],{"emptyLinePlaceholder":49},[32,15198,15199,15201,15203,15205,15207,15209],{"class":34,"line":53},[32,15200,1301],{"class":38},[32,15202,1304],{"class":38},[32,15204,1307],{"class":59},[32,15206,73],{"class":63},[32,15208,1312],{"class":59},[32,15210,273],{"class":63},[32,15212,15213],{"class":34,"line":79},[32,15214,50],{"emptyLinePlaceholder":49},[32,15216,15217,15219,15221,15223,15225,15227,15229],{"class":34,"line":85},[32,15218,56],{"class":38},[32,15220,13415],{"class":59},[32,15222,64],{"class":63},[32,15224,67],{"class":38},[32,15226,70],{"class":59},[32,15228,73],{"class":63},[32,15230,76],{"class":59},[32,15232,15233],{"class":34,"line":91},[32,15234,82],{"class":63},[32,15236,15237],{"class":34,"line":112},[32,15238,88],{"class":38},[32,15240,15241,15243,15245,15247,15249,15251],{"class":34,"line":118},[32,15242,13438],{"class":59},[32,15244,97],{"class":63},[32,15246,100],{"class":59},[32,15248,103],{"class":63},[32,15250,13447],{"class":42},[32,15252,109],{"class":63},[32,15254,15255],{"class":34,"line":145},[32,15256,115],{"class":63},[32,15258,15259,15261,15263,15265,15267,15269,15271,15273],{"class":34,"line":151},[32,15260,121],{"class":59},[32,15262,103],{"class":63},[32,15264,127],{"class":126},[32,15266,130],{"class":63},[32,15268,133],{"class":59},[32,15270,136],{"class":63},[32,15272,13470],{"class":42},[32,15274,142],{"class":63},[32,15276,15277,15280,15282,15284,15286,15289,15291,15294,15296,15298,15300,15302],{"class":34,"line":157},[32,15278,15279],{"class":63},"      param_client_ ",[32,15281,1396],{"class":38},[32,15283,1307],{"class":59},[32,15285,73],{"class":63},[32,15287,15288],{"class":59},"make_sharedautolinkrclcpp",[32,15290,73],{"class":63},[32,15292,15293],{"class":59},"SyncParametersClientautolink",[32,15295,103],{"class":63},[32,15297,127],{"class":126},[32,15299,1426],{"class":63},[32,15301,13260],{"class":42},[32,15303,142],{"class":63},[32,15305,15306],{"class":34,"line":162},[32,15307,148],{"class":63},[32,15309,15310],{"class":34,"line":193},[32,15311,50],{"emptyLinePlaceholder":49},[32,15313,15314,15316,15318],{"class":34,"line":198},[32,15315,6937],{"class":38},[32,15317,6940],{"class":59},[32,15319,1497],{"class":63},[32,15321,15322],{"class":34,"line":212},[32,15323,115],{"class":63},[32,15325,15326,15328,15331,15333,15335,15337,15339,15341,15343,15345],{"class":34,"line":217},[32,15327,6951],{"class":38},[32,15329,15330],{"class":63},"(param_client_->",[32,15332,6957],{"class":59},[32,15334,103],{"class":63},[32,15336,1450],{"class":126},[32,15338,1453],{"class":38},[32,15340,6966],{"class":63},[32,15342,6230],{"class":38},[32,15344,6971],{"class":126},[32,15346,109],{"class":63},[32,15348,15349],{"class":34,"line":246},[32,15350,6978],{"class":63},[32,15352,15353,15355,15357,15359,15361,15363,15365,15367,15369],{"class":34,"line":251},[32,15354,7010],{"class":38},[32,15356,103],{"class":63},[32,15358,4395],{"class":59},[32,15360,73],{"class":63},[32,15362,7019],{"class":59},[32,15364,7022],{"class":63},[32,15366,6230],{"class":38},[32,15368,6971],{"class":126},[32,15370,109],{"class":63},[32,15372,15373],{"class":34,"line":264},[32,15374,7033],{"class":63},[32,15376,15377,15379,15381],{"class":34,"line":276},[32,15378,7062],{"class":38},[32,15380,7065],{"class":126},[32,15382,273],{"class":63},[32,15384,15385],{"class":34,"line":495},[32,15386,7072],{"class":63},[32,15388,15389,15391,15393,15395,15397,15399,15401,15403],{"class":34,"line":502},[32,15390,1905],{"class":59},[32,15392,103],{"class":63},[32,15394,127],{"class":126},[32,15396,130],{"class":63},[32,15398,133],{"class":59},[32,15400,136],{"class":63},[32,15402,6999],{"class":42},[32,15404,142],{"class":63},[32,15406,15407],{"class":34,"line":510},[32,15408,7077],{"class":63},[32,15410,15411,15413,15415],{"class":34,"line":518},[32,15412,7082],{"class":38},[32,15414,6971],{"class":126},[32,15416,273],{"class":63},[32,15418,15419],{"class":34,"line":524},[32,15420,148],{"class":63},[32,15422,15423],{"class":34,"line":530},[32,15424,50],{"emptyLinePlaceholder":49},[32,15426,15427,15429,15431],{"class":34,"line":541},[32,15428,1491],{"class":38},[32,15430,13788],{"class":59},[32,15432,1497],{"class":63},[32,15434,15435],{"class":34,"line":547},[32,15436,115],{"class":63},[32,15438,15439,15441,15443,15445,15447,15449,15451,15454],{"class":34,"line":1676},[32,15440,121],{"class":59},[32,15442,103],{"class":63},[32,15444,127],{"class":126},[32,15446,130],{"class":63},[32,15448,133],{"class":59},[32,15450,136],{"class":63},[32,15452,15453],{"class":42},"\"-----------参数查询操作-------------\"",[32,15455,142],{"class":63},[32,15457,15458],{"class":34,"line":1681},[32,15459,148],{"class":63},[32,15461,15462],{"class":34,"line":1692},[32,15463,50],{"emptyLinePlaceholder":49},[32,15465,15466,15468,15470],{"class":34,"line":1697},[32,15467,1491],{"class":38},[32,15469,13828],{"class":59},[32,15471,1497],{"class":63},[32,15473,15474],{"class":34,"line":1720},[32,15475,115],{"class":63},[32,15477,15478,15480,15482,15484,15486,15488,15490,15493],{"class":34,"line":1725},[32,15479,121],{"class":59},[32,15481,103],{"class":63},[32,15483,127],{"class":126},[32,15485,130],{"class":63},[32,15487,133],{"class":59},[32,15489,136],{"class":63},[32,15491,15492],{"class":42},"\"-----------参数更新操作-------------\"",[32,15494,142],{"class":63},[32,15496,15497],{"class":34,"line":1736},[32,15498,148],{"class":63},[32,15500,15501],{"class":34,"line":1745},[32,15502,50],{"emptyLinePlaceholder":49},[32,15504,15505],{"class":34,"line":4099},[32,15506,1486],{"class":38},[32,15508,15509,15511,15513,15516],{"class":34,"line":4110},[32,15510,1604],{"class":59},[32,15512,73],{"class":63},[32,15514,15515],{"class":59},"SyncParametersClient",[32,15517,15518],{"class":63},"::SharedPtr param_client_;\n",[32,15520,15521],{"class":34,"line":4119},[32,15522,154],{"class":63},[32,15524,15525],{"class":34,"line":7189},[32,15526,50],{"emptyLinePlaceholder":49},[32,15528,15529,15531,15533,15535,15537,15539,15541,15543,15545,15547],{"class":34,"line":7198},[32,15530,165],{"class":38},[32,15532,168],{"class":59},[32,15534,103],{"class":63},[32,15536,165],{"class":38},[32,15538,176],{"class":175},[32,15540,179],{"class":63},[32,15542,182],{"class":38},[32,15544,185],{"class":38},[32,15546,188],{"class":175},[32,15548,109],{"class":63},[32,15550,15551],{"class":34,"line":7203},[32,15552,82],{"class":63},[32,15554,15555,15557,15559,15561],{"class":34,"line":7214},[32,15556,201],{"class":59},[32,15558,73],{"class":63},[32,15560,206],{"class":59},[32,15562,209],{"class":63},[32,15564,15565],{"class":34,"line":7219},[32,15566,50],{"emptyLinePlaceholder":49},[32,15568,15569,15571,15573,15575,15577,15579,15581,15583,15585],{"class":34,"line":7240},[32,15570,5145],{"class":38},[32,15572,5148],{"class":63},[32,15574,1396],{"class":38},[32,15576,1307],{"class":59},[32,15578,73],{"class":63},[32,15580,234],{"class":59},[32,15582,237],{"class":63},[32,15584,13543],{"class":59},[32,15586,5164],{"class":63},[32,15588,15589],{"class":34,"line":7245},[32,15590,50],{"emptyLinePlaceholder":49},[32,15592,15593,15595,15597,15599,15601,15603],{"class":34,"line":7264},[32,15594,7248],{"class":38},[32,15596,7251],{"class":63},[32,15598,1396],{"class":38},[32,15600,7256],{"class":63},[32,15602,7259],{"class":59},[32,15604,261],{"class":63},[32,15606,15607],{"class":34,"line":7269},[32,15608,50],{"emptyLinePlaceholder":49},[32,15610,15611,15613,15615,15618],{"class":34,"line":7283},[32,15612,6224],{"class":38},[32,15614,103],{"class":63},[32,15616,15617],{"class":38},"!",[32,15619,15620],{"class":63},"flag)\n",[32,15622,15623],{"class":34,"line":7288},[32,15624,6240],{"class":63},[32,15626,15627,15629,15631],{"class":34,"line":7312},[32,15628,2016],{"class":38},[32,15630,270],{"class":126},[32,15632,273],{"class":63},[32,15634,15635],{"class":34,"line":7321},[32,15636,544],{"class":63},[32,15638,15639],{"class":34,"line":7326},[32,15640,50],{"emptyLinePlaceholder":49},[32,15642,15643,15646,15648],{"class":34,"line":7331},[32,15644,15645],{"class":63},"  client->",[32,15647,13989],{"class":59},[32,15649,261],{"class":63},[32,15651,15652,15654,15656],{"class":34,"line":7342},[32,15653,15645],{"class":63},[32,15655,13998],{"class":59},[32,15657,261],{"class":63},[32,15659,15660,15662,15664],{"class":34,"line":7351},[32,15661,15645],{"class":63},[32,15663,13989],{"class":59},[32,15665,261],{"class":63},[32,15667,15668],{"class":34,"line":8011},[32,15669,50],{"emptyLinePlaceholder":49},[32,15671,15672],{"class":34,"line":8016},[32,15673,15674],{"class":5139},"  \u002F\u002F rclcpp::spin(client);\n",[32,15676,15677],{"class":34,"line":8031},[32,15678,50],{"emptyLinePlaceholder":49},[32,15680,15681,15683,15685,15687],{"class":34,"line":8036},[32,15682,201],{"class":59},[32,15684,73],{"class":63},[32,15686,258],{"class":59},[32,15688,261],{"class":63},[32,15690,15691,15693,15695],{"class":34,"line":8049},[32,15692,267],{"class":38},[32,15694,270],{"class":126},[32,15696,273],{"class":63},[32,15698,15699],{"class":34,"line":8054},[32,15700,279],{"class":63},[561,15702],{},[15,15704,15705],{},[18,15706],{"alt":20,"src":15707},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage829.webp",[15,15709,15710],{},[18,15711],{"alt":20,"src":15712},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage830.webp",[15,15714,15715],{},[18,15716],{"alt":20,"src":15717},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage831.webp",[15,15719,15720],{},"These topics are all under this node name.",[561,15722],{},[15,15724,15725],{},[18,15726],{"alt":20,"src":15727},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage832.webp",[15,15729,15730],{},[18,15731],{"alt":20,"src":15732},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage833.webp",[15,15734,15735],{},[18,15736],{"alt":20,"src":15737},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage834.webp",[15,15739,15740],{},[18,15741],{"alt":20,"src":15742},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage835.webp",[15,15744,15745],{},"Use advanced for",[15,15747,15748],{},[18,15749],{"alt":20,"src":15750},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage836.webp",[15,15752,15753],{},[18,15754],{"alt":20,"src":15755},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage837.webp",[15,15757,15758],{},[18,15759],{"alt":20,"src":15760},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage838.webp",[15,15762,15763],{},[18,15764],{"alt":20,"src":15765},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage839.webp",[15,15767,15768],{},[18,15769],{"alt":20,"src":15770},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage840.webp",[15,15772,15773],{},[18,15774],{"alt":20,"src":15775},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage841.webp",[15,15777,15778],{},"Entry parameter: the container for the parameter object.",[15,15780,15781],{},[18,15782],{"alt":20,"src":15783},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage842.webp",[15,15785,15786],{},[18,15787],{"alt":20,"src":15788},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage843.webp",[15,15790,15791,15792,15794],{},"We can not only modify values, but also create new parameters, provided that the server has called ",[29,15793,13157],{},"...",[15,15796,15797],{},[18,15798],{"alt":20,"src":15799},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage844.webp",[15,15801,15802],{},[18,15803],{"alt":20,"src":15804},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage845.webp",[15806,15807,15808],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7hpK, html code.shiki .s7hpK{--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":20,"searchDepth":46,"depth":46,"links":15810},[15811,15812,15813,15814,15815,15816,15817,15818,15819,15820,15821,15822,15823,15824,15825],{"id":12,"depth":53,"text":13},{"id":705,"depth":53,"text":706},{"id":760,"depth":53,"text":761},{"id":2466,"depth":53,"text":2467},{"id":2985,"depth":53,"text":2986},{"id":4515,"depth":53,"text":4516},{"id":4574,"depth":53,"text":4575},{"id":4601,"depth":53,"text":4602},{"id":5777,"depth":53,"text":5778},{"id":8263,"depth":53,"text":8264},{"id":8445,"depth":53,"text":8446},{"id":11163,"depth":53,"text":11164},{"id":13028,"depth":53,"text":13029},{"id":13137,"depth":53,"text":13138},{"id":15106,"depth":53,"text":15107},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin",0,"0400","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","en-us:2023-12-30-ros2-tutorial","\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信",false,null,"en-US","en-us",{},{"title":5,"description":20},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","BaqtEHPGAv3aWXgVJyHYeBQkdOQWa6A2nDgKGRjnfcE",[15846,15851,15856,15861,15862,15867,15872,15877,15882,15887,15892,15897,15902,15907,15912,15917,15922,15927,15932,15937,15942,15947,15952,15957,15962,15967,15971,15976,15980,15985,15990,15995,16000,16005,16010,16015,16020,16025,16030,16035,16040,16045,16050,16055,16060,16065,16070,16075,16080,16085,16090,16095,16100,16105,16110,16115,16120,16125,16130,16135],{"path":15847,"stem":15848,"title":15849,"date":15829,"chapterOrder":15850,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","Introduction to ROS2","0100",{"path":15852,"stem":15853,"title":15854,"date":15829,"chapterOrder":15855,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","Getting Started","0200",{"path":15857,"stem":15858,"title":15859,"date":15829,"chapterOrder":15860,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","Workspace and Function Packages","0300",{"path":15826,"stem":15843,"title":5,"date":15829,"chapterOrder":15828,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},{"path":15863,"stem":15864,"title":15865,"date":15829,"chapterOrder":15866,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2 Other Communication Mechanisms","0500",{"path":15868,"stem":15869,"title":15870,"date":15829,"chapterOrder":15871,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":15873,"stem":15874,"title":15875,"date":15829,"chapterOrder":15876,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","Replaying rosbag2","0700",{"path":15878,"stem":15879,"title":15880,"date":15829,"chapterOrder":15881,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","Coordinate Transformation TF","0800",{"path":15883,"stem":15884,"title":15885,"date":15829,"chapterOrder":15886,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","Visualization Platform RVIZ2 and URDF Modeling Language","0900",{"path":15888,"stem":15889,"title":15890,"date":15829,"chapterOrder":15891,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2 Simulation Platform","1000",{"path":15893,"stem":15894,"title":15895,"date":15829,"chapterOrder":15896,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":15898,"stem":15899,"title":15900,"date":15829,"chapterOrder":15901,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":15903,"stem":15904,"title":15905,"date":15829,"chapterOrder":15906,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":15908,"stem":15909,"title":15910,"date":15829,"chapterOrder":15911,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","Migrate Ign Gazebo to Gz Sim","1100-0400",{"path":15913,"stem":15914,"title":15915,"date":15829,"chapterOrder":15916,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gazebo simulation platform","1100",{"path":15918,"stem":15919,"title":15920,"date":15829,"chapterOrder":15921,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble Navigation Simulation","1200-0100",{"path":15923,"stem":15924,"title":15925,"date":15829,"chapterOrder":15926,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy Navigation Simulation","1200-0200",{"path":15928,"stem":15929,"title":15930,"date":15829,"chapterOrder":15931,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Differences in Navigation between Humble and Jazzy","1200-0300",{"path":15933,"stem":15934,"title":15935,"date":15829,"chapterOrder":15936,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","Robot Navigation with Navigation2 (Simulation)","1200",{"path":15938,"stem":15939,"title":15940,"date":15829,"chapterOrder":15941,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库","1300-0100-0100",{"path":15943,"stem":15944,"title":15945,"date":15829,"chapterOrder":15946,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver Library","1300-0100-0200",{"path":15948,"stem":15949,"title":15950,"date":15829,"chapterOrder":15951,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART serial communication","1300-0100",{"path":15953,"stem":15954,"title":15955,"date":15829,"chapterOrder":15956,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":15958,"stem":15959,"title":15960,"date":15829,"chapterOrder":15961,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":15963,"stem":15964,"title":15965,"date":15829,"chapterOrder":15966,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN communication","1300-0200",{"path":15968,"stem":15969,"title":15940,"date":15829,"chapterOrder":15970,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":15972,"stem":15973,"title":15974,"date":15829,"chapterOrder":15975,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP communication","1300-0300",{"path":15977,"stem":15978,"title":15940,"date":15829,"chapterOrder":15979,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":15981,"stem":15982,"title":15983,"date":15829,"chapterOrder":15984,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP communication","1300-0400",{"path":15986,"stem":15987,"title":15988,"date":15829,"chapterOrder":15989,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux hardware communication","1300",{"path":15991,"stem":15992,"title":15993,"date":15829,"chapterOrder":15994,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","Robot Composition","1400-0100",{"path":15996,"stem":15997,"title":15998,"date":15829,"chapterOrder":15999,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","Remote Development SSH","1400-0200-0100",{"path":16001,"stem":16002,"title":16003,"date":15829,"chapterOrder":16004,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","Remote Desktop Access","1400-0200-0200",{"path":16006,"stem":16007,"title":16008,"date":15829,"chapterOrder":16009,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","Remote Development Environment for Industrial PC","1400-0200",{"path":16011,"stem":16012,"title":16013,"date":15829,"chapterOrder":16014,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","External USB Devices for the Industrial PC","1400-0300",{"path":16016,"stem":16017,"title":16018,"date":15829,"chapterOrder":16019,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","Distributed setup","1400-0400",{"path":16021,"stem":16022,"title":16023,"date":15829,"chapterOrder":16024,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","Optimize logs","1400-0500",{"path":16026,"stem":16027,"title":16028,"date":15829,"chapterOrder":16029,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","odometry","1400-0600-0100",{"path":16031,"stem":16032,"title":16033,"date":15829,"chapterOrder":16034,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","Inertial Measurement Unit (IMU)","1400-0600-0200",{"path":16036,"stem":16037,"title":16038,"date":15829,"chapterOrder":16039,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","LiDAR","1400-0600-0300",{"path":16041,"stem":16042,"title":16043,"date":15829,"chapterOrder":16044,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","Camera","1400-0600-0400",{"path":16046,"stem":16047,"title":16048,"date":15829,"chapterOrder":16049,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","Global Navigation Satellite System (GNSS)","1400-0600-0500",{"path":16051,"stem":16052,"title":16053,"date":15829,"chapterOrder":16054,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","The query \"手柄JOY\" is a bit ambiguous. To help you better, could you please provide more details? For example:","1400-0600-0600",{"path":16056,"stem":16057,"title":16058,"date":15829,"chapterOrder":16059,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","Keyboard control node","1400-0600-0700",{"path":16061,"stem":16062,"title":16063,"date":15829,"chapterOrder":16064,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","Hardware platform","1400-0600",{"path":16066,"stem":16067,"title":16068,"date":15829,"chapterOrder":16069,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","Coordinate System and Topic Relationship","1400-0700",{"path":16071,"stem":16072,"title":16073,"date":15829,"chapterOrder":16074,"chapterDepth":53,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","Wheel odometry calibration","1400-0800-0100-0100",{"path":16076,"stem":16077,"title":16078,"date":15829,"chapterOrder":16079,"chapterDepth":53,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","Fusion of Wheel Odometry and IMU","1400-0800-0100-0200",{"path":16081,"stem":16082,"title":16083,"date":15829,"chapterOrder":16084,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","Wheel odometry calibration and fusion","1400-0800-0100",{"path":16086,"stem":16087,"title":16088,"date":15829,"chapterOrder":16089,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","Lidar Tool","1400-0800-0200",{"path":16091,"stem":16092,"title":16093,"date":15829,"chapterOrder":16094,"chapterDepth":46,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","Advanced Camera Usage","1400-0800-0300",{"path":16096,"stem":16097,"title":16098,"date":15829,"chapterOrder":16099,"chapterDepth":35,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","Advanced Hardware Platform","1400-0800",{"path":16101,"stem":16102,"title":16103,"date":15829,"chapterOrder":16104,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","Robot hardware","1400",{"path":16106,"stem":16107,"title":16108,"date":15829,"chapterOrder":16109,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":16111,"stem":16112,"title":16113,"date":15829,"chapterOrder":16114,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","MoveIt2 industrial robot arm","1600",{"path":16116,"stem":16117,"title":16118,"date":15829,"chapterOrder":16119,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","Robot Navigation with Navigation2 (Physical Robot)","1700",{"path":16121,"stem":16122,"title":16123,"date":15829,"chapterOrder":16124,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":16126,"stem":16127,"title":16128,"date":15829,"chapterOrder":16129,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots simulation platform","1900",{"path":16131,"stem":16132,"title":16133,"date":15829,"chapterOrder":16134,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":15836},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":15832,"stem":16136,"title":16137,"date":15829,"chapterOrder":15837,"chapterDepth":15827,"docKey":15831,"docRoot":15832,"docTitle":15833,"isWikiDoc":49,"isWikiIndex":49},"_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2 Robot Operating System Tutorial",{"variants":16139},[16140,16141,16144,16147,16150],{"path":15826,"localeSlug":15839,"i18nKey":15835},{"path":16142,"localeSlug":16143,"i18nKey":15835},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","zh-hant",{"path":16145,"localeSlug":16146,"i18nKey":15835},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","zh-hk",{"path":16148,"localeSlug":16149,"i18nKey":15835},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","zh-tw",{"path":16151,"localeSlug":16152,"i18nKey":15835},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","zh-cn",[15826,15842,16142,15842,16145,15842,16148,15842,16151,15842],1784646852075]