[{"data":1,"prerenderedAt":2932},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo":2623,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo":2916,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo":2931},{"id":4,"title":5,"body":6,"canonicalPath":2604,"chapterDepth":2605,"chapterOrder":2606,"date":2607,"description":19,"docI18nKey":2608,"docKey":2609,"docRoot":2610,"docTitle":2611,"extension":2612,"i18nKey":2613,"isBlogPost":2614,"isWikiDoc":860,"isWikiIndex":2614,"layout":2615,"legacyPath":2615,"locale":2616,"localeSlug":2617,"meta":2618,"navigation":860,"path":2604,"seo":2619,"sourcePath":2620,"sourceStem":2613,"stem":2621,"wikiDepth":74,"__hash__":2622},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作.md","入門操作",{"type":7,"value":8,"toc":2591},"minimark",[9,13,21,26,31,36,41,44,49,57,62,106,109,114,134,139,144,147,152,169,177,205,210,213,218,221,224,227,230,233,235,240,245,248,253,258,261,266,271,274,279,281,286,291,296,299,304,334,339,344,368,373,378,383,413,416,419,424,427,430,434,439,444,449,452,457,462,465,468,504,509,514,517,522,525,530,535,540,543,546,549,554,557,560,563,566,569,572,577,582,585,588,591,596,599,604,619,624,639,642,647,650,655,663,668,673,678,683,687,692,722,725,730,735,740,743,748,751,756,761,766,769,772,777,780,785,790,793,798,810,813,828,833,835,840,944,949,954,959,963,968,973,976,981,986,989,993,998,1006,1014,1022,1025,1028,1033,1036,1041,1044,1052,1055,1060,1063,1068,1071,1076,1079,1081,1086,1091,1096,1099,1104,1109,1114,1119,1124,1164,1169,1172,1177,1182,1184,1187,1192,1197,1200,1205,1210,1215,1218,1223,1226,1231,1234,1239,1241,1246,1251,1256,1261,1263,1266,1271,1274,1277,1280,1285,1290,1293,1298,1303,1308,1313,1317,1322,1325,1330,1356,1361,1365,1370,1378,1381,1384,1387,1451,1476,1483,1488,1491,1513,1527,1534,1568,1571,1576,1579,1584,1587,1592,1597,1602,1605,1610,1613,1618,1621,1624,1629,1648,1653,1801,1804,1827,1838,2146,2155,2158,2175,2179,2182,2185,2188,2289,2498,2520,2523,2526,2529,2532,2537,2544,2548,2553,2558,2563,2568,2571,2574,2577,2582,2587],[10,11,12],"h3",{"id":12},"簡介",[14,15,16],"p",{},[17,18],"img",{"alt":19,"src":20},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage83.webp",[14,22,23],{},[17,24],{"alt":19,"src":25},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage84.webp",[14,27,28],{},[17,29],{"alt":19,"src":30},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage85.webp",[14,32,33],{},[17,34],{"alt":19,"src":35},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage86.webp",[14,37,38],{},[17,39],{"alt":19,"src":40},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage87.webp",[10,42,43],{"id":43},"終端環境搭建",[14,45,46],{},[17,47],{"alt":19,"src":48},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage88.webp",[14,50,51,52,56],{},"如果在上方安裝ROS2的時候，已經將該語句添加到",[53,54,55],"code",{},"~\u002F.bashrc","了，則不必再跟着這步操作了。",[14,58,59],{},[17,60],{"alt":19,"src":61},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage89.webp",[63,64,68],"pre",{"className":65,"code":66,"language":67,"meta":19,"style":19},"language-bash shiki shiki-themes github-light github-dark","source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash  #将ROS2环境变量配置到当前位置\necho \" source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash\" >> ~\u002F.bashrc    #每次启动终端都会运行该句\n","bash",[53,69,70,87],{"__ignoreMap":19},[71,72,75,79,83],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sj4cs","source",[71,80,82],{"class":81},"sZZnC"," \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash",[71,84,86],{"class":85},"sJ8bj","  #将ROS2环境变量配置到当前位置\n",[71,88,90,93,96,100,103],{"class":73,"line":89},2,[71,91,92],{"class":77},"echo",[71,94,95],{"class":81}," \" source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash\"",[71,97,99],{"class":98},"szBVR"," >>",[71,101,102],{"class":81}," ~\u002F.bashrc",[71,104,105],{"class":85},"    #每次启动终端都会运行该句\n",[107,108],"hr",{},[14,110,111],{},[17,112],{"alt":19,"src":113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage90.webp",[63,115,117],{"className":65,"code":116,"language":67,"meta":19,"style":19},"ros2 run demo_nodes_cpp talker\n",[53,118,119],{"__ignoreMap":19},[71,120,121,125,128,131],{"class":73,"line":74},[71,122,124],{"class":123},"sScJk","ros2",[71,126,127],{"class":81}," run",[71,129,130],{"class":81}," demo_nodes_cpp",[71,132,133],{"class":81}," talker\n",[14,135,136],{},[17,137],{"alt":19,"src":138},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage91.webp",[14,140,141],{},[17,142],{"alt":19,"src":143},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage92.webp",[14,145,146],{},"用ctrl+c來進行取消程序運行",[14,148,149],{},[17,150],{"alt":19,"src":151},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage93.webp",[63,153,155],{"className":65,"code":154,"language":67,"meta":19,"style":19},"ros2 run demo_nodes_py listener\n",[53,156,157],{"__ignoreMap":19},[71,158,159,161,163,166],{"class":73,"line":74},[71,160,124],{"class":123},[71,162,127],{"class":81},[71,164,165],{"class":81}," demo_nodes_py",[71,167,168],{"class":81}," listener\n",[14,170,171,174],{},[17,172],{"alt":19,"src":173},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage94.webp",[17,175],{"alt":19,"src":176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage95.webp",[63,178,180],{"className":65,"code":179,"language":67,"meta":19,"style":19},"ros2 run turtlesim turtlesim_node\nros2 run turtlesim turtle_teleop_key\n",[53,181,182,194],{"__ignoreMap":19},[71,183,184,186,188,191],{"class":73,"line":74},[71,185,124],{"class":123},[71,187,127],{"class":81},[71,189,190],{"class":81}," turtlesim",[71,192,193],{"class":81}," turtlesim_node\n",[71,195,196,198,200,202],{"class":73,"line":89},[71,197,124],{"class":123},[71,199,127],{"class":81},[71,201,190],{"class":81},[71,203,204],{"class":81}," turtle_teleop_key\n",[14,206,207],{},[17,208],{"alt":19,"src":209},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage96.webp",[10,211,212],{"id":212},"命令行操作",[14,214,215],{},[17,216],{"alt":19,"src":217},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage97.webp",[14,219,220],{},"mkdir -p 新建文件夾",[14,222,223],{},"rm -R 遞歸刪除（刪掉文件夾及裏面包含的文件夾及文件）",[14,225,226],{},"touch 新建文件",[14,228,229],{},"rm 刪除文件",[14,231,232],{},"cd ..退回上級目錄（cd 點點）",[107,234],{},[14,236,237],{},[17,238],{"alt":19,"src":239},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage98.webp",[14,241,242],{},[17,243],{"alt":19,"src":244},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage99.webp",[14,246,247],{},"會彈提示信息，告訴我們後面要跟的參數",[14,249,250],{},[17,251],{"alt":19,"src":252},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage100.webp",[14,254,255],{},[17,256],{"alt":19,"src":257},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage101.webp",[14,259,260],{},"ros2 node list會把當前ROS2正在運行的節點列出來",[14,262,263],{},[17,264],{"alt":19,"src":265},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage102.webp",[14,267,268],{},[17,269],{"alt":19,"src":270},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage103.webp",[14,272,273],{},"ros2 node info + \u002F節點名 可以查看目標節點的詳細情況",[14,275,276],{},[17,277],{"alt":19,"src":278},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage104.webp",[14,280,247],{},[14,282,283],{},[17,284],{"alt":19,"src":285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage105.webp",[14,287,288],{},[17,289],{"alt":19,"src":290},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage106.webp",[14,292,293],{},[17,294],{"alt":19,"src":295},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage107.webp",[14,297,298],{},"可以通過話題來顯示機器人運動的狀態",[14,300,301],{},[17,302],{"alt":19,"src":303},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage108.webp",[63,305,307],{"className":65,"code":306,"language":67,"meta":19,"style":19},"ros2 topic pub --rate 1 \u002Fturtle1\u002Fcmd_vel geometry_msgs\u002Fmsg\u002FTwist \"{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}\"\n",[53,308,309],{"__ignoreMap":19},[71,310,311,313,316,319,322,325,328,331],{"class":73,"line":74},[71,312,124],{"class":123},[71,314,315],{"class":81}," topic",[71,317,318],{"class":81}," pub",[71,320,321],{"class":77}," --rate",[71,323,324],{"class":77}," 1",[71,326,327],{"class":81}," \u002Fturtle1\u002Fcmd_vel",[71,329,330],{"class":81}," geometry_msgs\u002Fmsg\u002FTwist",[71,332,333],{"class":81}," \"{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}\"\n",[14,335,336],{},[17,337],{"alt":19,"src":338},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage109.webp",[14,340,341],{},[17,342],{"alt":19,"src":343},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage110.webp",[63,345,347],{"className":65,"code":346,"language":67,"meta":19,"style":19},"ros2 service call \u002Fspawn turtlesim\u002Fsrv\u002FSpawn \"{x: 2, y: 2, theta: 0.2, name: ''}\"\n",[53,348,349],{"__ignoreMap":19},[71,350,351,353,356,359,362,365],{"class":73,"line":74},[71,352,124],{"class":123},[71,354,355],{"class":81}," service",[71,357,358],{"class":81}," call",[71,360,361],{"class":81}," \u002Fspawn",[71,363,364],{"class":81}," turtlesim\u002Fsrv\u002FSpawn",[71,366,367],{"class":81}," \"{x: 2, y: 2, theta: 0.2, name: ''}\"\n",[14,369,370],{},[17,371],{"alt":19,"src":372},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage111.webp",[14,374,375],{},[17,376],{"alt":19,"src":377},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage112.webp",[14,379,380],{},[17,381],{"alt":19,"src":382},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage113.webp",[63,384,386],{"className":65,"code":385,"language":67,"meta":19,"style":19},"ros2 bag record \u002Fturtle1\u002Fcmd_vel\nros2 bag play rosbag2_2022_04_11-17_35_40\u002Frosbag2_2022_04_11-17_35_40_0.db3\n",[53,387,388,401],{"__ignoreMap":19},[71,389,390,392,395,398],{"class":73,"line":74},[71,391,124],{"class":123},[71,393,394],{"class":81}," bag",[71,396,397],{"class":81}," record",[71,399,400],{"class":81}," \u002Fturtle1\u002Fcmd_vel\n",[71,402,403,405,407,410],{"class":73,"line":89},[71,404,124],{"class":123},[71,406,394],{"class":81},[71,408,409],{"class":81}," play",[71,411,412],{"class":81}," rosbag2_2022_04_11-17_35_40\u002Frosbag2_2022_04_11-17_35_40_0.db3\n",[14,414,415],{},"ros2 bag record + 話題",[14,417,418],{},"按Ctrl+C結束，然後錄製的數據在當前終端的目錄下",[14,420,421],{},[17,422],{"alt":19,"src":423},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage114.webp",[14,425,426],{},"如何去復現呢？",[14,428,429],{},"ros2 bag play + 文件夾名稱",[10,431,433],{"id":432},"ros2-helloworldc","ROS2 HelloWorld(C++)",[14,435,436],{},[17,437],{"alt":19,"src":438},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage115.webp",[14,440,441],{},[17,442],{"alt":19,"src":443},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage116.webp",[14,445,446],{},[17,447],{"alt":19,"src":448},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage117.webp",[14,450,451],{},"1.創建功能包",[14,453,454],{},[17,455],{"alt":19,"src":456},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage118.webp",[14,458,459],{},[17,460],{"alt":19,"src":461},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage119.webp",[14,463,464],{},"指令就是創建ros2的功能包",[14,466,467],{},"ros2 pkg create + 功能包名 + --build-type(構建類型) + ament_cmake \u002F ament_python + --dependencies（依賴） + rclcpp(ROS2的CPP客户端) + --node-name（節點名） + 節點名",[63,469,471],{"className":65,"code":470,"language":67,"meta":19,"style":19},"ros2 pkg create pkg01_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld\n",[53,472,473],{"__ignoreMap":19},[71,474,475,477,480,483,486,489,492,495,498,501],{"class":73,"line":74},[71,476,124],{"class":123},[71,478,479],{"class":81}," pkg",[71,481,482],{"class":81}," create",[71,484,485],{"class":81}," pkg01_helloworld_cpp",[71,487,488],{"class":77}," --build-type",[71,490,491],{"class":81}," ament_cmake",[71,493,494],{"class":77}," --dependencies",[71,496,497],{"class":81}," rclcpp",[71,499,500],{"class":77}," --node-name",[71,502,503],{"class":81}," helloworld\n",[14,505,506],{},[17,507],{"alt":19,"src":508},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage120.webp",[14,510,511],{},[17,512],{"alt":19,"src":513},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage121.webp",[14,515,516],{},"源文件自動生成了，文件名和我們指定的node name是一致的。",[14,518,519],{},[17,520],{"alt":19,"src":521},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage122.webp",[14,523,524],{},"這是自動生成的內容，但是和ROS2沒有任何關係。",[14,526,527],{},[17,528],{"alt":19,"src":529},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage123.webp",[14,531,532],{},[17,533],{"alt":19,"src":534},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage124.webp",[14,536,537],{},[17,538],{"alt":19,"src":539},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage125.webp",[14,541,542],{},"如果依賴的庫不止這一個，則再回車，",[14,544,545],{},"xxx",[14,547,548],{},"再添加下一個",[14,550,551],{},[17,552],{"alt":19,"src":553},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage126.webp",[14,555,556],{},"10行是查找包",[14,558,559],{},"12行是添加可執行的",[14,561,562],{},"add_executable 的第一個參數是 可執行文件的名字（默認和節點名一致，默認和源文件名一致） 第二個參數是源文件的名字",[14,564,565],{},"17行是為我們的可執行程序添加依賴 我們的可執行程序依賴於RCLCPP這個庫",[14,567,568],{},"22行是要為我們的可執行程序設立一個安裝目錄，創建在了當前功能包下的lib目錄，也就是 工作空間名\u002Finstall\u002F功能包名\u002Flib",[14,570,571],{},"編輯配置文件之後編譯，用cd..返回ws目錄",[14,573,574],{},[17,575],{"alt":19,"src":576},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage127.webp",[14,578,579],{},[17,580],{"alt":19,"src":581},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage128.webp",[14,583,584],{},"圖標為綠色，是沒有警告也沒有錯誤",[14,586,587],{},"是黃色的則有警告",[14,589,590],{},"是紅色的則有致命錯誤",[14,592,593],{},[17,594],{"alt":19,"src":595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage129.webp",[14,597,598],{},"可執行二進制文件的路徑",[14,600,601],{},[17,602],{"alt":19,"src":603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage130.webp",[63,605,607],{"className":65,"code":606,"language":67,"meta":19,"style":19},"source install\u002Fsetup.bash #刷新环境变量\n",[53,608,609],{"__ignoreMap":19},[71,610,611,613,616],{"class":73,"line":74},[71,612,78],{"class":77},[71,614,615],{"class":81}," install\u002Fsetup.bash",[71,617,618],{"class":85}," #刷新环境变量\n",[14,620,621],{},[17,622],{"alt":19,"src":623},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage131.webp",[63,625,627],{"className":65,"code":626,"language":67,"meta":19,"style":19},"ros2 run pkg01_helloworld_cpp helloworld\n",[53,628,629],{"__ignoreMap":19},[71,630,631,633,635,637],{"class":73,"line":74},[71,632,124],{"class":123},[71,634,127],{"class":81},[71,636,485],{"class":81},[71,638,503],{"class":81},[14,640,641],{},"ros2 run 功能包名稱 可執行文件名(默認和節點名一致)",[14,643,644],{},[17,645],{"alt":19,"src":646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage132.webp",[14,648,649],{},"編輯ROS2 C++源文件：",[14,651,652],{},[17,653],{"alt":19,"src":654},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage133.webp",[63,656,661],{"className":657,"code":659,"language":660},[658],"language-text","#include \"rclcpp\u002Frclcpp.hpp\"\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = rclcpp::Node::make_shared(\"helloworld_node\");\n\n  RCLCPP_INFO(node->get_logger(),\"hello world!\");\n\n  rclcpp::shutdown();\n\n  return 0;\n}\n","text",[53,662,659],{"__ignoreMap":19},[14,664,665],{},[17,666],{"alt":19,"src":667},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage134.webp",[14,669,670],{},[17,671],{"alt":19,"src":672},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage135.webp",[14,674,675],{},[17,676],{"alt":19,"src":677},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage136.webp",[14,679,680],{},[17,681],{"alt":19,"src":682},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage137.webp",[10,684,686],{"id":685},"ros2-helloworldpython","ROS2 HelloWorld(Python)",[14,688,689],{},[17,690],{"alt":19,"src":691},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage138.webp",[63,693,695],{"className":65,"code":694,"language":67,"meta":19,"style":19},"ros2 pkg create pkg02_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld\n",[53,696,697],{"__ignoreMap":19},[71,698,699,701,703,705,708,710,713,715,718,720],{"class":73,"line":74},[71,700,124],{"class":123},[71,702,479],{"class":81},[71,704,482],{"class":81},[71,706,707],{"class":81}," pkg02_helloworld_py",[71,709,488],{"class":77},[71,711,712],{"class":81}," ament_python",[71,714,494],{"class":77},[71,716,717],{"class":81}," rclpy",[71,719,500],{"class":77},[71,721,503],{"class":81},[14,723,724],{},"ros2 pkg create + 功能包名 + --build-type(構建類型) + ament_cmake \u002F ament_python + --dependencies（依賴） + rclpy(ROS2的Python客户端) + --node-name（節點名） + 節點名",[14,726,727],{},[17,728],{"alt":19,"src":729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage139.webp",[14,731,732],{},[17,733],{"alt":19,"src":734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage140.webp",[14,736,737],{},[17,738],{"alt":19,"src":739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage141.webp",[14,741,742],{},"與node name和可執行二進制文件同名",[14,744,745],{},[17,746],{"alt":19,"src":747},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage142.webp",[14,749,750],{},"默認這裏面已經有代碼，但是和ROS2無關，這是標準的python代碼",[14,752,753],{},[17,754],{"alt":19,"src":755},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage143.webp",[14,757,758],{},[17,759],{"alt":19,"src":760},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage144.webp",[14,762,763],{},[17,764],{"alt":19,"src":765},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage145.webp",[14,767,768],{},"二進制可執行文件 映射到 源文件的main函數",[14,770,771],{},"如何編譯呢？",[14,773,774],{},[17,775],{"alt":19,"src":776},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage146.webp",[14,778,779],{},"先返回上一級，來到ws目錄",[14,781,782],{},[17,783],{"alt":19,"src":784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage147.webp",[14,786,787],{},[17,788],{"alt":19,"src":789},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage148.webp",[14,791,792],{},"有個黃色警告，但是不影響我們使用。",[14,794,795],{},[17,796],{"alt":19,"src":797},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage149.webp",[63,799,801],{"className":65,"code":800,"language":67,"meta":19,"style":19},"source .\u002Finstall\u002Fsetup.bash\n",[53,802,803],{"__ignoreMap":19},[71,804,805,807],{"class":73,"line":74},[71,806,78],{"class":77},[71,808,809],{"class":81}," .\u002Finstall\u002Fsetup.bash\n",[14,811,812],{},"刷新環境變量",[63,814,816],{"className":65,"code":815,"language":67,"meta":19,"style":19},"ros2 run pkg02_helloworld_py helloworld\n",[53,817,818],{"__ignoreMap":19},[71,819,820,822,824,826],{"class":73,"line":74},[71,821,124],{"class":123},[71,823,127],{"class":81},[71,825,707],{"class":81},[71,827,503],{"class":81},[14,829,830],{},[17,831],{"alt":19,"src":832},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage150.webp",[107,834],{},[14,836,837],{},[17,838],{"alt":19,"src":839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage151.webp",[63,841,845],{"className":842,"code":843,"language":844,"meta":19,"style":19},"language-python shiki shiki-themes github-light github-dark","import rclpy\n\ndef main():\n    rclpy.init()\n    node = rclpy.create_node(\"helloworld_py_node\")\n    node.get_logger().info(\"hello world by python!\")\n    rclpy.shutdown()\n\nif name == '__main__':\n    main()\n","python",[53,846,847,856,862,874,880,898,909,915,920,938],{"__ignoreMap":19},[71,848,849,852],{"class":73,"line":74},[71,850,851],{"class":98},"import",[71,853,855],{"class":854},"sVt8B"," rclpy\n",[71,857,858],{"class":73,"line":89},[71,859,861],{"emptyLinePlaceholder":860},true,"\n",[71,863,865,868,871],{"class":73,"line":864},3,[71,866,867],{"class":98},"def",[71,869,870],{"class":123}," main",[71,872,873],{"class":854},"():\n",[71,875,877],{"class":73,"line":876},4,[71,878,879],{"class":854},"    rclpy.init()\n",[71,881,883,886,889,892,895],{"class":73,"line":882},5,[71,884,885],{"class":854},"    node ",[71,887,888],{"class":98},"=",[71,890,891],{"class":854}," rclpy.create_node(",[71,893,894],{"class":81},"\"helloworld_py_node\"",[71,896,897],{"class":854},")\n",[71,899,901,904,907],{"class":73,"line":900},6,[71,902,903],{"class":854},"    node.get_logger().info(",[71,905,906],{"class":81},"\"hello world by python!\"",[71,908,897],{"class":854},[71,910,912],{"class":73,"line":911},7,[71,913,914],{"class":854},"    rclpy.shutdown()\n",[71,916,918],{"class":73,"line":917},8,[71,919,861],{"emptyLinePlaceholder":860},[71,921,923,926,929,932,935],{"class":73,"line":922},9,[71,924,925],{"class":98},"if",[71,927,928],{"class":854}," name ",[71,930,931],{"class":98},"==",[71,933,934],{"class":81}," '__main__'",[71,936,937],{"class":854},":\n",[71,939,941],{"class":73,"line":940},10,[71,942,943],{"class":854},"    main()\n",[14,945,946],{},[17,947],{"alt":19,"src":948},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage152.webp",[14,950,951],{},[17,952],{"alt":19,"src":953},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage153.webp",[14,955,956],{},[17,957],{"alt":19,"src":958},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage154.webp",[10,960,962],{"id":961},"運行優化bash終端環境","運行優化(bash終端環境)",[14,964,965],{},[17,966],{"alt":19,"src":967},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage155.webp",[14,969,970],{},[17,971],{"alt":19,"src":972},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage156.webp",[14,974,975],{},"要使用絕對路徑",[14,977,978],{},[17,979],{"alt":19,"src":980},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage157.webp",[14,982,983],{},[17,984],{"alt":19,"src":985},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage158.webp",[14,987,988],{},"儘量不要這麼幹，ROS2有一個bug，就是不同工作空間的功能包可能會調用混亂，所以先不要搞全局的運行優化。",[10,990,992],{"id":991},"vscode環境搭建","VScode環境搭建",[14,994,995],{},[17,996],{"alt":19,"src":997},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage159.webp",[14,999,1000,1003],{},[17,1001],{"alt":19,"src":1002},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage160.webp",[17,1004],{"alt":19,"src":1005},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage161.webp",[14,1007,1008,1011],{},[17,1009],{"alt":19,"src":1010},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage162.webp",[17,1012],{"alt":19,"src":1013},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage163.webp",[14,1015,1016,1019],{},[17,1017],{"alt":19,"src":1018},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage164.webp",[17,1020],{"alt":19,"src":1021},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage165.webp",[14,1023,1024],{},"看C\u002FC++，Python，CMake，XML,YAML文件就可以代碼高亮顯示",[14,1026,1027],{},"在寫一些ROS2消息的代碼可以提供代碼補齊等操作",[14,1029,1030],{},[17,1031],{"alt":19,"src":1032},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage166.webp",[14,1034,1035],{},"編寫機器人模型所要用的插件，也可以進行代碼補齊",[14,1037,1038],{},[17,1039],{"alt":19,"src":1040},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage167.webp",[14,1042,1043],{},"ROS2經常生成PDF文件，可以通過這個插件來查看",[14,1045,1046,1049],{},[17,1047],{"alt":19,"src":1048},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage168.webp",[17,1050],{"alt":19,"src":1051},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage169.webp",[14,1053,1054],{},"ROS2插件建議等成熟之後再進行安裝",[14,1056,1057],{},[17,1058],{"alt":19,"src":1059},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage170.webp",[14,1061,1062],{},"這個官方插件可以嘗試安裝",[14,1064,1065],{},[17,1066],{"alt":19,"src":1067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage171.webp",[14,1069,1070],{},"人工智能代碼補全",[14,1072,1073],{},[17,1074],{"alt":19,"src":1075},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage172.webp",[14,1077,1078],{},"MarkDown高亮",[107,1080],{},[14,1082,1083],{},[17,1084],{"alt":19,"src":1085},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage173.webp",[14,1087,1088],{},[17,1089],{"alt":19,"src":1090},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage174.webp",[14,1092,1093],{},[17,1094],{"alt":19,"src":1095},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage175.webp",[14,1097,1098],{},"雖然報錯，但是程序是可以正常運行的。（主要是vscode找不到頭文件）",[14,1100,1101],{},[17,1102],{"alt":19,"src":1103},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage176.webp",[14,1105,1106],{},[17,1107],{"alt":19,"src":1108},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage177.webp",[14,1110,1111],{},[17,1112],{"alt":19,"src":1113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage178.webp",[14,1115,1116],{},[17,1117],{"alt":19,"src":1118},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage179.webp",[14,1120,1121],{},[17,1122],{"alt":19,"src":1123},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage180.webp",[63,1125,1129],{"className":1126,"code":1127,"language":1128,"meta":19,"style":19},"language-JSON shiki shiki-themes github-light github-dark","            \"includePath\": [\n                \"${default}\",\n                \"${workspaceFolder}\u002F**\",\n                \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\"\n            ],\n","JSON",[53,1130,1131,1139,1147,1154,1159],{"__ignoreMap":19},[71,1132,1133,1136],{"class":73,"line":74},[71,1134,1135],{"class":81},"            \"includePath\"",[71,1137,1138],{"class":854},": [\n",[71,1140,1141,1144],{"class":73,"line":89},[71,1142,1143],{"class":81},"                \"${default}\"",[71,1145,1146],{"class":854},",\n",[71,1148,1149,1152],{"class":73,"line":864},[71,1150,1151],{"class":81},"                \"${workspaceFolder}\u002F**\"",[71,1153,1146],{"class":854},[71,1155,1156],{"class":73,"line":876},[71,1157,1158],{"class":81},"                \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\"\n",[71,1160,1161],{"class":73,"line":882},[71,1162,1163],{"class":854},"            ],\n",[14,1165,1166],{},[17,1167],{"alt":19,"src":1168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage181.webp",[14,1170,1171],{},"\u002F**代表要包含該文件夾下的所有的子集",[14,1173,1174],{},[17,1175],{"alt":19,"src":1176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage182.webp",[14,1178,1179],{},[17,1180],{"alt":19,"src":1181},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage183.webp",[107,1183],{},[14,1185,1186],{},"按Ctrl + `（ESC底下的按鍵）把VSCODE終端打開",[14,1188,1189],{},[17,1190],{"alt":19,"src":1191},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage184.webp",[14,1193,1194],{},[17,1195],{"alt":19,"src":1196},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage185.webp",[14,1198,1199],{},"--node-name也是可選參數，如果不配置，則不會有源文件，也不會有可執行文件到源文件的映射",[14,1201,1202],{},[17,1203],{"alt":19,"src":1204},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage186.webp",[14,1206,1207],{},[17,1208],{"alt":19,"src":1209},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage187.webp",[14,1211,1212],{},[17,1213],{"alt":19,"src":1214},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage188.webp",[14,1216,1217],{},"不需要修改，已經默認生成好了",[14,1219,1220],{},[17,1221],{"alt":19,"src":1222},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage189.webp",[14,1224,1225],{},"再返回WS目錄進行編譯（但是此時編譯是編譯整個WS目錄下的所有功能包）",[14,1227,1228],{},[17,1229],{"alt":19,"src":1230},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage190.webp",[14,1232,1233],{},"刷新環境變量並運行",[14,1235,1236],{},[17,1237],{"alt":19,"src":1238},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage191.webp",[107,1240],{},[14,1242,1243],{},[17,1244],{"alt":19,"src":1245},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage192.webp",[14,1247,1248],{},[17,1249],{"alt":19,"src":1250},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage193.webp",[14,1252,1253],{},[17,1254],{"alt":19,"src":1255},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage194.webp",[14,1257,1258],{},[17,1259],{"alt":19,"src":1260},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage195.webp",[107,1262],{},[14,1264,1265],{},"如何在一個功能包裏添加多個源文件呢？",[14,1267,1268],{},[17,1269],{"alt":19,"src":1270},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage196.webp",[14,1272,1273],{},"新建一個新文件，比如hellovscode2.cpp",[14,1275,1276],{},"但是此時該文件是一個孤零零的文件，他沒有做任何的配置，對應的，編譯完之後也不會被執行。",[14,1278,1279],{},"我們想編譯執行該文件，必須配置相關的配置文件。",[14,1281,1282],{},[17,1283],{"alt":19,"src":1284},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage197.webp",[14,1286,1287],{},[17,1288],{"alt":19,"src":1289},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage198.webp",[14,1291,1292],{},"選中的這些用不着，可以刪掉",[14,1294,1295],{},[17,1296],{"alt":19,"src":1297},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage199.webp",[14,1299,1300],{},[17,1301],{"alt":19,"src":1302},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage200.webp",[14,1304,1305],{},[17,1306],{"alt":19,"src":1307},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage201.webp",[14,1309,1310],{},[17,1311],{"alt":19,"src":1312},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage202.webp",[10,1314,1316],{"id":1315},"運行優化colcon-build","運行優化(colcon build)",[14,1318,1319],{},[17,1320],{"alt":19,"src":1321},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage203.webp",[14,1323,1324],{},"平常會全編譯WS目錄下的文件",[14,1326,1327],{},[17,1328],{"alt":19,"src":1329},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage204.webp",[63,1331,1333],{"className":65,"code":1332,"language":67,"meta":19,"style":19},"colcon build --packages-select xxx xxx xxx #可以指向多个包\n",[53,1334,1335],{"__ignoreMap":19},[71,1336,1337,1340,1343,1346,1349,1351,1353],{"class":73,"line":74},[71,1338,1339],{"class":123},"colcon",[71,1341,1342],{"class":81}," build",[71,1344,1345],{"class":77}," --packages-select",[71,1347,1348],{"class":81}," xxx",[71,1350,1348],{"class":81},[71,1352,1348],{"class":81},[71,1354,1355],{"class":85}," #可以指向多个包\n",[14,1357,1358],{},[17,1359],{"alt":19,"src":1360},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage205.webp",[10,1362,1364],{"id":1363},"vscode環境進階","VScode環境進階",[1366,1367,1369],"h4",{"id":1368},"clangd插件代碼提示可選但是建議","clangd插件代碼提示(可選,但是建議)",[14,1371,1372],{},[1373,1374,1375],"a",{"href":1375,"rel":1376},"https:\u002F\u002Fcolcon.readthedocs.io\u002Fen\u002Freleased\u002Findex.html",[1377],"nofollow",[14,1379,1380],{},"由於C\u002FC++插件在大項目裏的表現簡直拉胯的一批，所以我們選擇使用llvm裏的clangd插件來進行代碼提示。",[14,1382,1383],{},"但clangd依賴於cmake生成一個編譯信息文件，我們需要一些步驟來生成該文件。",[14,1385,1386],{},"由於ROS2沒有像ROS1那樣的一個總的規範的CMakeLists，所以配置起來沒有ROS1那麼方便。",[1388,1389,1390],"ol",{},[1391,1392,1393,1394,1404,1421,1424,1425,1446],"li",{},"配置colcon build參數",[1388,1395,1396],{},[1391,1397,1398,1399,1403],{},"方法一：（不建議） ",[1400,1401,1402],"strong",{},"每次"," 編譯要用該命令：",[63,1405,1407],{"className":65,"code":1406,"language":67,"meta":19,"style":19},"colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1408,1409],{"__ignoreMap":19},[71,1410,1411,1413,1415,1418],{"class":73,"line":74},[71,1412,1339],{"class":123},[71,1414,1342],{"class":81},[71,1416,1417],{"class":77}," --cmake-args",[71,1419,1420],{"class":77}," -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[1422,1423],"br",{},"  等同於在cmake文件裏寫上（一般不建議改cmakelists）",[63,1426,1428],{"className":65,"code":1427,"language":67,"meta":19,"style":19},"set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n",[53,1429,1430],{"__ignoreMap":19},[71,1431,1432,1435,1438,1441,1444],{"class":73,"line":74},[71,1433,1434],{"class":77},"set",[71,1436,1437],{"class":854},"(",[71,1439,1440],{"class":81},"CMAKE_EXPORT_COMPILE_COMMANDS",[71,1442,1443],{"class":81}," ON",[71,1445,897],{"class":854},[1388,1447,1448],{"start":882},[1391,1449,1450],{},"方法二：全局參數(更加推薦)",[63,1452,1454],{"className":65,"code":1453,"language":67,"meta":19,"style":19},"mkdir ~\u002F.colcon\n\nvim ~\u002F.colcon\u002Fdefaults.yaml\n",[53,1455,1456,1464,1468],{"__ignoreMap":19},[71,1457,1458,1461],{"class":73,"line":74},[71,1459,1460],{"class":123},"mkdir",[71,1462,1463],{"class":81}," ~\u002F.colcon\n",[71,1465,1466],{"class":73,"line":89},[71,1467,861],{"emptyLinePlaceholder":860},[71,1469,1470,1473],{"class":73,"line":864},[71,1471,1472],{"class":123},"vim",[71,1474,1475],{"class":81}," ~\u002F.colcon\u002Fdefaults.yaml\n",[14,1477,1478,1479,1482],{},"按下",[53,1480,1481],{},"insert（插入）","按鍵",[14,1484,1485],{},[17,1486],{"alt":19,"src":1487},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage206.webp",[14,1489,1490],{},"輸入下方內容",[63,1492,1494],{"className":65,"code":1493,"language":67,"meta":19,"style":19},"build:\n  cmake-args:\n    - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1495,1496,1501,1506],{"__ignoreMap":19},[71,1497,1498],{"class":73,"line":74},[71,1499,1500],{"class":123},"build:\n",[71,1502,1503],{"class":73,"line":89},[71,1504,1505],{"class":123},"  cmake-args:\n",[71,1507,1508,1511],{"class":73,"line":864},[71,1509,1510],{"class":123},"    -",[71,1512,1420],{"class":77},[14,1514,1478,1515,1518,1519,1522,1523,1526],{},[53,1516,1517],{},"ESC","，並按下",[53,1520,1521],{},":wq",",然後按下",[53,1524,1525],{},"Enter(回车)","即可成功保存。",[14,1528,1529,1530,1533],{},"在編譯的時候正常用",[53,1531,1532],{},"colcon build","就可以自動啓用CMAKE_EXPORT_COMPILE_COMMANDS=ON參數了。",[1388,1535,1536],{"start":89},[1391,1537,1538,1539,1552,1554,1555,1557,1558,1560,1563],{},"然後再來配置clangd插件",[1388,1540,1541,1549],{},[1391,1542,1543,1544,1546],{},"先下載clangd插件",[1422,1545],{},[17,1547],{"alt":19,"src":1548},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage207.webp",[1391,1550,1551],{},"下載clangd文件",[1422,1553],{},"  按住Ctrl shift P打開搜索框",[1422,1556],{},"  輸入clangd 找到下載語言服務器這一項目，點擊安裝clangd（請保持良好的網絡狀況）",[1422,1559],{},[17,1561],{"alt":19,"src":1562},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage208.webp",[1388,1564,1565],{"start":900},[1391,1566,1567],{},"接着配置clangd：",[14,1569,1570],{},"禁用C\u002FC++的代碼提示功能",[14,1572,1573],{},[17,1574],{"alt":19,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage209.webp",[14,1577,1578],{},"如果沒有上圖的彈窗，可以進行手動關閉，依然是ctrl shift P,輸入settings然後找到如下圖的選項",[14,1580,1581],{},[17,1582],{"alt":19,"src":1583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage210.webp",[14,1585,1586],{},"找到下圖這個選項，改成disabled即可。",[14,1588,1589],{},[53,1590,1591],{},"\"C_Cpp.intelliSenseEngine\": \"disabled\"",[14,1593,1594],{},[17,1595],{"alt":19,"src":1596},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage211.webp",[1388,1598,1599],{"start":876},[1391,1600,1601],{},"重啓clangd",[14,1603,1604],{},"然後ctrl shift P搜索clangd找到如下圖的選項（重啓clangd語言服務器前，要先colcon build）",[14,1606,1607],{},[17,1608],{"alt":19,"src":1609},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage212.webp",[14,1611,1612],{},"代碼提示就正常啦",[14,1614,1615],{},[17,1616],{"alt":19,"src":1617},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage213.webp",[10,1619,1620],{"id":1620},"安裝其他工具",[1366,1622,1623],{"id":1623},"terminal",[1625,1626,1628],"h5",{"id":1627},"安裝terminator選裝因人而異有更好用的warp請往下看","安裝terminator(選裝,因人而異,有更好用的Warp,請往下看)",[63,1630,1632],{"className":65,"code":1631,"language":67,"meta":19,"style":19},"sudo apt install terminator\n",[53,1633,1634],{"__ignoreMap":19},[71,1635,1636,1639,1642,1645],{"class":73,"line":74},[71,1637,1638],{"class":123},"sudo",[71,1640,1641],{"class":81}," apt",[71,1643,1644],{"class":81}," install",[71,1646,1647],{"class":81}," terminator\n",[14,1649,1650],{},[17,1651],{"alt":19,"src":1652},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage214.webp",[1654,1655,1656,1672],"table",{},[1657,1658,1659],"thead",{},[1660,1661,1662,1666,1669],"tr",{},[1663,1664,1665],"th",{},"快捷鍵",[1663,1667,1668],{},"功能",[1663,1670,1671],{},"記憶方法",[1673,1674,1675,1692,1708,1724,1740,1753,1769,1785],"tbody",{},[1660,1676,1677,1683,1686],{},[1678,1679,1680],"td",{},[53,1681,1682],{},"Ctrl + Shift + E",[1678,1684,1685],{},"垂直分屏，左右分",[1678,1687,1688,1691],{},[1400,1689,1690],{},"E = East","，往東邊開一個窗口，也就是左右分",[1660,1693,1694,1699,1702],{},[1678,1695,1696],{},[53,1697,1698],{},"Ctrl + Shift + O",[1678,1700,1701],{},"水平分屏，上下分",[1678,1703,1704,1707],{},[1400,1705,1706],{},"O = Over \u002F Under","，上下疊放",[1660,1709,1710,1715,1718],{},[1678,1711,1712],{},[53,1713,1714],{},"Ctrl + Shift + S",[1678,1716,1717],{},"隱藏\u002F顯示滾動條",[1678,1719,1720,1723],{},[1400,1721,1722],{},"S = Scrollbar","，滾動條",[1660,1725,1726,1731,1734],{},[1678,1727,1728],{},[53,1729,1730],{},"F11",[1678,1732,1733],{},"全屏\u002F退出全屏",[1678,1735,1736,1739],{},[1400,1737,1738],{},"F = Fullscreen","，F11 本來就是很多軟件的全屏鍵",[1660,1741,1742,1747,1750],{},[1678,1743,1744],{},[53,1745,1746],{},"Ctrl + Tab",[1678,1748,1749],{},"在不同 pane 之間切換",[1678,1751,1752],{},"跟瀏覽器切 Tab 類似，循環切換",[1660,1754,1755,1760,1763],{},[1678,1756,1757],{},[53,1758,1759],{},"Ctrl + L",[1678,1761,1762],{},"清屏",[1678,1764,1765,1768],{},[1400,1766,1767],{},"L = clear 裏的 L","，也可以理解成“拉到新頁面”",[1660,1770,1771,1776,1779],{},[1678,1772,1773],{},[53,1774,1775],{},"Ctrl + Shift + W",[1678,1777,1778],{},"關閉當前 pane",[1678,1780,1781,1784],{},[1400,1782,1783],{},"W = Window","，關當前小窗口",[1660,1786,1787,1792,1795],{},[1678,1788,1789],{},[53,1790,1791],{},"Ctrl + Shift + Q",[1678,1793,1794],{},"退出整個 Terminator",[1678,1796,1797,1800],{},[1400,1798,1799],{},"Q = Quit","，退出程序",[14,1802,1803],{},"因為他本身的字體非常暗,所以要設置一下.",[63,1805,1807],{"className":65,"code":1806,"language":67,"meta":19,"style":19},"cp ~\u002F.config\u002Fterminator\u002Fconfig ~\u002F.config\u002Fterminator\u002Fconfig.bak\nvim ~\u002F.config\u002Fterminator\u002Fconfig\n",[53,1808,1809,1820],{"__ignoreMap":19},[71,1810,1811,1814,1817],{"class":73,"line":74},[71,1812,1813],{"class":123},"cp",[71,1815,1816],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig",[71,1818,1819],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig.bak\n",[71,1821,1822,1824],{"class":73,"line":89},[71,1823,1472],{"class":123},[71,1825,1826],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig\n",[14,1828,1829,1830,1833,1834,1837],{},"按一下",[53,1831,1832],{},"ggdG",",注意大小寫.\n然後按下",[53,1835,1836],{},"insert","按鍵,\n然後讓文件內容為:",[63,1839,1841],{"className":65,"code":1840,"language":67,"meta":19,"style":19},"[global_config]\n  title_transmit_bg_color = \"#31363b\"\n  title_transmit_fg_color = \"#fcfcfc\"\n  title_receive_bg_color = \"#232629\"\n  title_receive_fg_color = \"#fcfcfc\"\n  title_inactive_bg_color = \"#232629\"\n  title_inactive_fg_color = \"#bdc3c7\"\n\n[keybindings]\n\n[profiles]\n  [[default]]\n    use_theme_colors = False\n    use_system_font = False\n    font = Noto Sans Mono 11\n\n    background_type = solid\n    background_color = \"#232629\"\n    foreground_color = \"#fcfcfc\"\n    cursor_color = \"#fcfcfc\"\n\n    palette = \"#232629:#ed1515:#11d116:#f67400:#1d99f3:#9b59b6:#1abc9c:#fcfcfc:#7f8c8d:#ff5555:#50fa7b:#fdbc4b:#3daee9:#ff79c6:#8be9fd:#ffffff\"\n\n    scrollback_infinite = True\n\n[layouts]\n  [[default]]\n    [[[window0]]]\n      type = Window\n      parent = \"\"\n      size = 920, 660\n    [[[child1]]]\n      type = Terminal\n      parent = window0\n\n[plugins]\n",[53,1842,1843,1848,1859,1869,1879,1888,1897,1907,1911,1916,1920,1926,1932,1943,1953,1973,1978,1989,1999,2009,2019,2024,2035,2040,2051,2056,2062,2067,2073,2084,2095,2109,2115,2125,2135,2140],{"__ignoreMap":19},[71,1844,1845],{"class":73,"line":74},[71,1846,1847],{"class":854},"[global_config]\n",[71,1849,1850,1853,1856],{"class":73,"line":89},[71,1851,1852],{"class":123},"  title_transmit_bg_color",[71,1854,1855],{"class":81}," =",[71,1857,1858],{"class":81}," \"#31363b\"\n",[71,1860,1861,1864,1866],{"class":73,"line":864},[71,1862,1863],{"class":123},"  title_transmit_fg_color",[71,1865,1855],{"class":81},[71,1867,1868],{"class":81}," \"#fcfcfc\"\n",[71,1870,1871,1874,1876],{"class":73,"line":876},[71,1872,1873],{"class":123},"  title_receive_bg_color",[71,1875,1855],{"class":81},[71,1877,1878],{"class":81}," \"#232629\"\n",[71,1880,1881,1884,1886],{"class":73,"line":882},[71,1882,1883],{"class":123},"  title_receive_fg_color",[71,1885,1855],{"class":81},[71,1887,1868],{"class":81},[71,1889,1890,1893,1895],{"class":73,"line":900},[71,1891,1892],{"class":123},"  title_inactive_bg_color",[71,1894,1855],{"class":81},[71,1896,1878],{"class":81},[71,1898,1899,1902,1904],{"class":73,"line":911},[71,1900,1901],{"class":123},"  title_inactive_fg_color",[71,1903,1855],{"class":81},[71,1905,1906],{"class":81}," \"#bdc3c7\"\n",[71,1908,1909],{"class":73,"line":917},[71,1910,861],{"emptyLinePlaceholder":860},[71,1912,1913],{"class":73,"line":922},[71,1914,1915],{"class":854},"[keybindings]\n",[71,1917,1918],{"class":73,"line":940},[71,1919,861],{"emptyLinePlaceholder":860},[71,1921,1923],{"class":73,"line":1922},11,[71,1924,1925],{"class":854},"[profiles]\n",[71,1927,1929],{"class":73,"line":1928},12,[71,1930,1931],{"class":854},"  [[default]]\n",[71,1933,1935,1938,1940],{"class":73,"line":1934},13,[71,1936,1937],{"class":123},"    use_theme_colors",[71,1939,1855],{"class":81},[71,1941,1942],{"class":81}," False\n",[71,1944,1946,1949,1951],{"class":73,"line":1945},14,[71,1947,1948],{"class":123},"    use_system_font",[71,1950,1855],{"class":81},[71,1952,1942],{"class":81},[71,1954,1956,1959,1961,1964,1967,1970],{"class":73,"line":1955},15,[71,1957,1958],{"class":123},"    font",[71,1960,1855],{"class":81},[71,1962,1963],{"class":81}," Noto",[71,1965,1966],{"class":81}," Sans",[71,1968,1969],{"class":81}," Mono",[71,1971,1972],{"class":77}," 11\n",[71,1974,1976],{"class":73,"line":1975},16,[71,1977,861],{"emptyLinePlaceholder":860},[71,1979,1981,1984,1986],{"class":73,"line":1980},17,[71,1982,1983],{"class":123},"    background_type",[71,1985,1855],{"class":81},[71,1987,1988],{"class":81}," solid\n",[71,1990,1992,1995,1997],{"class":73,"line":1991},18,[71,1993,1994],{"class":123},"    background_color",[71,1996,1855],{"class":81},[71,1998,1878],{"class":81},[71,2000,2002,2005,2007],{"class":73,"line":2001},19,[71,2003,2004],{"class":123},"    foreground_color",[71,2006,1855],{"class":81},[71,2008,1868],{"class":81},[71,2010,2012,2015,2017],{"class":73,"line":2011},20,[71,2013,2014],{"class":123},"    cursor_color",[71,2016,1855],{"class":81},[71,2018,1868],{"class":81},[71,2020,2022],{"class":73,"line":2021},21,[71,2023,861],{"emptyLinePlaceholder":860},[71,2025,2027,2030,2032],{"class":73,"line":2026},22,[71,2028,2029],{"class":123},"    palette",[71,2031,1855],{"class":81},[71,2033,2034],{"class":81}," \"#232629:#ed1515:#11d116:#f67400:#1d99f3:#9b59b6:#1abc9c:#fcfcfc:#7f8c8d:#ff5555:#50fa7b:#fdbc4b:#3daee9:#ff79c6:#8be9fd:#ffffff\"\n",[71,2036,2038],{"class":73,"line":2037},23,[71,2039,861],{"emptyLinePlaceholder":860},[71,2041,2043,2046,2048],{"class":73,"line":2042},24,[71,2044,2045],{"class":123},"    scrollback_infinite",[71,2047,1855],{"class":81},[71,2049,2050],{"class":81}," True\n",[71,2052,2054],{"class":73,"line":2053},25,[71,2055,861],{"emptyLinePlaceholder":860},[71,2057,2059],{"class":73,"line":2058},26,[71,2060,2061],{"class":854},"[layouts]\n",[71,2063,2065],{"class":73,"line":2064},27,[71,2066,1931],{"class":854},[71,2068,2070],{"class":73,"line":2069},28,[71,2071,2072],{"class":854},"    [[[window0]]]\n",[71,2074,2076,2079,2081],{"class":73,"line":2075},29,[71,2077,2078],{"class":77},"      type",[71,2080,1855],{"class":81},[71,2082,2083],{"class":81}," Window\n",[71,2085,2087,2090,2092],{"class":73,"line":2086},30,[71,2088,2089],{"class":123},"      parent",[71,2091,1855],{"class":81},[71,2093,2094],{"class":81}," \"\"\n",[71,2096,2098,2101,2103,2106],{"class":73,"line":2097},31,[71,2099,2100],{"class":123},"      size",[71,2102,1855],{"class":81},[71,2104,2105],{"class":81}," 920,",[71,2107,2108],{"class":77}," 660\n",[71,2110,2112],{"class":73,"line":2111},32,[71,2113,2114],{"class":854},"    [[[child1]]]\n",[71,2116,2118,2120,2122],{"class":73,"line":2117},33,[71,2119,2078],{"class":77},[71,2121,1855],{"class":81},[71,2123,2124],{"class":81}," Terminal\n",[71,2126,2128,2130,2132],{"class":73,"line":2127},34,[71,2129,2089],{"class":123},[71,2131,1855],{"class":81},[71,2133,2134],{"class":81}," window0\n",[71,2136,2138],{"class":73,"line":2137},35,[71,2139,861],{"emptyLinePlaceholder":860},[71,2141,2143],{"class":73,"line":2142},36,[71,2144,2145],{"class":854},"[plugins]\n",[14,2147,2148,2149,2151,2152,2154],{},"最後,按下",[53,2150,1517],{},",輸入",[53,2153,1521],{},"保存並退出.",[14,2156,2157],{},"然後完全關閉 Terminator，再重新打開。\n這個配置會做幾件事：",[1388,2159,2160,2163,2166,2169,2172],{},[1391,2161,2162],{},"背景：接近 Konsole Breeze 的深灰，不是死黑",[1391,2164,2165],{},"字體：接近純白，比以前亮很多",[1391,2167,2168],{},"藍色：換成更亮的 KDE 藍",[1391,2170,2171],{},"綠色\u002F黃色\u002F青色：也整體提亮",[1391,2173,2174],{},"頂部紅色標題條：改成灰色，不再那麼刺眼",[1625,2176,2178],{"id":2177},"warp-terminal推薦更好看也支持分屏","Warp Terminal（推薦，更好看，也支持分屏）",[14,2180,2181],{},"相比 Terminator，Warp Terminal 的默認外觀更現代，字體更清楚，界面也更亮堂。",[14,2183,2184],{},"最重要的是，它也支持類似 Terminator 的多 pane 分屏，所以可以作為 Terminator 的現代平替。",[14,2186,2187],{},"不過需要注意，Warp 的快捷鍵和 Terminator 不完全一樣。",[1388,2189,2190,2286],{},[1391,2191,2192,2193],{},"安裝",[1388,2194,2195,2240],{},[1391,2196,2197,2198,2228,2230,2231],{},"Ubuntu \u002F Debian 安裝",[63,2199,2201],{"className":65,"code":2200,"language":67,"meta":19,"style":19},"wget -O warp-terminal.deb \"https:\u002F\u002Fapp.warp.dev\u002Fdownload?package=deb\"\nsudo apt install .\u002Fwarp-terminal.deb\n",[53,2202,2203,2217],{"__ignoreMap":19},[71,2204,2205,2208,2211,2214],{"class":73,"line":74},[71,2206,2207],{"class":123},"wget",[71,2209,2210],{"class":77}," -O",[71,2212,2213],{"class":81}," warp-terminal.deb",[71,2215,2216],{"class":81}," \"https:\u002F\u002Fapp.warp.dev\u002Fdownload?package=deb\"\n",[71,2218,2219,2221,2223,2225],{"class":73,"line":89},[71,2220,1638],{"class":123},[71,2222,1641],{"class":81},[71,2224,1644],{"class":81},[71,2226,2227],{"class":81}," .\u002Fwarp-terminal.deb\n",[1422,2229],{},"安裝完成後，可以在應用菜單裏打開 Warp，也可以在終端裏輸入：",[63,2232,2234],{"className":65,"code":2233,"language":67,"meta":19,"style":19},"warp-terminal\n",[53,2235,2236],{"__ignoreMap":19},[71,2237,2238],{"class":73,"line":74},[71,2239,2233],{"class":123},[1391,2241,2242,2243,2245,2246,2275,2277,2278],{},"Fedora \u002F RHEL 安裝",[1422,2244],{},"如果你用的是 Fedora、RHEL、CentOS 這類發行版，可以安裝 rpm 包：",[63,2247,2249],{"className":65,"code":2248,"language":67,"meta":19,"style":19},"wget -O warp-terminal.rpm \"https:\u002F\u002Fapp.warp.dev\u002Fdownload?package=rpm\"\nsudo dnf install .\u002Fwarp-terminal.rpm\n",[53,2250,2251,2263],{"__ignoreMap":19},[71,2252,2253,2255,2257,2260],{"class":73,"line":74},[71,2254,2207],{"class":123},[71,2256,2210],{"class":77},[71,2258,2259],{"class":81}," warp-terminal.rpm",[71,2261,2262],{"class":81}," \"https:\u002F\u002Fapp.warp.dev\u002Fdownload?package=rpm\"\n",[71,2264,2265,2267,2270,2272],{"class":73,"line":89},[71,2266,1638],{"class":123},[71,2268,2269],{"class":81}," dnf",[71,2271,1644],{"class":81},[71,2273,2274],{"class":81}," .\u002Fwarp-terminal.rpm\n",[1422,2276],{},"啓動方式同樣是：",[63,2279,2280],{"className":65,"code":2233,"language":67,"meta":19,"style":19},[53,2281,2282],{"__ignoreMap":19},[71,2283,2284],{"class":73,"line":74},[71,2285,2233],{"class":123},[1391,2287,2288],{},"Warp 常用快捷鍵",[1654,2290,2291,2301],{},[1657,2292,2293],{},[1660,2294,2295,2297,2299],{},[1663,2296,1665],{},[1663,2298,1668],{},[1663,2300,1671],{},[1673,2302,2303,2319,2334,2347,2363,2379,2392,2405,2421,2434,2446,2459,2472,2485],{},[1660,2304,2305,2310,2313],{},[1678,2306,2307],{},[53,2308,2309],{},"Ctrl + Shift + D",[1678,2311,2312],{},"向右分屏",[1678,2314,2315,2318],{},[1400,2316,2317],{},"D = Divide","，分割出一個新的 pane，默認往右邊開",[1660,2320,2321,2325,2328],{},[1678,2322,2323],{},[53,2324,1682],{},[1678,2326,2327],{},"向下分屏",[1678,2329,2330,2333],{},[1400,2331,2332],{},"E = Extend Down","，向下面擴展一個新的 pane",[1660,2335,2336,2341,2344],{},[1678,2337,2338],{},[53,2339,2340],{},"Ctrl + Alt + 方向键",[1678,2342,2343],{},"按方向切換 pane",[1678,2345,2346],{},"想去哪邊就按哪個方向鍵",[1660,2348,2349,2354,2357],{},[1678,2350,2351],{},[53,2352,2353],{},"Ctrl + Shift + [",[1678,2355,2356],{},"切換到上一個 pane",[1678,2358,2359,2362],{},[53,2360,2361],{},"["," 可以理解成往前切",[1660,2364,2365,2370,2373],{},[1678,2366,2367],{},[53,2368,2369],{},"Ctrl + Shift + ]",[1678,2371,2372],{},"切換到下一個 pane",[1678,2374,2375,2378],{},[53,2376,2377],{},"]"," 可以理解成往後切",[1660,2380,2381,2386,2389],{},[1678,2382,2383],{},[53,2384,2385],{},"Ctrl + Shift + Enter",[1678,2387,2388],{},"最大化\u002F還原當前 pane",[1678,2390,2391],{},"Enter 進入當前 pane 的專注模式",[1660,2393,2394,2398,2400],{},[1678,2395,2396],{},[53,2397,1775],{},[1678,2399,1778],{},[1678,2401,2402,2404],{},[1400,2403,1783],{},"，關閉當前小窗口",[1660,2406,2407,2412,2415],{},[1678,2408,2409],{},[53,2410,2411],{},"Ctrl + Shift + T",[1678,2413,2414],{},"新建標籤頁",[1678,2416,2417,2420],{},[1400,2418,2419],{},"T = Tab","，新開一個標籤頁",[1660,2422,2423,2428,2431],{},[1678,2424,2425],{},[53,2426,2427],{},"Ctrl + PageUp",[1678,2429,2430],{},"切換到上一個標籤頁",[1678,2432,2433],{},"類似瀏覽器切換標籤",[1660,2435,2436,2441,2444],{},[1678,2437,2438],{},[53,2439,2440],{},"Ctrl + PageDown",[1678,2442,2443],{},"切換到下一個標籤頁",[1678,2445,2433],{},[1660,2447,2448,2452,2454],{},[1678,2449,2450],{},[53,2451,1759],{},[1678,2453,1762],{},[1678,2455,2456,2458],{},[1400,2457,1767],{},"，相當於翻到一個新頁面",[1660,2460,2461,2466,2469],{},[1678,2462,2463],{},[53,2464,2465],{},"Ctrl + =",[1678,2467,2468],{},"放大字體",[1678,2470,2471],{},"等號旁邊通常也是加號，表示放大",[1660,2473,2474,2479,2482],{},[1678,2475,2476],{},[53,2477,2478],{},"Ctrl + -",[1678,2480,2481],{},"縮小字體",[1678,2483,2484],{},"減號，表示縮小",[1660,2486,2487,2492,2495],{},[1678,2488,2489],{},[53,2490,2491],{},"Ctrl + 0",[1678,2493,2494],{},"恢復默認字體大小",[1678,2496,2497],{},"歸零，恢復默認",[1388,2499,2500],{"start":864},[1391,2501,2502,2503],{},"Warp 的特點",[1388,2504,2505,2508,2511,2514,2517],{},[1391,2506,2507],{},"默認顏值比 Terminator 高，不需要額外折騰配色",[1391,2509,2510],{},"支持一直分屏，適合大屏幕開發",[1391,2512,2513],{},"字體渲染比較清楚，觀感比 Terminator 亮堂",[1391,2515,2516],{},"支持命令塊，長命令輸出看起來更清晰",[1391,2518,2519],{},"支持 AI 功能，但不使用 AI 也可以當普通終端使用",[14,2521,2522],{},"首次打開 Warp 時可能需要聯網初始化。之後即使離線也可以作為普通終端使用，只是 AI、協作等雲端功能不能用。",[14,2524,2525],{},"如果只是想要一個傳統、穩定、輕量的終端，可以繼續用 Terminator。",[14,2527,2528],{},"如果想要更好看的界面、更現代的交互體驗，並且也需要分屏，那麼 Warp 是一個很不錯的選擇。",[1366,2530,2531],{"id":2531},"git",[14,2533,2534],{},[17,2535],{"alt":19,"src":2536},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage215.webp",[14,2538,2539,2540],{},"咱們的Git入門教程：",[1373,2541,2543],{"href":2542},"\u002Fwiki\u002F2023-12-29-git-jiao-xue","Vinci機器人隊Git入門教程",[10,2545,2547],{"id":2546},"ros2體系框架","ROS2體系框架",[14,2549,2550],{},[17,2551],{"alt":19,"src":2552},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage216.webp",[14,2554,2555],{},[17,2556],{"alt":19,"src":2557},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage217.webp",[14,2559,2560],{},[17,2561],{"alt":19,"src":2562},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage218.webp",[14,2564,2565],{},[17,2566],{"alt":19,"src":2567},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage219.webp",[14,2569,2570],{},"Client Library就是ROS2的客户端，比如rclcpp，rclpy。",[14,2572,2573],{},"Abstract DDS Layer是DDS抽象層，這樣DDS可以實現可插拔，可以隨便替換DDS模塊。",[14,2575,2576],{},"Intra-process API是進程內通訊API，可以提高通信效率的一類API。",[14,2578,2579],{},[17,2580],{"alt":19,"src":2581},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage220.webp",[14,2583,2584],{},[17,2585],{"alt":19,"src":2586},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage221.webp",[2588,2589,2590],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}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 .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}",{"title":19,"searchDepth":89,"depth":89,"links":2592},[2593,2594,2595,2596,2597,2598,2599,2600,2601,2602,2603],{"id":12,"depth":864,"text":12},{"id":43,"depth":864,"text":43},{"id":212,"depth":864,"text":212},{"id":432,"depth":864,"text":433},{"id":685,"depth":864,"text":686},{"id":961,"depth":864,"text":962},{"id":991,"depth":864,"text":992},{"id":1315,"depth":864,"text":1316},{"id":1363,"depth":864,"text":1364},{"id":1620,"depth":864,"text":1620},{"id":2546,"depth":864,"text":2547},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo",0,"0200","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","zh-hk:2023-12-30-ros2-tutorial","\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作",false,null,"zh-HK","zh-hk",{},{"title":5,"description":19},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","GA8FoMmCH5CZ8tuPgSRS4lguycoi5kdOqAA48BJc38s",[2624,2629,2630,2635,2640,2645,2650,2655,2660,2665,2670,2675,2680,2685,2690,2695,2700,2705,2710,2715,2720,2725,2730,2735,2740,2745,2749,2754,2758,2763,2768,2773,2778,2783,2788,2793,2798,2803,2808,2813,2818,2823,2828,2833,2838,2843,2848,2853,2858,2863,2868,2873,2878,2883,2888,2893,2898,2903,2908,2913],{"path":2625,"stem":2626,"title":2627,"date":2607,"chapterOrder":2628,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介紹","0100",{"path":2604,"stem":2621,"title":5,"date":2607,"chapterOrder":2606,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},{"path":2631,"stem":2632,"title":2633,"date":2607,"chapterOrder":2634,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空間與功能包","0300",{"path":2636,"stem":2637,"title":2638,"date":2607,"chapterOrder":2639,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信","0400",{"path":2641,"stem":2642,"title":2643,"date":2607,"chapterOrder":2644,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信機制","0500",{"path":2646,"stem":2647,"title":2648,"date":2607,"chapterOrder":2649,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":2651,"stem":2652,"title":2653,"date":2607,"chapterOrder":2654,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2","0700",{"path":2656,"stem":2657,"title":2658,"date":2607,"chapterOrder":2659,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","座標變換TF","0800",{"path":2661,"stem":2662,"title":2663,"date":2607,"chapterOrder":2664,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可視化平台RVIZ2與URDF建模語言","0900",{"path":2666,"stem":2667,"title":2668,"date":2607,"chapterOrder":2669,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台","1000",{"path":2671,"stem":2672,"title":2673,"date":2607,"chapterOrder":2674,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":2676,"stem":2677,"title":2678,"date":2607,"chapterOrder":2679,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":2681,"stem":2682,"title":2683,"date":2607,"chapterOrder":2684,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":2686,"stem":2687,"title":2688,"date":2607,"chapterOrder":2689,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","1100-0400",{"path":2691,"stem":2692,"title":2693,"date":2607,"chapterOrder":2694,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台","1100",{"path":2696,"stem":2697,"title":2698,"date":2607,"chapterOrder":2699,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble導航仿真","1200-0100",{"path":2701,"stem":2702,"title":2703,"date":2607,"chapterOrder":2704,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy導航仿真","1200-0200",{"path":2706,"stem":2707,"title":2708,"date":2607,"chapterOrder":2709,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble與Jazzy導航的差異","1200-0300",{"path":2711,"stem":2712,"title":2713,"date":2607,"chapterOrder":2714,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","1200",{"path":2716,"stem":2717,"title":2718,"date":2607,"chapterOrder":2719,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio庫","1300-0100-0100",{"path":2721,"stem":2722,"title":2723,"date":2607,"chapterOrder":2724,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver庫","1300-0100-0200",{"path":2726,"stem":2727,"title":2728,"date":2607,"chapterOrder":2729,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信","1300-0100",{"path":2731,"stem":2732,"title":2733,"date":2607,"chapterOrder":2734,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":2736,"stem":2737,"title":2738,"date":2607,"chapterOrder":2739,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":2741,"stem":2742,"title":2743,"date":2607,"chapterOrder":2744,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信","1300-0200",{"path":2746,"stem":2747,"title":2718,"date":2607,"chapterOrder":2748,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":2750,"stem":2751,"title":2752,"date":2607,"chapterOrder":2753,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信","1300-0300",{"path":2755,"stem":2756,"title":2718,"date":2607,"chapterOrder":2757,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":2759,"stem":2760,"title":2761,"date":2607,"chapterOrder":2762,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信","1300-0400",{"path":2764,"stem":2765,"title":2766,"date":2607,"chapterOrder":2767,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信","1300",{"path":2769,"stem":2770,"title":2771,"date":2607,"chapterOrder":2772,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","機器人組成","1400-0100",{"path":2774,"stem":2775,"title":2776,"date":2607,"chapterOrder":2777,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","遠程開發SSH","1400-0200-0100",{"path":2779,"stem":2780,"title":2781,"date":2607,"chapterOrder":2782,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","遠程訪問桌面","1400-0200-0200",{"path":2784,"stem":2785,"title":2786,"date":2607,"chapterOrder":2787,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控機之遠程開發環境","1400-0200",{"path":2789,"stem":2790,"title":2791,"date":2607,"chapterOrder":2792,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控機之外接USB設備","1400-0300",{"path":2794,"stem":2795,"title":2796,"date":2607,"chapterOrder":2797,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分佈式搭建","1400-0400",{"path":2799,"stem":2800,"title":2801,"date":2607,"chapterOrder":2802,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","優化日誌","1400-0500",{"path":2804,"stem":2805,"title":2806,"date":2607,"chapterOrder":2807,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程計Odom","1400-0600-0100",{"path":2809,"stem":2810,"title":2811,"date":2607,"chapterOrder":2812,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","慣性計IMU","1400-0600-0200",{"path":2814,"stem":2815,"title":2816,"date":2607,"chapterOrder":2817,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷達LiDAR","1400-0600-0300",{"path":2819,"stem":2820,"title":2821,"date":2607,"chapterOrder":2822,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相機Camera","1400-0600-0400",{"path":2824,"stem":2825,"title":2826,"date":2607,"chapterOrder":2827,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS","1400-0600-0500",{"path":2829,"stem":2830,"title":2831,"date":2607,"chapterOrder":2832,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY","1400-0600-0600",{"path":2834,"stem":2835,"title":2836,"date":2607,"chapterOrder":2837,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","鍵盤控制節點","1400-0600-0700",{"path":2839,"stem":2840,"title":2841,"date":2607,"chapterOrder":2842,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台","1400-0600",{"path":2844,"stem":2845,"title":2846,"date":2607,"chapterOrder":2847,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","座標系與話題關係","1400-0700",{"path":2849,"stem":2850,"title":2851,"date":2607,"chapterOrder":2852,"chapterDepth":864,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","輪式里程計標定","1400-0800-0100-0100",{"path":2854,"stem":2855,"title":2856,"date":2607,"chapterOrder":2857,"chapterDepth":864,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","輪式里程計與IMU融合","1400-0800-0100-0200",{"path":2859,"stem":2860,"title":2861,"date":2607,"chapterOrder":2862,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","輪式里程計標定與融合","1400-0800-0100",{"path":2864,"stem":2865,"title":2866,"date":2607,"chapterOrder":2867,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷達工具","1400-0800-0200",{"path":2869,"stem":2870,"title":2871,"date":2607,"chapterOrder":2872,"chapterDepth":89,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相機使用進階","1400-0800-0300",{"path":2874,"stem":2875,"title":2876,"date":2607,"chapterOrder":2877,"chapterDepth":74,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台進階","1400-0800",{"path":2879,"stem":2880,"title":2881,"date":2607,"chapterOrder":2882,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","機器人硬件","1400",{"path":2884,"stem":2885,"title":2886,"date":2607,"chapterOrder":2887,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":2889,"stem":2890,"title":2891,"date":2607,"chapterOrder":2892,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","1600",{"path":2894,"stem":2895,"title":2896,"date":2607,"chapterOrder":2897,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","1700",{"path":2899,"stem":2900,"title":2901,"date":2607,"chapterOrder":2902,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":2904,"stem":2905,"title":2906,"date":2607,"chapterOrder":2907,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台","1900",{"path":2909,"stem":2910,"title":2911,"date":2607,"chapterOrder":2912,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":2614},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":2610,"stem":2914,"title":2915,"date":2607,"chapterOrder":2615,"chapterDepth":2605,"docKey":2609,"docRoot":2610,"docTitle":2611,"isWikiDoc":860,"isWikiIndex":860},"_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2機器人操作系統教程",{"variants":2917},[2918,2921,2924,2925,2928],{"path":2919,"localeSlug":2920,"i18nKey":2613},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","en-us",{"path":2922,"localeSlug":2923,"i18nKey":2613},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","zh-hant",{"path":2604,"localeSlug":2617,"i18nKey":2613},{"path":2926,"localeSlug":2927,"i18nKey":2613},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","zh-tw",{"path":2929,"localeSlug":2930,"i18nKey":2613},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","zh-cn",[2919,2620,2922,2620,2604,2620,2926,2620,2929,2620],1784646822796]