[{"data":1,"prerenderedAt":1964},["ShallowReactive",2],{"wiki-page-/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao":3,"wiki-doc-items-/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao":1598,"language-switcher-data-/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao":1948,"wiki-i18n-paths-/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao":1963},{"id":4,"title":5,"body":6,"canonicalPath":1579,"chapter":1580,"chapterSort":1581,"date":1582,"description":20,"docI18nKey":1583,"docKey":1584,"docRoot":1585,"docTitle":1586,"extension":1587,"i18nKey":1588,"isBlogPost":1589,"isWikiDoc":224,"isWikiIndex":1589,"layout":1590,"legacyPath":1590,"locale":1591,"localeSlug":1592,"meta":1593,"navigation":224,"path":1579,"seo":1594,"sourcePath":1595,"sourceStem":1588,"stem":1596,"wikiDepth":99,"__hash__":1597},"content/_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包.md","Workspace and Function Packages",{"type":7,"value":8,"toc":1568},"minimark",[9,14,22,25,33,36,39,42,45,48,53,58,61,66,71,76,87,160,162,167,170,175,180,184,189,194,199,204,442,447,452,455,458,463,468,470,475,480,483,486,491,494,496,501,506,509,514,525,528,544,550,692,697,703,707,712,715,720,723,728,733,738,741,744,747,750,753,758,763,768,773,778,783,788,793,798,801,805,810,815,818,823,828,833,836,841,860,868,887,892,909,914,936,941,946,967,972,976,981,986,989,994,999,1002,1007,1012,1019,1024,1029,1034,1039,1044,1047,1052,1057,1060,1066,1071,1076,1081,1086,1089,1094,1098,1103,1108,1113,1121,1126,1129,1134,1139,1142,1147,1150,1153,1158,1163,1168,1173,1177,1182,1187,1192,1197,1202,1207,1212,1217,1224,1228,1231,1237,1240,1246,1249,1255,1258,1264,1269,1274,1279,1284,1289,1294,1299,1304,1309,1314,1318,1321,1324,1330,1335,1337,1345,1348,1351,1357,1362,1364,1370,1373,1376,1382,1390,1395,1397,1403,1406,1412,1417,1419,1425,1428,1431,1437,1442,1444,1450,1453,1456,1462,1467,1469,1475,1478,1481,1487,1492,1494,1500,1503,1506,1512,1517,1519,1525,1528,1531,1537,1542,1544,1550,1553,1559,1564],[10,11,13],"h3",{"id":12},"workspace-overview","Workspace Overview",[15,16,17],"p",{},[18,19],"img",{"alt":20,"src":21},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image222.webp",[15,23,24],{},"The workspace contains 4 subspaces.",[15,26,27,28,32],{},"All future code and scripts must be manually placed into the ",[29,30,31],"code",{},"src"," directory.",[15,34,35],{},"The intermediate files generated by compilation will be stored in the build space.",[15,37,38],{},"The executable files will be stored in the install space.",[15,40,41],{},"Compilation process and various warnings, error messages after running, etc., will be stored in the log space.",[43,44],"hr",{},[15,46,47],{},"Using the pip tool, you can easily install various Python packages.",[15,49,50],{},[18,51],{"alt":20,"src":52},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image223.webp",[15,54,55],{},[18,56],{"alt":20,"src":57},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image224.webp",[15,59,60],{},"A tool specifically designed for handling ROS2 dependencies, developed by Chinese developer @FishROS.",[15,62,63],{},[18,64],{"alt":20,"src":65},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image225.webp",[15,67,68],{},[18,69],{"alt":20,"src":70},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image226.webp",[15,72,73],{},[18,74],{"alt":20,"src":75},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image227.webp",[15,77,78,79,82,83,86],{},"It essentially scans the ",[29,80,81],{},"depend"," entries in the ",[29,84,85],{},"package.xml"," files of each package, checks whether the local machine has those dependencies, and then decides whether to install them.",[88,89,93],"pre",{"className":90,"code":91,"language":92,"meta":20,"style":20},"language-bash shiki shiki-themes github-light github-dark","sudo rosdepc init\nrosdepc update\ncd ..\nrosdepc install -i --from-path src --rosdistro humble -y  #在src文件里看功能包所需依赖并查找安装\n","bash",[29,94,95,111,120,130],{"__ignoreMap":20},[96,97,100,104,108],"span",{"class":98,"line":99},"line",1,[96,101,103],{"class":102},"sScJk","sudo",[96,105,107],{"class":106},"sZZnC"," rosdepc",[96,109,110],{"class":106}," init\n",[96,112,114,117],{"class":98,"line":113},2,[96,115,116],{"class":102},"rosdepc",[96,118,119],{"class":106}," update\n",[96,121,123,127],{"class":98,"line":122},3,[96,124,126],{"class":125},"sj4cs","cd",[96,128,129],{"class":106}," ..\n",[96,131,133,135,138,141,144,147,150,153,156],{"class":98,"line":132},4,[96,134,116],{"class":102},[96,136,137],{"class":106}," install",[96,139,140],{"class":125}," -i",[96,142,143],{"class":125}," --from-path",[96,145,146],{"class":106}," src",[96,148,149],{"class":125}," --rosdistro",[96,151,152],{"class":106}," humble",[96,154,155],{"class":125}," -y",[96,157,159],{"class":158},"sJ8bj","  #在src文件里看功能包所需依赖并查找安装\n",[43,161],{},[15,163,164],{},[18,165],{"alt":20,"src":166},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image228.webp",[15,168,169],{},"Several more directories need to be created next, most of which are related to interface files.",[15,171,172],{},[18,173],{"alt":20,"src":174},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image229.webp",[15,176,177],{},[18,178],{"alt":20,"src":179},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image230.webp",[10,181,183],{"id":182},"source-file-compilation","Source file compilation",[15,185,186],{},[18,187],{"alt":20,"src":188},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image231.webp",[15,190,191],{},[18,192],{"alt":20,"src":193},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image232.webp",[15,195,196],{},[18,197],{"alt":20,"src":198},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image233.webp",[15,200,201],{},[18,202],{"alt":20,"src":203},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image234.webp",[88,205,209],{"className":206,"code":207,"language":208,"meta":20,"style":20},"language-cpp shiki shiki-themes github-light github-dark","#include \"rclcpp/rclcpp.hpp\"\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"node_name\")\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  auto node = std::make_shared\u003CMyNode>();\n  rclcpp::shutdown();\n  return 0;\n}\n","cpp",[29,210,211,220,226,250,255,261,282,288,314,320,326,331,363,368,382,411,424,436],{"__ignoreMap":20},[96,212,213,217],{"class":98,"line":99},[96,214,216],{"class":215},"szBVR","#include",[96,218,219],{"class":106}," \"rclcpp/rclcpp.hpp\"\n",[96,221,222],{"class":98,"line":113},[96,223,225],{"emptyLinePlaceholder":224},true,"\n",[96,227,228,231,234,238,241,244,247],{"class":98,"line":122},[96,229,230],{"class":215},"class",[96,232,233],{"class":102}," MyNode",[96,235,237],{"class":236},"sVt8B",": ",[96,239,240],{"class":215},"public",[96,242,243],{"class":102}," rclcpp",[96,245,246],{"class":236},"::",[96,248,249],{"class":102},"Node\n",[96,251,252],{"class":98,"line":132},[96,253,254],{"class":236},"{\n",[96,256,258],{"class":98,"line":257},5,[96,259,260],{"class":215},"  public:\n",[96,262,264,267,270,273,276,279],{"class":98,"line":263},6,[96,265,266],{"class":102},"    MyNode",[96,268,269],{"class":236},"():",[96,271,272],{"class":102},"Node",[96,274,275],{"class":236},"(",[96,277,278],{"class":106},"\"node_name\"",[96,280,281],{"class":236},")\n",[96,283,285],{"class":98,"line":284},7,[96,286,287],{"class":236},"    {\n",[96,289,291,294,296,299,302,305,308,311],{"class":98,"line":290},8,[96,292,293],{"class":102},"      RCLCPP_INFO",[96,295,275],{"class":236},[96,297,298],{"class":125},"this",[96,300,301],{"class":236},"->",[96,303,304],{"class":102},"get_logger",[96,306,307],{"class":236},"(),",[96,309,310],{"class":106},"\"hello world!\"",[96,312,313],{"class":236},");\n",[96,315,317],{"class":98,"line":316},9,[96,318,319],{"class":236},"    }\n",[96,321,323],{"class":98,"line":322},10,[96,324,325],{"class":236},"};\n",[96,327,329],{"class":98,"line":328},11,[96,330,225],{"emptyLinePlaceholder":224},[96,332,334,337,340,342,344,348,351,354,357,360],{"class":98,"line":333},12,[96,335,336],{"class":215},"int",[96,338,339],{"class":102}," main",[96,341,275],{"class":236},[96,343,336],{"class":215},[96,345,347],{"class":346},"s4XuR"," argc",[96,349,350],{"class":236},",",[96,352,353],{"class":215},"char",[96,355,356],{"class":215}," *",[96,358,359],{"class":346},"argv",[96,361,362],{"class":236},"[])\n",[96,364,366],{"class":98,"line":365},13,[96,367,254],{"class":236},[96,369,371,374,376,379],{"class":98,"line":370},14,[96,372,373],{"class":102},"  rclcpp",[96,375,246],{"class":236},[96,377,378],{"class":102},"init",[96,380,381],{"class":236},"(argc,argv);\n",[96,383,385,388,391,394,397,399,402,405,408],{"class":98,"line":384},15,[96,386,387],{"class":215},"  auto",[96,389,390],{"class":236}," node ",[96,392,393],{"class":215},"=",[96,395,396],{"class":102}," std",[96,398,246],{"class":236},[96,400,401],{"class":102},"make_shared",[96,403,404],{"class":236},"\u003C",[96,406,407],{"class":102},"MyNode",[96,409,410],{"class":236},">();\n",[96,412,414,416,418,421],{"class":98,"line":413},16,[96,415,373],{"class":102},[96,417,246],{"class":236},[96,419,420],{"class":102},"shutdown",[96,422,423],{"class":236},"();\n",[96,425,427,430,433],{"class":98,"line":426},17,[96,428,429],{"class":215},"  return",[96,431,432],{"class":125}," 0",[96,434,435],{"class":236},";\n",[96,437,439],{"class":98,"line":438},18,[96,440,441],{"class":236},"}\n",[15,443,444],{},[18,445],{"alt":20,"src":446},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image235.webp",[15,448,449],{},[18,450],{"alt":20,"src":451},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image236.webp",[15,453,454],{},"Instantiation allows only one node per process.",[15,456,457],{},"Inheritance can organize multiple nodes.",[15,459,460],{},[18,461],{"alt":20,"src":462},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image237.webp",[15,464,465],{},[18,466],{"alt":20,"src":467},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image238.webp",[43,469],{},[15,471,472],{},[18,473],{"alt":20,"src":474},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image239.webp",[15,476,477],{},[18,478],{"alt":20,"src":479},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image240.webp",[15,481,482],{},"What is the purpose of initialization and resource release?",[15,484,485],{},"You can put data into the context object and also retrieve data from it. It is somewhat similar to a message queue in FreeRTOS, but not entirely — it can also store previously saved data.",[15,487,488],{},[18,489],{"alt":20,"src":490},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image241.webp",[15,492,493],{},"Initialization is not just about creating a context object; that is only one of its functions. It also has other important functions.",[43,495],{},[15,497,498],{},[18,499],{"alt":20,"src":500},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image242.webp",[15,502,503],{},[18,504],{"alt":20,"src":505},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image243.webp",[15,507,508],{},"First initialize the parent class constructor and pass in a node name.",[15,510,511],{},[18,512],{"alt":20,"src":513},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image244.webp",[15,515,516,517,524],{},"If you've forgotten about smart pointers, check out the ",[518,519,523],"a",{"href":520,"rel":521},"https://sdutvincirobot.feishu.cn/docx/N0GAdx6IDoqnRnx1q0TcX1Wfnvc",[522],"nofollow","Vinci Robotics Team C/C++ Resources",".",[15,526,527],{},"Smart pointers are a type of pointer that automatically manage memory, releasing it when the object is no longer needed. Using smart pointers helps prevent issues such as memory leaks and dangling pointers.",[15,529,530,531,533,534,537,538,540,541,524],{},"The safest way to allocate and use dynamic memory is to call a standard library function called ",[29,532,401],{},". This function allocates an object in dynamic memory, initializes it, and returns a ",[29,535,536],{},"shared_ptr"," pointing to that object. Like smart pointers, ",[29,539,401],{}," is also defined in the header file ",[29,542,543],{},"memory",[15,545,546,547,549],{},"When using ",[29,548,401],{},", you must specify the type of object you want to create. The definition follows the same pattern as a template class, with the type given in angle brackets after the function name:",[88,551,553],{"className":206,"code":552,"language":208,"meta":20,"style":20},"// 指向一个值为42的int的shared_ptr\nshared_ptr\u003Cint> p3 = make_shared\u003Cint>(42);\n\n// p4 指向一个值为\"9999999999\"的string\nshared_ptr\u003Cstring> p4 = make_shared\u003Cstring>(10,'9');\n\n// p5指向一个未初始化的int\nshared_ptr\u003Cint> p5 = make_shared\u003Cint>();\n//当然，我们通常用 auto 定义一个对象来保存 make_shared 的结果，这种方式较为简单：\n\n// p6指向一个动态分配的空vector\u003Cstring>\nauto p6 = make_shared\u003Cvector>();\n",[29,554,555,560,587,591,596,631,635,640,659,664,668,673],{"__ignoreMap":20},[96,556,557],{"class":98,"line":99},[96,558,559],{"class":158},"// 指向一个值为42的int的shared_ptr\n",[96,561,562,564,567,570,572,575,577,579,582,585],{"class":98,"line":113},[96,563,536],{"class":236},[96,565,566],{"class":215},"\u003Cint>",[96,568,569],{"class":236}," p3 ",[96,571,393],{"class":215},[96,573,574],{"class":102}," make_shared",[96,576,404],{"class":236},[96,578,336],{"class":215},[96,580,581],{"class":236},">(",[96,583,584],{"class":125},"42",[96,586,313],{"class":236},[96,588,589],{"class":98,"line":122},[96,590,225],{"emptyLinePlaceholder":224},[96,592,593],{"class":98,"line":132},[96,594,595],{"class":158},"// p4 指向一个值为\"9999999999\"的string\n",[96,597,598,600,602,605,608,611,613,615,617,619,621,624,626,629],{"class":98,"line":257},[96,599,536],{"class":236},[96,601,404],{"class":215},[96,603,604],{"class":236},"string",[96,606,607],{"class":215},">",[96,609,610],{"class":236}," p4 ",[96,612,393],{"class":215},[96,614,574],{"class":102},[96,616,404],{"class":236},[96,618,604],{"class":102},[96,620,581],{"class":236},[96,622,623],{"class":125},"10",[96,625,350],{"class":236},[96,627,628],{"class":106},"'9'",[96,630,313],{"class":236},[96,632,633],{"class":98,"line":263},[96,634,225],{"emptyLinePlaceholder":224},[96,636,637],{"class":98,"line":284},[96,638,639],{"class":158},"// p5指向一个未初始化的int\n",[96,641,642,644,646,649,651,653,655,657],{"class":98,"line":290},[96,643,536],{"class":236},[96,645,566],{"class":215},[96,647,648],{"class":236}," p5 ",[96,650,393],{"class":215},[96,652,574],{"class":102},[96,654,404],{"class":236},[96,656,336],{"class":215},[96,658,410],{"class":236},[96,660,661],{"class":98,"line":316},[96,662,663],{"class":158},"//当然，我们通常用 auto 定义一个对象来保存 make_shared 的结果，这种方式较为简单：\n",[96,665,666],{"class":98,"line":322},[96,667,225],{"emptyLinePlaceholder":224},[96,669,670],{"class":98,"line":328},[96,671,672],{"class":158},"// p6指向一个动态分配的空vector\u003Cstring>\n",[96,674,675,678,681,683,685,687,690],{"class":98,"line":333},[96,676,677],{"class":215},"auto",[96,679,680],{"class":236}," p6 ",[96,682,393],{"class":215},[96,684,574],{"class":102},[96,686,404],{"class":236},[96,688,689],{"class":102},"vector",[96,691,410],{"class":236},[15,693,694],{},[18,695],{"alt":20,"src":696},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image245.webp",[15,698,699,700,702],{},"Using ",[29,701,401],{}," can allocate memory on the heap.",[10,704,706],{"id":705},"configuration-file","Configuration file",[15,708,709],{},[18,710],{"alt":20,"src":711},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image246.webp",[15,713,714],{},"C++",[15,716,717],{},[18,718],{"alt":20,"src":719},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image247.webp",[15,721,722],{},"Python",[15,724,725],{},[18,726],{"alt":20,"src":727},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image248.webp",[15,729,730],{},[18,731],{"alt":20,"src":732},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image249.webp",[15,734,735],{},[18,736],{"alt":20,"src":737},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image250.webp",[15,739,740],{},"name is the package name",[15,742,743],{},"version is the package version",[15,745,746],{},"The description provides information about the package—that is, what the package does.",[15,748,749],{},"email is the maintainer's email address",[15,751,752],{},"license is the software license used by our function package.",[15,754,755],{},[18,756],{"alt":20,"src":757},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image251.webp",[15,759,760],{},[18,761],{"alt":20,"src":762},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image252.webp",[15,764,765],{},[18,766],{"alt":20,"src":767},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image253.webp",[15,769,770],{},[18,771],{"alt":20,"src":772},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image254.webp",[15,774,775],{},[18,776],{"alt":20,"src":777},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image255.webp",[15,779,780],{},[18,781],{"alt":20,"src":782},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image256.webp",[15,784,785],{},[18,786],{"alt":20,"src":787},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image257.webp",[15,789,790],{},[18,791],{"alt":20,"src":792},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image258.webp",[15,794,795],{},[18,796],{"alt":20,"src":797},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image259.webp",[15,799,800],{},"It is not recommended to directly rename a package. When the folder name is changed, many configuration files inside also need to be updated. It is better to create a new one.",[10,802,804],{"id":803},"commonly-used-operation-commands","Commonly used operation commands",[15,806,807],{},[18,808],{"alt":20,"src":809},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image260.webp",[15,811,812],{},[18,813],{"alt":20,"src":814},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image261.webp",[15,816,817],{},"ament_cmake is an enhanced version of cmake.",[15,819,820],{},[18,821],{"alt":20,"src":822},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image262.webp",[15,824,825],{},[18,826],{"alt":20,"src":827},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image263.webp",[15,829,830],{},[18,831],{"alt":20,"src":832},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image264.webp",[15,834,835],{},"-h displays help information.",[15,837,838],{},[18,839],{"alt":20,"src":840},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image265.webp",[88,842,844],{"className":90,"code":843,"language":92,"meta":20,"style":20},"ros2 pkg executables #输出当前系统可执行的功能包和节点\n",[29,845,846],{"__ignoreMap":20},[96,847,848,851,854,857],{"class":98,"line":99},[96,849,850],{"class":102},"ros2",[96,852,853],{"class":106}," pkg",[96,855,856],{"class":106}," executables",[96,858,859],{"class":158}," #输出当前系统可执行的功能包和节点\n",[15,861,862,865],{},[18,863],{"alt":20,"src":864},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image266.webp",[18,866],{"alt":20,"src":867},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image267.webp",[88,869,871],{"className":90,"code":870,"language":92,"meta":20,"style":20},"ros2 pkg executables 功能包名         #是输出当前包下可执行的功能包和节点\n",[29,872,873],{"__ignoreMap":20},[96,874,875,877,879,881,884],{"class":98,"line":99},[96,876,850],{"class":102},[96,878,853],{"class":106},[96,880,856],{"class":106},[96,882,883],{"class":106}," 功能包名",[96,885,886],{"class":158},"         #是输出当前包下可执行的功能包和节点\n",[15,888,889],{},[18,890],{"alt":20,"src":891},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image268.webp",[88,893,895],{"className":90,"code":894,"language":92,"meta":20,"style":20},"ros2 pkg list #是输出当前系统可执行的功能包\n",[29,896,897],{"__ignoreMap":20},[96,898,899,901,903,906],{"class":98,"line":99},[96,900,850],{"class":102},[96,902,853],{"class":106},[96,904,905],{"class":106}," list",[96,907,908],{"class":158}," #是输出当前系统可执行的功能包\n",[15,910,911],{},[18,912],{"alt":20,"src":913},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image269.webp",[88,915,917],{"className":90,"code":916,"language":92,"meta":20,"style":20},"ros2 pkg prefix + 功能包名   #是输出该功能包的路径(重要，后面经常要用)\n",[29,918,919],{"__ignoreMap":20},[96,920,921,923,925,928,931,933],{"class":98,"line":99},[96,922,850],{"class":102},[96,924,853],{"class":106},[96,926,927],{"class":106}," prefix",[96,929,930],{"class":106}," +",[96,932,883],{"class":106},[96,934,935],{"class":158},"   #是输出该功能包的路径(重要，后面经常要用)\n",[15,937,938],{},[18,939],{"alt":20,"src":940},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image270.webp",[15,942,943],{},[18,944],{"alt":20,"src":945},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image271.webp",[88,947,949],{"className":90,"code":948,"language":92,"meta":20,"style":20},"ros2 pkg xml + 功能包名   #是输出该功能包里的packages.xml的内容\n",[29,950,951],{"__ignoreMap":20},[96,952,953,955,957,960,962,964],{"class":98,"line":99},[96,954,850],{"class":102},[96,956,853],{"class":106},[96,958,959],{"class":106}," xml",[96,961,930],{"class":106},[96,963,883],{"class":106},[96,965,966],{"class":158},"   #是输出该功能包里的packages.xml的内容\n",[15,968,969],{},[18,970],{"alt":20,"src":971},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image272.webp",[10,973,975],{"id":974},"core-module_communication-related","Core Module_Communication Related",[15,977,978],{},[18,979],{"alt":20,"src":980},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image273.webp",[15,982,983],{},[18,984],{"alt":20,"src":985},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image274.webp",[15,987,988],{},"The communication module has been encapsulated into the feature package.",[15,990,991],{},[18,992],{"alt":20,"src":993},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image275.webp",[15,995,996],{},[18,997],{"alt":20,"src":998},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image276.webp",[15,1000,1001],{},"For example",[15,1003,1004],{},[18,1005],{"alt":20,"src":1006},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image277.webp",[15,1008,1009],{},[18,1010],{"alt":20,"src":1011},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image278.webp",[15,1013,1014,1015,1018],{},"You'll find a huge amount of content; you can use ",[29,1016,1017],{},"grep"," to search further.",[15,1020,1021],{},[18,1022],{"alt":20,"src":1023},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image279.webp",[15,1025,1026],{},[18,1027],{"alt":20,"src":1028},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image280.webp",[15,1030,1031],{},[18,1032],{"alt":20,"src":1033},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image281.webp",[15,1035,1036],{},[18,1037],{"alt":20,"src":1038},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image282.webp",[15,1040,1041],{},[18,1042],{"alt":20,"src":1043},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image283.webp",[15,1045,1046],{},"Use -b to download a branch",[15,1048,1049],{},[18,1050],{"alt":20,"src":1051},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image284.webp",[15,1053,1054],{},[18,1055],{"alt":20,"src":1056},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image285.webp",[15,1058,1059],{},"There's a warning because two function packages are both named humble.",[15,1061,1062,1063,524],{},"If overriding is allowed, add the parameter ",[29,1064,1065],{},"--allow-overriding",[15,1067,1068],{},[18,1069],{"alt":20,"src":1070},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image286.webp",[15,1072,1073],{},[18,1074],{"alt":20,"src":1075},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image287.webp",[15,1077,1078],{},[18,1079],{"alt":20,"src":1080},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image288.webp",[15,1082,1083],{},[18,1084],{"alt":20,"src":1085},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image289.webp",[15,1087,1088],{},"Like a \"Hello World\" example.",[15,1090,1091],{},[18,1092],{"alt":20,"src":1093},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image290.webp",[10,1095,1097],{"id":1096},"core-modules_tools-related","Core Modules_Tools Related",[15,1099,1100],{},[18,1101],{"alt":20,"src":1102},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image291.webp",[15,1104,1105],{},[18,1106],{"alt":20,"src":1107},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image292.webp",[15,1109,1110],{},[18,1111],{"alt":20,"src":1112},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image293.webp",[15,1114,1115,1118],{},[18,1116],{"alt":20,"src":1117},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image294.webp",[18,1119],{"alt":20,"src":1120},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image295.webp",[15,1122,1123],{},[18,1124],{"alt":20,"src":1125},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image296.webp",[15,1127,1128],{},"The command line is more convenient than graphical tools in some situations, and when logging in remotely, only the command line is available.",[15,1130,1131],{},[18,1132],{"alt":20,"src":1133},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image297.webp",[15,1135,1136],{},[18,1137],{"alt":20,"src":1138},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image298.webp",[15,1140,1141],{},"Launch files are now Python files in ROS2.",[15,1143,1144],{},[18,1145],{"alt":20,"src":1146},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image299.webp",[15,1148,1149],{},"Camera is the position of the camera, Base_Link is the position of the vehicle body, and Laser is the position of the LiDAR.",[15,1151,1152],{},"The distance information detected by the radar is converted into the position information of the vehicle body.",[15,1154,1155],{},[18,1156],{"alt":20,"src":1157},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image300.webp",[15,1159,1160],{},[18,1161],{"alt":20,"src":1162},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image301.webp",[15,1164,1165],{},[18,1166],{"alt":20,"src":1167},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image302.webp",[15,1169,1170],{},[18,1171],{"alt":20,"src":1172},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image303.webp",[10,1174,1176],{"id":1175},"feature-package","Feature package",[15,1178,1179],{},[18,1180],{"alt":20,"src":1181},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image304.webp",[15,1183,1184],{},[18,1185],{"alt":20,"src":1186},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image305.webp",[15,1188,1189],{},[18,1190],{"alt":20,"src":1191},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image306.webp",[15,1193,1194],{},[18,1195],{"alt":20,"src":1196},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image307.webp",[15,1198,1199],{},[18,1200],{"alt":20,"src":1201},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image308.webp",[15,1203,1204],{},[18,1205],{"alt":20,"src":1206},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image309.webp",[15,1208,1209],{},[18,1210],{"alt":20,"src":1211},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image310.webp",[15,1213,1214],{},[18,1215],{"alt":20,"src":1216},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image311.webp",[15,1218,1219,1220,1223],{},"Python is an interpreted language, so it doesn't require compilation. However, it does need a ",[29,1221,1222],{},"setup.py"," file, whose main function is to move executable files to the install directory.",[10,1225,1227],{"id":1226},"ros2-technical-support","ROS2 technical support",[15,1229,1230],{},"ROS2_Wiki official website",[15,1232,1233],{},[518,1234,1235],{"href":1235,"rel":1236},"http://wiki.ros.org/",[522],[15,1238,1239],{},"ROS2_Wiki Chinese Official Site (ROS2 Wikipedia now supports Simplified Chinese)",[15,1241,1242],{},[518,1243,1244],{"href":1244,"rel":1245},"http://wiki.ros.org/cn",[522],[15,1247,1248],{},"ROS2 Simplified Chinese Community",[15,1250,1251],{},[518,1252,1253],{"href":1253,"rel":1254},"http://wiki.ros.org/cn/community",[522],[15,1256,1257],{},"ROS2 plugin index URL:",[15,1259,1260],{},[518,1261,1262],{"href":1262,"rel":1263},"https://index.ros.org/packages/",[522],[15,1265,1266],{},[18,1267],{"alt":20,"src":1268},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image312.webp",[15,1270,1271],{},[18,1272],{"alt":20,"src":1273},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image313.webp",[15,1275,1276],{},[18,1277],{"alt":20,"src":1278},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image314.webp",[15,1280,1281],{},[18,1282],{"alt":20,"src":1283},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image315.webp",[15,1285,1286],{},[18,1287],{"alt":20,"src":1288},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image316.webp",[15,1290,1291],{},[18,1292],{"alt":20,"src":1293},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image317.webp",[15,1295,1296],{},[18,1297],{"alt":20,"src":1298},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image318.webp",[15,1300,1301],{},[18,1302],{"alt":20,"src":1303},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image319.webp",[15,1305,1306],{},[18,1307],{"alt":20,"src":1308},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image320.webp",[15,1310,1311],{},[18,1312],{"alt":20,"src":1313},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image321.webp",[10,1315,1317],{"id":1316},"ros2-application-directions","ROS2 application directions",[15,1319,1320],{},"Many ROS teams have grown alongside ROS to this day, and their scale has developed to the point where they can be considered independent organizations. They have excelled in numerous fields such as navigation, robotic arms, autonomous driving, and drones. Below are some of these team projects, which also provide guidance for our future advanced development.",[15,1322,1323],{},"ROS2 Community:",[15,1325,1326],{},[518,1327,1328],{"href":1328,"rel":1329},"https://www.ros.org/blog/community/",[522],[15,1331,1332],{},[18,1333],{"alt":20,"src":1334},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image322.webp",[43,1336],{},[1338,1339,1341],"h4",{"id":1340},"nav2",[1342,1343,1344],"strong",{},"NAV2",[15,1346,1347],{},"The Nav2 project is inherited from the ROS Navigation Stack. It is designed to enable a mobile robot to safely navigate from point A to point B. It can also be applied to other robot navigation tasks, such as following a dynamic point. Nav2 is used to implement a range of functions including path planning, motion control, dynamic obstacle avoidance, and recovery behaviors.",[15,1349,1350],{},"NAV2 official website:",[15,1352,1353],{},[518,1354,1355],{"href":1355,"rel":1356},"https://navigation.ros.org/",[522],[15,1358,1359],{},[18,1360],{"alt":20,"src":1361},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image323.webp",[43,1363],{},[1338,1365,1367],{"id":1366},"opencv",[1342,1368,1369],{},"OpenCV",[15,1371,1372],{},"OpenCV (Open Source Computer Vision Library) is an open-source computer vision and machine learning software library. OpenCV is designed to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in commercial products. OpenCV allows businesses to easily use and modify the code.",[15,1374,1375],{},"OpenCV official website:",[15,1377,1378],{},[518,1379,1380],{"href":1380,"rel":1381},"https://opencv.org/",[522],[15,1383,1384,1385],{},"Tutorial: ",[518,1386,1389],{"href":1387,"rel":1388},"https://sdutvincirobot.feishu.cn/docx/K7gxdJjSFoAjerxTzaNcH3ufnpb",[522],"OpenCV Tutorial",[15,1391,1392],{},[18,1393],{"alt":20,"src":1394},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image324.webp",[43,1396],{},[1338,1398,1400],{"id":1399},"moveit",[1342,1401,1402],{},"MoveIt",[15,1404,1405],{},"MoveIt is a set of ROS packages that primarily includes motion planning, collision detection, kinematics, 3D perception, manipulation control, and other features. It can be used to build high-level behaviors for robotic arms. MoveIt is now compatible with most robotic arms on the market and is used by many large companies.",[15,1407,1408],{},[518,1409,1410],{"href":1410,"rel":1411},"https://moveit.ros.org/",[522],[15,1413,1414],{},[18,1415],{"alt":20,"src":1416},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image325.webp",[43,1418],{},[1338,1420,1422],{"id":1421},"the-autoware-foundation",[1342,1423,1424],{},"The Autoware Foundation",[15,1426,1427],{},"The Autoware Foundation is a non-profit organization under ROS that supports open-source projects for autonomous driving. The Autoware Foundation creates synergy between corporate development and academic research, making autonomous driving technology accessible to everyone.",[15,1429,1430],{},"TAF official website:",[15,1432,1433],{},[518,1434,1435],{"href":1435,"rel":1436},"https://www.autoware.org/",[522],[15,1438,1439],{},[18,1440],{"alt":20,"src":1441},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image326.webp",[43,1443],{},[1338,1445,1447],{"id":1446},"f1-tenth",[1342,1448,1449],{},"F1 Tenth",[15,1451,1452],{},"F1 Tenth is a racing competition that converts model cars into autonomous vehicles, and it is an international community of researchers, engineers, and autonomous systems enthusiasts. It was originally founded in 2016 at the University of Pennsylvania but has since expanded to many other institutions around the world.",[15,1454,1455],{},"F1 Tenth official website:",[15,1457,1458],{},[518,1459,1460],{"href":1460,"rel":1461},"https://f1tenth.org/",[522],[15,1463,1464],{},[18,1465],{"alt":20,"src":1466},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image327.webp",[43,1468],{},[1338,1470,1472],{"id":1471},"microros",[1342,1473,1474],{},"microROS",[15,1476,1477],{},"In ROS-based robotic applications, micro-ROS is bridging the gap between performance-limited microcontrollers and general-purpose processors. micro-ROS runs on various embedded hardware, enabling ROS to be applied directly to robotic hardware.",[15,1479,1480],{},"MicroROS official website:",[15,1482,1483],{},[518,1484,1485],{"href":1485,"rel":1486},"https://micro.ros.org/",[522],[15,1488,1489],{},[18,1490],{"alt":20,"src":1491},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image328.webp",[43,1493],{},[1338,1495,1497],{"id":1496},"open-robotics",[1342,1498,1499],{},"Open Robotics",[15,1501,1502],{},"Open Robotics collaborates with the global ROS community to create open software and hardware platforms for robotics, including ROS1, ROS2, the Gazebo simulator, and the Ignition simulator. Open Robotics uses these platforms to address key challenges and helps others do the same by providing software and hardware development services to a variety of client organizations.",[15,1504,1505],{},"Open Robotics official website:",[15,1507,1508],{},[518,1509,1510],{"href":1510,"rel":1511},"https://www.openrobotics.org/",[522],[15,1513,1514],{},[18,1515],{"alt":20,"src":1516},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image329.webp",[43,1518],{},[1338,1520,1522],{"id":1521},"px4",[1342,1523,1524],{},"PX4",[15,1526,1527],{},"PX4 is an open-source flight control software for drones and other unmanned vehicles. The project provides drone developers with a flexible set of tools for sharing technology and creating tailored solutions for drone applications.",[15,1529,1530],{},"PX4 official website:",[15,1532,1533],{},[518,1534,1535],{"href":1535,"rel":1536},"https://px4.io/",[522],[15,1538,1539],{},[18,1540],{"alt":20,"src":1541},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image330.webp",[43,1543],{},[1338,1545,1547],{"id":1546},"ros-industrial",[1342,1548,1549],{},"ROS-Industrial",[15,1551,1552],{},"ROS-Industrial is an open-source project that extends the advanced capabilities of ROS software to industrial-related hardware and applications.",[15,1554,1555],{},[518,1556,1557],{"href":1557,"rel":1558},"https://rosindustrial.org/",[522],[15,1560,1561],{},[18,1562],{"alt":20,"src":1563},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image331.webp",[1565,1566,1567],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":20,"searchDepth":113,"depth":113,"links":1569},[1570,1571,1572,1573,1574,1575,1576,1577,1578],{"id":12,"depth":122,"text":13},{"id":182,"depth":122,"text":183},{"id":705,"depth":122,"text":706},{"id":803,"depth":122,"text":804},{"id":974,"depth":122,"text":975},{"id":1096,"depth":122,"text":1097},{"id":1175,"depth":122,"text":1176},{"id":1226,"depth":122,"text":1227},{"id":1316,"depth":122,"text":1317},"/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","3",3000000,"2023-12-30","wiki/2023-12-30-ros2-tutorial","en-us:2023-12-30-ros2-tutorial","/en-us/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包",false,null,"en-US","en-us",{},{"title":5,"description":20},"/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","r3RY8GjOwTaq6TQsheAcX4JTCldya1OQsx98kfNUoFI",[1599,1605,1610,1616,1622,1628,1634,1640,1646,1652,1658,1664,1670,1676,1682,1688,1694,1700,1705,1711,1716,1722,1728,1734,1740,1746,1752,1758,1764,1770,1776,1782,1788,1794,1800,1806,1812,1818,1824,1830,1836,1842,1848,1854,1860,1866,1872,1878,1884,1890,1896,1902,1907,1908,1914,1920,1926,1932,1938,1944],{"path":1600,"stem":1601,"title":1602,"date":1582,"chapter":1603,"chapterSort":1604,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","Introduction to ROS2","1",1000000,{"path":1606,"stem":1607,"title":1608,"date":1582,"chapter":623,"chapterSort":1609,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2 Simulation Platform",10000000,{"path":1611,"stem":1612,"title":1613,"date":1582,"chapter":1614,"chapterSort":1615,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":1617,"stem":1618,"title":1619,"date":1582,"chapter":1620,"chapterSort":1621,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":1623,"stem":1624,"title":1625,"date":1582,"chapter":1626,"chapterSort":1627,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":1629,"stem":1630,"title":1631,"date":1582,"chapter":1632,"chapterSort":1633,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","Migrate Ign Gazebo to Gz Sim","11.4",11040000,{"path":1635,"stem":1636,"title":1637,"date":1582,"chapter":1638,"chapterSort":1639,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gazebo simulation platform","11",11000000,{"path":1641,"stem":1642,"title":1643,"date":1582,"chapter":1644,"chapterSort":1645,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-1-humble-ban-ben","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-1-Humble版本","Humble Navigation Simulation","12.1",12010000,{"path":1647,"stem":1648,"title":1649,"date":1582,"chapter":1650,"chapterSort":1651,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-2-jazzy-ban-ben","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-2-Jazzy版本","Jazzy Navigation Simulation","12.2",12020000,{"path":1653,"stem":1654,"title":1655,"date":1582,"chapter":1656,"chapterSort":1657,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-3-humble2jazzy","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-3-Humble2Jazzy","Differences in Navigation between Humble and Jazzy","12.3",12030000,{"path":1659,"stem":1660,"title":1661,"date":1582,"chapter":1662,"chapterSort":1663,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","Robot Navigation with Navigation2 (Simulation)","12",12000000,{"path":1665,"stem":1666,"title":1667,"date":1582,"chapter":1668,"chapterSort":1669,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-1-Boost.Aiso","Boost.Asio库","13.1.1",13010100,{"path":1671,"stem":1672,"title":1673,"date":1582,"chapter":1674,"chapterSort":1675,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2-serial-driver","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2_serial_driver","ROS2 Serial Driver Library","13.1.2",13010200,{"path":1677,"stem":1678,"title":1679,"date":1582,"chapter":1680,"chapterSort":1681,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-chuan-kou-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-串口通信","UART serial communication","13.1",13010000,{"path":1683,"stem":1684,"title":1685,"date":1582,"chapter":1686,"chapterSort":1687,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","SocketCAN","13.2.1",13020100,{"path":1689,"stem":1690,"title":1691,"date":1582,"chapter":1692,"chapterSort":1693,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2-socketcan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2_socketcan","ROS2_SocketCAN","13.2.2",13020200,{"path":1695,"stem":1696,"title":1697,"date":1582,"chapter":1698,"chapterSort":1699,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信","CAN communication","13.2",13020000,{"path":1701,"stem":1702,"title":1667,"date":1582,"chapter":1703,"chapterSort":1704,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-1-Boost.Aiso","13.3.1",13030100,{"path":1706,"stem":1707,"title":1708,"date":1582,"chapter":1709,"chapterSort":1710,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-tcp-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-TCP通信","TCP communication","13.3",13030000,{"path":1712,"stem":1713,"title":1667,"date":1582,"chapter":1714,"chapterSort":1715,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-1-Boost.Aiso","13.4.1",13040100,{"path":1717,"stem":1718,"title":1719,"date":1582,"chapter":1720,"chapterSort":1721,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信","UDP communication","13.4",13040000,{"path":1723,"stem":1724,"title":1725,"date":1582,"chapter":1726,"chapterSort":1727,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-linux-ying-jian-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-Linux硬件通信","Linux hardware communication","13",13000000,{"path":1729,"stem":1730,"title":1731,"date":1582,"chapter":1732,"chapterSort":1733,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-1-ji-qi-ren-zu-cheng","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-1-机器人组成","Robot Composition","14.1",14010000,{"path":1735,"stem":1736,"title":1737,"date":1582,"chapter":1738,"chapterSort":1739,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-1-yuan-cheng-kai-fa-ssh","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-1-远程开发SSH","Remote Development SSH","14.2.1",14020100,{"path":1741,"stem":1742,"title":1743,"date":1582,"chapter":1744,"chapterSort":1745,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-2-yuan-cheng-fang-wen-zhuo-mian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-2-远程访问桌面","Remote Desktop Access","14.2.2",14020200,{"path":1747,"stem":1748,"title":1749,"date":1582,"chapter":1750,"chapterSort":1751,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-工控机之远程开发环境","Remote Development Environment for Industrial PC","14.2",14020000,{"path":1753,"stem":1754,"title":1755,"date":1582,"chapter":1756,"chapterSort":1757,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-3-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-3-工控机之外接USB设备","External USB Devices for the Industrial PC","14.3",14030000,{"path":1759,"stem":1760,"title":1761,"date":1582,"chapter":1762,"chapterSort":1763,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-4-fen-bu-shi-da-jian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-4-分布式搭建","Distributed setup","14.4",14040000,{"path":1765,"stem":1766,"title":1767,"date":1582,"chapter":1768,"chapterSort":1769,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-5-you-hua-ri-zhi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-5-优化日志","Optimize logs","14.5",14050000,{"path":1771,"stem":1772,"title":1773,"date":1582,"chapter":1774,"chapterSort":1775,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-1-li-cheng-ji-odom","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-1-里程计Odom","odometry","14.6.1",14060100,{"path":1777,"stem":1778,"title":1779,"date":1582,"chapter":1780,"chapterSort":1781,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-2-guan-xing-ji-imu","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-2-惯性计IMU","Inertial Measurement Unit (IMU)","14.6.2",14060200,{"path":1783,"stem":1784,"title":1785,"date":1582,"chapter":1786,"chapterSort":1787,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-3-ji-guang-lei-da-lidar","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-3-激光雷达LiDAR","LiDAR","14.6.3",14060300,{"path":1789,"stem":1790,"title":1791,"date":1582,"chapter":1792,"chapterSort":1793,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-4-xiang-ji-camera","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-4-相机Camera","Camera","14.6.4",14060400,{"path":1795,"stem":1796,"title":1797,"date":1582,"chapter":1798,"chapterSort":1799,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-5-quan-qiu-ding-wei-gnss","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-5-全球定位GNSS","Global Navigation Satellite System (GNSS)","14.6.5",14060500,{"path":1801,"stem":1802,"title":1803,"date":1582,"chapter":1804,"chapterSort":1805,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-6-shou-bing-joy","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-6-手柄joy","The query \"手柄JOY\" is a bit ambiguous. To help you better, could you please provide more details? For example:","14.6.6",14060600,{"path":1807,"stem":1808,"title":1809,"date":1582,"chapter":1810,"chapterSort":1811,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-7-jian-pan-kong-zhi-jie-dian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-7-键盘控制节点","Keyboard control node","14.6.7",14060700,{"path":1813,"stem":1814,"title":1815,"date":1582,"chapter":1816,"chapterSort":1817,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-ying-jian-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-硬件平台","Hardware platform","14.6",14060000,{"path":1819,"stem":1820,"title":1821,"date":1582,"chapter":1822,"chapterSort":1823,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-7-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-7-坐标系与话题关系","Coordinate System and Topic Relationship","14.7",14070000,{"path":1825,"stem":1826,"title":1827,"date":1582,"chapter":1828,"chapterSort":1829,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-lun-shi-li-cheng-ji-biao-ding","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-轮式里程计标定","Wheel odometry calibration","14.8.1.1",14080101,{"path":1831,"stem":1832,"title":1833,"date":1582,"chapter":1834,"chapterSort":1835,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-轮式里程计与IMU融合","Fusion of Wheel Odometry and IMU","14.8.1.2",14080102,{"path":1837,"stem":1838,"title":1839,"date":1582,"chapter":1840,"chapterSort":1841,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-轮式里程计标定与融合","Wheel odometry calibration and fusion","14.8.1",14080100,{"path":1843,"stem":1844,"title":1845,"date":1582,"chapter":1846,"chapterSort":1847,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-2-ji-guang-lei-da-gong-ju","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-2-激光雷达工具","Lidar Tool","14.8.2",14080200,{"path":1849,"stem":1850,"title":1851,"date":1582,"chapter":1852,"chapterSort":1853,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-3-xiang-ji-shi-yong-jin-jie","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-3-相机使用进阶","Advanced Camera Usage","14.8.3",14080300,{"path":1855,"stem":1856,"title":1857,"date":1582,"chapter":1858,"chapterSort":1859,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-ying-jian-ping-tai-jin-jie","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-硬件平台进阶","Advanced Hardware Platform","14.8",14080000,{"path":1861,"stem":1862,"title":1863,"date":1582,"chapter":1864,"chapterSort":1865,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","Robot hardware","14",14000000,{"path":1867,"stem":1868,"title":1869,"date":1582,"chapter":1870,"chapterSort":1871,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":1873,"stem":1874,"title":1875,"date":1582,"chapter":1876,"chapterSort":1877,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂","MoveIt2 industrial robot arm","16",16000000,{"path":1879,"stem":1880,"title":1881,"date":1582,"chapter":1882,"chapterSort":1883,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","Robot Navigation with Navigation2 (Physical Robot)","17",17000000,{"path":1885,"stem":1886,"title":1887,"date":1582,"chapter":1888,"chapterSort":1889,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch18-microros","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":1891,"stem":1892,"title":1893,"date":1582,"chapter":1894,"chapterSort":1895,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots simulation platform","19",19000000,{"path":1897,"stem":1898,"title":1899,"date":1582,"chapter":1900,"chapterSort":1901,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch2-入门操作","Getting Started","2",2000000,{"path":1903,"stem":1904,"title":1369,"date":1582,"chapter":1905,"chapterSort":1906,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch20-opencv","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","20",20000000,{"path":1579,"stem":1596,"title":5,"date":1582,"chapter":1580,"chapterSort":1581,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},{"path":1909,"stem":1910,"title":1911,"date":1582,"chapter":1912,"chapterSort":1913,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch4-四大通信","Four Major Communications","4",4000000,{"path":1915,"stem":1916,"title":1917,"date":1582,"chapter":1918,"chapterSort":1919,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","ROS2 Other Communication Mechanisms","5",5000000,{"path":1921,"stem":1922,"title":1923,"date":1582,"chapter":1924,"chapterSort":1925,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch6-launch","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":1927,"stem":1928,"title":1929,"date":1582,"chapter":1930,"chapterSort":1931,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","Replaying rosbag2","7",7000000,{"path":1933,"stem":1934,"title":1935,"date":1582,"chapter":1936,"chapterSort":1937,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","Coordinate Transformation TF","8",8000000,{"path":1939,"stem":1940,"title":1941,"date":1582,"chapter":1942,"chapterSort":1943,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":1589},"/en-us/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","Visualization Platform RVIZ2 and URDF Modeling Language","9",9000000,{"path":1585,"stem":1945,"title":1946,"date":1582,"chapter":1590,"chapterSort":1947,"docKey":1584,"docRoot":1585,"docTitle":1586,"isWikiDoc":224,"isWikiIndex":224},"_i18n/en-us/wiki/2023-12-30-ros2-tutorial/index","ROS2 Robot Operating System Tutorial",0,{"variants":1949},[1950,1951,1954,1957,1960],{"path":1579,"localeSlug":1592,"i18nKey":1588},{"path":1952,"localeSlug":1953,"i18nKey":1588},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","zh-hant",{"path":1955,"localeSlug":1956,"i18nKey":1588},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","zh-hk",{"path":1958,"localeSlug":1959,"i18nKey":1588},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","zh-tw",{"path":1961,"localeSlug":1962,"i18nKey":1588},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","zh-cn",[1579,1595,1952,1595,1955,1595,1958,1595,1961,1595],1780671798075]