[{"data":1,"prerenderedAt":2984},["ShallowReactive",2],{"wiki-page-/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo":3,"wiki-doc-items-/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo":2616,"language-switcher-data-/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo":2968,"wiki-i18n-paths-/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo":2983},{"id":4,"title":5,"body":6,"canonicalPath":2597,"chapter":2598,"chapterSort":2599,"date":2600,"description":19,"docI18nKey":2601,"docKey":2602,"docRoot":2603,"docTitle":2604,"extension":2605,"i18nKey":2606,"isBlogPost":2607,"isWikiDoc":860,"isWikiIndex":2607,"layout":2608,"legacyPath":2608,"locale":2609,"localeSlug":2610,"meta":2611,"navigation":860,"path":2597,"seo":2612,"sourcePath":2613,"sourceStem":2606,"stem":2614,"wikiDepth":74,"__hash__":2615},"content/_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-入门操作.md","入門操作",{"type":7,"value":8,"toc":2584},"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,1156,1161,1164,1169,1174,1176,1179,1184,1189,1192,1197,1202,1207,1210,1215,1218,1223,1226,1231,1233,1238,1243,1248,1253,1255,1258,1263,1266,1269,1272,1277,1282,1285,1290,1295,1300,1305,1309,1314,1317,1322,1348,1353,1357,1362,1370,1373,1376,1379,1443,1468,1475,1480,1483,1505,1519,1526,1560,1563,1568,1571,1576,1579,1584,1589,1594,1597,1602,1605,1610,1613,1616,1621,1640,1645,1793,1796,1819,1830,2138,2147,2150,2167,2171,2174,2177,2180,2281,2490,2512,2515,2518,2521,2524,2529,2537,2541,2546,2551,2556,2561,2564,2567,2570,2575,2580],[10,11,12],"h3",{"id":12},"簡介",[14,15,16],"p",{},[17,18],"img",{"alt":19,"src":20},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image83.webp",[14,22,23],{},[17,24],{"alt":19,"src":25},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image84.webp",[14,27,28],{},[17,29],{"alt":19,"src":30},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image85.webp",[14,32,33],{},[17,34],{"alt":19,"src":35},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image86.webp",[14,37,38],{},[17,39],{"alt":19,"src":40},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image87.webp",[10,42,43],{"id":43},"終端環境搭建",[14,45,46],{},[17,47],{"alt":19,"src":48},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image88.webp",[14,50,51,52,56],{},"如果在上方安裝ROS2的時候，已經將該語句添加到",[53,54,55],"code",{},"~/.bashrc","了，則不必再跟著這步操作了。",[14,58,59],{},[17,60],{"alt":19,"src":61},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image89.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 /opt/ros/humble/setup.bash  #将ROS2环境变量配置到当前位置\necho \" source /opt/ros/humble/setup.bash\" >> ~/.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"," /opt/ros/humble/setup.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 /opt/ros/humble/setup.bash\"",[71,97,99],{"class":98},"szBVR"," >>",[71,101,102],{"class":81}," ~/.bashrc",[71,104,105],{"class":85},"    #每次启动终端都会运行该句\n",[107,108],"hr",{},[14,110,111],{},[17,112],{"alt":19,"src":113},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image90.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image91.webp",[14,140,141],{},[17,142],{"alt":19,"src":143},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image92.webp",[14,145,146],{},"用ctrl+c來進行取消程序運行",[14,148,149],{},[17,150],{"alt":19,"src":151},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image93.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image94.webp",[17,175],{"alt":19,"src":176},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image95.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image96.webp",[10,211,212],{"id":212},"命令行操作",[14,214,215],{},[17,216],{"alt":19,"src":217},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image97.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image98.webp",[14,241,242],{},[17,243],{"alt":19,"src":244},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image99.webp",[14,246,247],{},"會彈提示信息，告訴我們後面要跟的參數",[14,249,250],{},[17,251],{"alt":19,"src":252},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image100.webp",[14,254,255],{},[17,256],{"alt":19,"src":257},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image101.webp",[14,259,260],{},"ros2 node list會把當前ROS2正在運行的節點列出來",[14,262,263],{},[17,264],{"alt":19,"src":265},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image102.webp",[14,267,268],{},[17,269],{"alt":19,"src":270},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image103.webp",[14,272,273],{},"ros2 node info + /節點名 可以查看目標節點的詳細情況",[14,275,276],{},[17,277],{"alt":19,"src":278},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image104.webp",[14,280,247],{},[14,282,283],{},[17,284],{"alt":19,"src":285},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image105.webp",[14,287,288],{},[17,289],{"alt":19,"src":290},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image106.webp",[14,292,293],{},[17,294],{"alt":19,"src":295},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image107.webp",[14,297,298],{},"可以通過話題來顯示機器人運動的狀態",[14,300,301],{},[17,302],{"alt":19,"src":303},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image108.webp",[63,305,307],{"className":65,"code":306,"language":67,"meta":19,"style":19},"ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist \"{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}," /turtle1/cmd_vel",[71,329,330],{"class":81}," geometry_msgs/msg/Twist",[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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image109.webp",[14,340,341],{},[17,342],{"alt":19,"src":343},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image110.webp",[63,345,347],{"className":65,"code":346,"language":67,"meta":19,"style":19},"ros2 service call /spawn turtlesim/srv/Spawn \"{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}," /spawn",[71,363,364],{"class":81}," turtlesim/srv/Spawn",[71,366,367],{"class":81}," \"{x: 2, y: 2, theta: 0.2, name: ''}\"\n",[14,369,370],{},[17,371],{"alt":19,"src":372},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image111.webp",[14,374,375],{},[17,376],{"alt":19,"src":377},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image112.webp",[14,379,380],{},[17,381],{"alt":19,"src":382},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image113.webp",[63,384,386],{"className":65,"code":385,"language":67,"meta":19,"style":19},"ros2 bag record /turtle1/cmd_vel\nros2 bag play rosbag2_2022_04_11-17_35_40/rosbag2_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}," /turtle1/cmd_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/rosbag2_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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image114.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image115.webp",[14,440,441],{},[17,442],{"alt":19,"src":443},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image116.webp",[14,445,446],{},[17,447],{"alt":19,"src":448},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image117.webp",[14,450,451],{},"1.創建功能包",[14,453,454],{},[17,455],{"alt":19,"src":456},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image118.webp",[14,458,459],{},[17,460],{"alt":19,"src":461},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image119.webp",[14,463,464],{},"指令就是創建ros2的功能包",[14,466,467],{},"ros2 pkg create + 功能包名 + --build-type(構建類型) + ament_cmake / 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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image120.webp",[14,510,511],{},[17,512],{"alt":19,"src":513},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image121.webp",[14,515,516],{},"源文件自動生成了，文件名和我們指定的node name是一致的。",[14,518,519],{},[17,520],{"alt":19,"src":521},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image122.webp",[14,523,524],{},"這是自動生成的內容，但是和ROS2沒有任何關係。",[14,526,527],{},[17,528],{"alt":19,"src":529},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image123.webp",[14,531,532],{},[17,533],{"alt":19,"src":534},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image124.webp",[14,536,537],{},[17,538],{"alt":19,"src":539},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image125.webp",[14,541,542],{},"如果依賴的庫不止這一個，則再回車，",[14,544,545],{},"xxx",[14,547,548],{},"再添加下一個",[14,550,551],{},[17,552],{"alt":19,"src":553},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image126.webp",[14,555,556],{},"10行是查找包",[14,558,559],{},"12行是添加可執行的",[14,561,562],{},"add_executable 的第一個參數是 可執行文件的名字（默認和節點名一致，默認和源文件名一致） 第二個參數是源文件的名字",[14,564,565],{},"17行是為我們的可執行程序添加依賴 我們的可執行程序依賴於RCLCPP這個庫",[14,567,568],{},"22行是要為我們的可執行程序設立一個安裝目錄，創建在了當前功能包下的lib目錄，也就是 工作空間名/install/功能包名/lib",[14,570,571],{},"編輯配置文件之後編譯，用cd..返回ws目錄",[14,573,574],{},[17,575],{"alt":19,"src":576},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image127.webp",[14,578,579],{},[17,580],{"alt":19,"src":581},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image128.webp",[14,583,584],{},"圖標為綠色，是沒有警告也沒有錯誤",[14,586,587],{},"是黃色的則有警告",[14,589,590],{},"是紅色的則有致命錯誤",[14,592,593],{},[17,594],{"alt":19,"src":595},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image129.webp",[14,597,598],{},"可執行二進制文件的路徑",[14,600,601],{},[17,602],{"alt":19,"src":603},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image130.webp",[63,605,607],{"className":65,"code":606,"language":67,"meta":19,"style":19},"source install/setup.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/setup.bash",[71,617,618],{"class":85}," #刷新环境变量\n",[14,620,621],{},[17,622],{"alt":19,"src":623},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image131.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image132.webp",[14,648,649],{},"編輯ROS2 C++源文件：",[14,651,652],{},[17,653],{"alt":19,"src":654},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image133.webp",[63,656,661],{"className":657,"code":659,"language":660},[658],"language-text","#include \"rclcpp/rclcpp.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image134.webp",[14,669,670],{},[17,671],{"alt":19,"src":672},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image135.webp",[14,674,675],{},[17,676],{"alt":19,"src":677},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image136.webp",[14,679,680],{},[17,681],{"alt":19,"src":682},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image137.webp",[10,684,686],{"id":685},"ros2-helloworldpython","ROS2 HelloWorld(Python)",[14,688,689],{},[17,690],{"alt":19,"src":691},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image138.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 / ament_python + --dependencies（依賴） + rclpy(ROS2的Python客戶端) + --node-name（節點名） + 節點名",[14,726,727],{},[17,728],{"alt":19,"src":729},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image139.webp",[14,731,732],{},[17,733],{"alt":19,"src":734},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image140.webp",[14,736,737],{},[17,738],{"alt":19,"src":739},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image141.webp",[14,741,742],{},"與node name和可執行二進制文件同名",[14,744,745],{},[17,746],{"alt":19,"src":747},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image142.webp",[14,749,750],{},"默認這裡面已經有代碼，但是和ROS2無關，這是標準的python代碼",[14,752,753],{},[17,754],{"alt":19,"src":755},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image143.webp",[14,757,758],{},[17,759],{"alt":19,"src":760},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image144.webp",[14,762,763],{},[17,764],{"alt":19,"src":765},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image145.webp",[14,767,768],{},"二進制可執行文件 映射到 源文件的main函數",[14,770,771],{},"如何編譯呢？",[14,773,774],{},[17,775],{"alt":19,"src":776},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image146.webp",[14,778,779],{},"先返回上一級，來到ws目錄",[14,781,782],{},[17,783],{"alt":19,"src":784},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image147.webp",[14,786,787],{},[17,788],{"alt":19,"src":789},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image148.webp",[14,791,792],{},"有個黃色警告，但是不影響我們使用。",[14,794,795],{},[17,796],{"alt":19,"src":797},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image149.webp",[63,799,801],{"className":65,"code":800,"language":67,"meta":19,"style":19},"source ./install/setup.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}," ./install/setup.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image150.webp",[107,834],{},[14,836,837],{},[17,838],{"alt":19,"src":839},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image151.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://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image152.webp",[14,950,951],{},[17,952],{"alt":19,"src":953},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image153.webp",[14,955,956],{},[17,957],{"alt":19,"src":958},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image154.webp",[10,960,962],{"id":961},"運行優化bash終端環境","運行優化(bash終端環境)",[14,964,965],{},[17,966],{"alt":19,"src":967},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image155.webp",[14,969,970],{},[17,971],{"alt":19,"src":972},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image156.webp",[14,974,975],{},"要使用絕對路徑",[14,977,978],{},[17,979],{"alt":19,"src":980},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image157.webp",[14,982,983],{},[17,984],{"alt":19,"src":985},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image158.webp",[14,987,988],{},"儘量不要這麼幹，ROS2有一個bug，就是不同工作空間的功能包可能會調用混亂，所以先不要搞全局的運行優化。",[10,990,992],{"id":991},"vscode環境搭建","VScode環境搭建",[14,994,995],{},[17,996],{"alt":19,"src":997},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image159.webp",[14,999,1000,1003],{},[17,1001],{"alt":19,"src":1002},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image160.webp",[17,1004],{"alt":19,"src":1005},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image161.webp",[14,1007,1008,1011],{},[17,1009],{"alt":19,"src":1010},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image162.webp",[17,1012],{"alt":19,"src":1013},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image163.webp",[14,1015,1016,1019],{},[17,1017],{"alt":19,"src":1018},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image164.webp",[17,1020],{"alt":19,"src":1021},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image165.webp",[14,1023,1024],{},"看C/C++，Python，CMake，XML,YAML文件就可以代碼高亮顯示",[14,1026,1027],{},"在寫一些ROS2消息的代碼可以提供代碼補齊等操作",[14,1029,1030],{},[17,1031],{"alt":19,"src":1032},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image166.webp",[14,1034,1035],{},"編寫機器人模型所要用的插件，也可以進行代碼補齊",[14,1037,1038],{},[17,1039],{"alt":19,"src":1040},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image167.webp",[14,1042,1043],{},"ROS2經常生成PDF文件，可以通過這個插件來查看",[14,1045,1046,1049],{},[17,1047],{"alt":19,"src":1048},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image168.webp",[17,1050],{"alt":19,"src":1051},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image169.webp",[14,1053,1054],{},"ROS2插件建議等成熟之後再進行安裝",[14,1056,1057],{},[17,1058],{"alt":19,"src":1059},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image170.webp",[14,1061,1062],{},"這個官方插件可以嘗試安裝",[14,1064,1065],{},[17,1066],{"alt":19,"src":1067},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image171.webp",[14,1069,1070],{},"人工智能代碼補全",[14,1072,1073],{},[17,1074],{"alt":19,"src":1075},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image172.webp",[14,1077,1078],{},"MarkDown高亮",[107,1080],{},[14,1082,1083],{},[17,1084],{"alt":19,"src":1085},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image173.webp",[14,1087,1088],{},[17,1089],{"alt":19,"src":1090},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image174.webp",[14,1092,1093],{},[17,1094],{"alt":19,"src":1095},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image175.webp",[14,1097,1098],{},"雖然報錯，但是程序是可以正常運行的。（主要是vscode找不到頭文件）",[14,1100,1101],{},[17,1102],{"alt":19,"src":1103},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image176.webp",[14,1105,1106],{},[17,1107],{"alt":19,"src":1108},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image177.webp",[14,1110,1111],{},[17,1112],{"alt":19,"src":1113},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image178.webp",[14,1115,1116],{},[17,1117],{"alt":19,"src":1118},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image179.webp",[14,1120,1121],{},[17,1122],{"alt":19,"src":1123},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image180.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}/**\",\n                \"/opt/ros/humble/include/**\"\n            ],\n","JSON",[53,1130,1131,1136,1141,1146,1151],{"__ignoreMap":19},[71,1132,1133],{"class":73,"line":74},[71,1134,1135],{},"            \"includePath\": [\n",[71,1137,1138],{"class":73,"line":89},[71,1139,1140],{},"                \"${default}\",\n",[71,1142,1143],{"class":73,"line":864},[71,1144,1145],{},"                \"${workspaceFolder}/**\",\n",[71,1147,1148],{"class":73,"line":876},[71,1149,1150],{},"                \"/opt/ros/humble/include/**\"\n",[71,1152,1153],{"class":73,"line":882},[71,1154,1155],{},"            ],\n",[14,1157,1158],{},[17,1159],{"alt":19,"src":1160},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image181.webp",[14,1162,1163],{},"/**代表要包含該文件夾下的所有的子集",[14,1165,1166],{},[17,1167],{"alt":19,"src":1168},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image182.webp",[14,1170,1171],{},[17,1172],{"alt":19,"src":1173},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image183.webp",[107,1175],{},[14,1177,1178],{},"按Ctrl + `（ESC底下的按鍵）把VSCODE終端打開",[14,1180,1181],{},[17,1182],{"alt":19,"src":1183},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image184.webp",[14,1185,1186],{},[17,1187],{"alt":19,"src":1188},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image185.webp",[14,1190,1191],{},"--node-name也是可選參數，如果不配置，則不會有源文件，也不會有可執行文件到源文件的映射",[14,1193,1194],{},[17,1195],{"alt":19,"src":1196},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image186.webp",[14,1198,1199],{},[17,1200],{"alt":19,"src":1201},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image187.webp",[14,1203,1204],{},[17,1205],{"alt":19,"src":1206},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image188.webp",[14,1208,1209],{},"不需要修改，已經默認生成好了",[14,1211,1212],{},[17,1213],{"alt":19,"src":1214},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image189.webp",[14,1216,1217],{},"再返回WS目錄進行編譯（但是此時編譯是編譯整個WS目錄下的所有功能包）",[14,1219,1220],{},[17,1221],{"alt":19,"src":1222},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image190.webp",[14,1224,1225],{},"刷新環境變量並運行",[14,1227,1228],{},[17,1229],{"alt":19,"src":1230},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image191.webp",[107,1232],{},[14,1234,1235],{},[17,1236],{"alt":19,"src":1237},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image192.webp",[14,1239,1240],{},[17,1241],{"alt":19,"src":1242},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image193.webp",[14,1244,1245],{},[17,1246],{"alt":19,"src":1247},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image194.webp",[14,1249,1250],{},[17,1251],{"alt":19,"src":1252},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image195.webp",[107,1254],{},[14,1256,1257],{},"如何在一個功能包裡添加多個源文件呢？",[14,1259,1260],{},[17,1261],{"alt":19,"src":1262},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image196.webp",[14,1264,1265],{},"新建一個新文件，比如hellovscode2.cpp",[14,1267,1268],{},"但是此時該文件是一個孤零零的文件，他沒有做任何的配置，對應的，編譯完之後也不會被執行。",[14,1270,1271],{},"我們想編譯執行該文件，必須配置相關的配置文件。",[14,1273,1274],{},[17,1275],{"alt":19,"src":1276},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image197.webp",[14,1278,1279],{},[17,1280],{"alt":19,"src":1281},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image198.webp",[14,1283,1284],{},"選中的這些用不著，可以刪掉",[14,1286,1287],{},[17,1288],{"alt":19,"src":1289},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image199.webp",[14,1291,1292],{},[17,1293],{"alt":19,"src":1294},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image200.webp",[14,1296,1297],{},[17,1298],{"alt":19,"src":1299},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image201.webp",[14,1301,1302],{},[17,1303],{"alt":19,"src":1304},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image202.webp",[10,1306,1308],{"id":1307},"運行優化colcon-build","運行優化(colcon build)",[14,1310,1311],{},[17,1312],{"alt":19,"src":1313},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image203.webp",[14,1315,1316],{},"平常會全編譯WS目錄下的文件",[14,1318,1319],{},[17,1320],{"alt":19,"src":1321},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image204.webp",[63,1323,1325],{"className":65,"code":1324,"language":67,"meta":19,"style":19},"colcon build --packages-select xxx xxx xxx #可以指向多个包\n",[53,1326,1327],{"__ignoreMap":19},[71,1328,1329,1332,1335,1338,1341,1343,1345],{"class":73,"line":74},[71,1330,1331],{"class":123},"colcon",[71,1333,1334],{"class":81}," build",[71,1336,1337],{"class":77}," --packages-select",[71,1339,1340],{"class":81}," xxx",[71,1342,1340],{"class":81},[71,1344,1340],{"class":81},[71,1346,1347],{"class":85}," #可以指向多个包\n",[14,1349,1350],{},[17,1351],{"alt":19,"src":1352},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image205.webp",[10,1354,1356],{"id":1355},"vscode環境進階","VScode環境進階",[1358,1359,1361],"h4",{"id":1360},"clangd插件代碼提示可選但是建議","clangd插件代碼提示(可選,但是建議)",[14,1363,1364],{},[1365,1366,1367],"a",{"href":1367,"rel":1368},"https://colcon.readthedocs.io/en/released/index.html",[1369],"nofollow",[14,1371,1372],{},"由於C/C++插件在大項目裡的表現簡直拉胯的一批，所以我們選擇使用llvm裡的clangd插件來進行代碼提示。",[14,1374,1375],{},"但clangd依賴於cmake生成一個編譯信息文件，我們需要一些步驟來生成該文件。",[14,1377,1378],{},"由於ROS2沒有像ROS1那樣的一個總的規範的CMakeLists，所以配置起來沒有ROS1那麼方便。",[1380,1381,1382],"ol",{},[1383,1384,1385,1386,1396,1413,1416,1417,1438],"li",{},"配置colcon build參數",[1380,1387,1388],{},[1383,1389,1390,1391,1395],{},"方法一：（不建議） ",[1392,1393,1394],"strong",{},"每次"," 編譯要用該命令：",[63,1397,1399],{"className":65,"code":1398,"language":67,"meta":19,"style":19},"colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1400,1401],{"__ignoreMap":19},[71,1402,1403,1405,1407,1410],{"class":73,"line":74},[71,1404,1331],{"class":123},[71,1406,1334],{"class":81},[71,1408,1409],{"class":77}," --cmake-args",[71,1411,1412],{"class":77}," -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[1414,1415],"br",{},"  等同於在cmake文件裡寫上（一般不建議改cmakelists）",[63,1418,1420],{"className":65,"code":1419,"language":67,"meta":19,"style":19},"set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n",[53,1421,1422],{"__ignoreMap":19},[71,1423,1424,1427,1430,1433,1436],{"class":73,"line":74},[71,1425,1426],{"class":77},"set",[71,1428,1429],{"class":854},"(",[71,1431,1432],{"class":81},"CMAKE_EXPORT_COMPILE_COMMANDS",[71,1434,1435],{"class":81}," ON",[71,1437,897],{"class":854},[1380,1439,1440],{"start":882},[1383,1441,1442],{},"方法二：全局參數(更加推薦)",[63,1444,1446],{"className":65,"code":1445,"language":67,"meta":19,"style":19},"mkdir ~/.colcon\n\nvim ~/.colcon/defaults.yaml\n",[53,1447,1448,1456,1460],{"__ignoreMap":19},[71,1449,1450,1453],{"class":73,"line":74},[71,1451,1452],{"class":123},"mkdir",[71,1454,1455],{"class":81}," ~/.colcon\n",[71,1457,1458],{"class":73,"line":89},[71,1459,861],{"emptyLinePlaceholder":860},[71,1461,1462,1465],{"class":73,"line":864},[71,1463,1464],{"class":123},"vim",[71,1466,1467],{"class":81}," ~/.colcon/defaults.yaml\n",[14,1469,1470,1471,1474],{},"按下",[53,1472,1473],{},"insert（插入）","按鍵",[14,1476,1477],{},[17,1478],{"alt":19,"src":1479},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image206.webp",[14,1481,1482],{},"輸入下方內容",[63,1484,1486],{"className":65,"code":1485,"language":67,"meta":19,"style":19},"build:\n  cmake-args:\n    - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1487,1488,1493,1498],{"__ignoreMap":19},[71,1489,1490],{"class":73,"line":74},[71,1491,1492],{"class":123},"build:\n",[71,1494,1495],{"class":73,"line":89},[71,1496,1497],{"class":123},"  cmake-args:\n",[71,1499,1500,1503],{"class":73,"line":864},[71,1501,1502],{"class":123},"    -",[71,1504,1412],{"class":77},[14,1506,1470,1507,1510,1511,1514,1515,1518],{},[53,1508,1509],{},"ESC","，並按下",[53,1512,1513],{},":wq",",然後按下",[53,1516,1517],{},"Enter(回车)","即可成功保存。",[14,1520,1521,1522,1525],{},"在編譯的時候正常用",[53,1523,1524],{},"colcon build","就可以自動啟用CMAKE_EXPORT_COMPILE_COMMANDS=ON參數了。",[1380,1527,1528],{"start":89},[1383,1529,1530,1531,1544,1546,1547,1549,1550,1552,1555],{},"然後再來配置clangd插件",[1380,1532,1533,1541],{},[1383,1534,1535,1536,1538],{},"先下載clangd插件",[1414,1537],{},[17,1539],{"alt":19,"src":1540},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image207.webp",[1383,1542,1543],{},"下載clangd文件",[1414,1545],{},"  按住Ctrl shift P打開搜索框",[1414,1548],{},"  輸入clangd 找到下載語言服務器這一項目，點擊安裝clangd（請保持良好的網絡狀況）",[1414,1551],{},[17,1553],{"alt":19,"src":1554},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image208.webp",[1380,1556,1557],{"start":900},[1383,1558,1559],{},"接著配置clangd：",[14,1561,1562],{},"禁用C/C++的代碼提示功能",[14,1564,1565],{},[17,1566],{"alt":19,"src":1567},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image209.webp",[14,1569,1570],{},"如果沒有上圖的彈窗，可以進行手動關閉，依然是ctrl shift P,輸入settings然後找到如下圖的選項",[14,1572,1573],{},[17,1574],{"alt":19,"src":1575},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image210.webp",[14,1577,1578],{},"找到下圖這個選項，改成disabled即可。",[14,1580,1581],{},[53,1582,1583],{},"\"C_Cpp.intelliSenseEngine\": \"disabled\"",[14,1585,1586],{},[17,1587],{"alt":19,"src":1588},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image211.webp",[1380,1590,1591],{"start":876},[1383,1592,1593],{},"重啟clangd",[14,1595,1596],{},"然後ctrl shift P搜索clangd找到如下圖的選項（重啟clangd語言服務器前，要先colcon build）",[14,1598,1599],{},[17,1600],{"alt":19,"src":1601},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image212.webp",[14,1603,1604],{},"代碼提示就正常啦",[14,1606,1607],{},[17,1608],{"alt":19,"src":1609},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image213.webp",[10,1611,1612],{"id":1612},"安裝其他工具",[1358,1614,1615],{"id":1615},"terminal",[1617,1618,1620],"h5",{"id":1619},"安裝terminator選裝因人而異有更好用的warp請往下看","安裝terminator(選裝,因人而異,有更好用的Warp,請往下看)",[63,1622,1624],{"className":65,"code":1623,"language":67,"meta":19,"style":19},"sudo apt install terminator\n",[53,1625,1626],{"__ignoreMap":19},[71,1627,1628,1631,1634,1637],{"class":73,"line":74},[71,1629,1630],{"class":123},"sudo",[71,1632,1633],{"class":81}," apt",[71,1635,1636],{"class":81}," install",[71,1638,1639],{"class":81}," terminator\n",[14,1641,1642],{},[17,1643],{"alt":19,"src":1644},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image214.webp",[1646,1647,1648,1664],"table",{},[1649,1650,1651],"thead",{},[1652,1653,1654,1658,1661],"tr",{},[1655,1656,1657],"th",{},"快捷鍵",[1655,1659,1660],{},"功能",[1655,1662,1663],{},"記憶方法",[1665,1666,1667,1684,1700,1716,1732,1745,1761,1777],"tbody",{},[1652,1668,1669,1675,1678],{},[1670,1671,1672],"td",{},[53,1673,1674],{},"Ctrl + Shift + E",[1670,1676,1677],{},"垂直分屏，左右分",[1670,1679,1680,1683],{},[1392,1681,1682],{},"E = East","，往東邊開一個窗口，也就是左右分",[1652,1685,1686,1691,1694],{},[1670,1687,1688],{},[53,1689,1690],{},"Ctrl + Shift + O",[1670,1692,1693],{},"水平分屏，上下分",[1670,1695,1696,1699],{},[1392,1697,1698],{},"O = Over / Under","，上下疊放",[1652,1701,1702,1707,1710],{},[1670,1703,1704],{},[53,1705,1706],{},"Ctrl + Shift + S",[1670,1708,1709],{},"隱藏/顯示滾動條",[1670,1711,1712,1715],{},[1392,1713,1714],{},"S = Scrollbar","，滾動條",[1652,1717,1718,1723,1726],{},[1670,1719,1720],{},[53,1721,1722],{},"F11",[1670,1724,1725],{},"全屏/退出全屏",[1670,1727,1728,1731],{},[1392,1729,1730],{},"F = Fullscreen","，F11 本來就是很多軟件的全屏鍵",[1652,1733,1734,1739,1742],{},[1670,1735,1736],{},[53,1737,1738],{},"Ctrl + Tab",[1670,1740,1741],{},"在不同 pane 之間切換",[1670,1743,1744],{},"跟瀏覽器切 Tab 類似，循環切換",[1652,1746,1747,1752,1755],{},[1670,1748,1749],{},[53,1750,1751],{},"Ctrl + L",[1670,1753,1754],{},"清屏",[1670,1756,1757,1760],{},[1392,1758,1759],{},"L = clear 裡的 L","，也可以理解成“拉到新頁面”",[1652,1762,1763,1768,1771],{},[1670,1764,1765],{},[53,1766,1767],{},"Ctrl + Shift + W",[1670,1769,1770],{},"關閉當前 pane",[1670,1772,1773,1776],{},[1392,1774,1775],{},"W = Window","，關當前小窗口",[1652,1778,1779,1784,1787],{},[1670,1780,1781],{},[53,1782,1783],{},"Ctrl + Shift + Q",[1670,1785,1786],{},"退出整個 Terminator",[1670,1788,1789,1792],{},[1392,1790,1791],{},"Q = Quit","，退出程序",[14,1794,1795],{},"因為他本身的字體非常暗,所以要設置一下.",[63,1797,1799],{"className":65,"code":1798,"language":67,"meta":19,"style":19},"cp ~/.config/terminator/config ~/.config/terminator/config.bak\nvim ~/.config/terminator/config\n",[53,1800,1801,1812],{"__ignoreMap":19},[71,1802,1803,1806,1809],{"class":73,"line":74},[71,1804,1805],{"class":123},"cp",[71,1807,1808],{"class":81}," ~/.config/terminator/config",[71,1810,1811],{"class":81}," ~/.config/terminator/config.bak\n",[71,1813,1814,1816],{"class":73,"line":89},[71,1815,1464],{"class":123},[71,1817,1818],{"class":81}," ~/.config/terminator/config\n",[14,1820,1821,1822,1825,1826,1829],{},"按一下",[53,1823,1824],{},"ggdG",",注意大小寫.\n然後按下",[53,1827,1828],{},"insert","按鍵,\n然後讓文件內容為:",[63,1831,1833],{"className":65,"code":1832,"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,1834,1835,1840,1851,1861,1871,1880,1889,1899,1903,1908,1912,1918,1924,1935,1945,1965,1970,1981,1991,2001,2011,2016,2027,2032,2043,2048,2054,2059,2065,2076,2087,2101,2107,2117,2127,2132],{"__ignoreMap":19},[71,1836,1837],{"class":73,"line":74},[71,1838,1839],{"class":854},"[global_config]\n",[71,1841,1842,1845,1848],{"class":73,"line":89},[71,1843,1844],{"class":123},"  title_transmit_bg_color",[71,1846,1847],{"class":81}," =",[71,1849,1850],{"class":81}," \"#31363b\"\n",[71,1852,1853,1856,1858],{"class":73,"line":864},[71,1854,1855],{"class":123},"  title_transmit_fg_color",[71,1857,1847],{"class":81},[71,1859,1860],{"class":81}," \"#fcfcfc\"\n",[71,1862,1863,1866,1868],{"class":73,"line":876},[71,1864,1865],{"class":123},"  title_receive_bg_color",[71,1867,1847],{"class":81},[71,1869,1870],{"class":81}," \"#232629\"\n",[71,1872,1873,1876,1878],{"class":73,"line":882},[71,1874,1875],{"class":123},"  title_receive_fg_color",[71,1877,1847],{"class":81},[71,1879,1860],{"class":81},[71,1881,1882,1885,1887],{"class":73,"line":900},[71,1883,1884],{"class":123},"  title_inactive_bg_color",[71,1886,1847],{"class":81},[71,1888,1870],{"class":81},[71,1890,1891,1894,1896],{"class":73,"line":911},[71,1892,1893],{"class":123},"  title_inactive_fg_color",[71,1895,1847],{"class":81},[71,1897,1898],{"class":81}," \"#bdc3c7\"\n",[71,1900,1901],{"class":73,"line":917},[71,1902,861],{"emptyLinePlaceholder":860},[71,1904,1905],{"class":73,"line":922},[71,1906,1907],{"class":854},"[keybindings]\n",[71,1909,1910],{"class":73,"line":940},[71,1911,861],{"emptyLinePlaceholder":860},[71,1913,1915],{"class":73,"line":1914},11,[71,1916,1917],{"class":854},"[profiles]\n",[71,1919,1921],{"class":73,"line":1920},12,[71,1922,1923],{"class":854},"  [[default]]\n",[71,1925,1927,1930,1932],{"class":73,"line":1926},13,[71,1928,1929],{"class":123},"    use_theme_colors",[71,1931,1847],{"class":81},[71,1933,1934],{"class":81}," False\n",[71,1936,1938,1941,1943],{"class":73,"line":1937},14,[71,1939,1940],{"class":123},"    use_system_font",[71,1942,1847],{"class":81},[71,1944,1934],{"class":81},[71,1946,1948,1951,1953,1956,1959,1962],{"class":73,"line":1947},15,[71,1949,1950],{"class":123},"    font",[71,1952,1847],{"class":81},[71,1954,1955],{"class":81}," Noto",[71,1957,1958],{"class":81}," Sans",[71,1960,1961],{"class":81}," Mono",[71,1963,1964],{"class":77}," 11\n",[71,1966,1968],{"class":73,"line":1967},16,[71,1969,861],{"emptyLinePlaceholder":860},[71,1971,1973,1976,1978],{"class":73,"line":1972},17,[71,1974,1975],{"class":123},"    background_type",[71,1977,1847],{"class":81},[71,1979,1980],{"class":81}," solid\n",[71,1982,1984,1987,1989],{"class":73,"line":1983},18,[71,1985,1986],{"class":123},"    background_color",[71,1988,1847],{"class":81},[71,1990,1870],{"class":81},[71,1992,1994,1997,1999],{"class":73,"line":1993},19,[71,1995,1996],{"class":123},"    foreground_color",[71,1998,1847],{"class":81},[71,2000,1860],{"class":81},[71,2002,2004,2007,2009],{"class":73,"line":2003},20,[71,2005,2006],{"class":123},"    cursor_color",[71,2008,1847],{"class":81},[71,2010,1860],{"class":81},[71,2012,2014],{"class":73,"line":2013},21,[71,2015,861],{"emptyLinePlaceholder":860},[71,2017,2019,2022,2024],{"class":73,"line":2018},22,[71,2020,2021],{"class":123},"    palette",[71,2023,1847],{"class":81},[71,2025,2026],{"class":81}," \"#232629:#ed1515:#11d116:#f67400:#1d99f3:#9b59b6:#1abc9c:#fcfcfc:#7f8c8d:#ff5555:#50fa7b:#fdbc4b:#3daee9:#ff79c6:#8be9fd:#ffffff\"\n",[71,2028,2030],{"class":73,"line":2029},23,[71,2031,861],{"emptyLinePlaceholder":860},[71,2033,2035,2038,2040],{"class":73,"line":2034},24,[71,2036,2037],{"class":123},"    scrollback_infinite",[71,2039,1847],{"class":81},[71,2041,2042],{"class":81}," True\n",[71,2044,2046],{"class":73,"line":2045},25,[71,2047,861],{"emptyLinePlaceholder":860},[71,2049,2051],{"class":73,"line":2050},26,[71,2052,2053],{"class":854},"[layouts]\n",[71,2055,2057],{"class":73,"line":2056},27,[71,2058,1923],{"class":854},[71,2060,2062],{"class":73,"line":2061},28,[71,2063,2064],{"class":854},"    [[[window0]]]\n",[71,2066,2068,2071,2073],{"class":73,"line":2067},29,[71,2069,2070],{"class":77},"      type",[71,2072,1847],{"class":81},[71,2074,2075],{"class":81}," Window\n",[71,2077,2079,2082,2084],{"class":73,"line":2078},30,[71,2080,2081],{"class":123},"      parent",[71,2083,1847],{"class":81},[71,2085,2086],{"class":81}," \"\"\n",[71,2088,2090,2093,2095,2098],{"class":73,"line":2089},31,[71,2091,2092],{"class":123},"      size",[71,2094,1847],{"class":81},[71,2096,2097],{"class":81}," 920,",[71,2099,2100],{"class":77}," 660\n",[71,2102,2104],{"class":73,"line":2103},32,[71,2105,2106],{"class":854},"    [[[child1]]]\n",[71,2108,2110,2112,2114],{"class":73,"line":2109},33,[71,2111,2070],{"class":77},[71,2113,1847],{"class":81},[71,2115,2116],{"class":81}," Terminal\n",[71,2118,2120,2122,2124],{"class":73,"line":2119},34,[71,2121,2081],{"class":123},[71,2123,1847],{"class":81},[71,2125,2126],{"class":81}," window0\n",[71,2128,2130],{"class":73,"line":2129},35,[71,2131,861],{"emptyLinePlaceholder":860},[71,2133,2135],{"class":73,"line":2134},36,[71,2136,2137],{"class":854},"[plugins]\n",[14,2139,2140,2141,2143,2144,2146],{},"最後,按下",[53,2142,1509],{},",輸入",[53,2145,1513],{},"保存並退出.",[14,2148,2149],{},"然後完全關閉 Terminator，再重新打開。\n這個配置會做幾件事：",[1380,2151,2152,2155,2158,2161,2164],{},[1383,2153,2154],{},"背景：接近 Konsole Breeze 的深灰，不是死黑",[1383,2156,2157],{},"字體：接近純白，比以前亮很多",[1383,2159,2160],{},"藍色：換成更亮的 KDE 藍",[1383,2162,2163],{},"綠色/黃色/青色：也整體提亮",[1383,2165,2166],{},"頂部紅色標題條：改成灰色，不再那麼刺眼",[1617,2168,2170],{"id":2169},"warp-terminal推薦更好看也支持分屏","Warp Terminal（推薦，更好看，也支持分屏）",[14,2172,2173],{},"相比 Terminator，Warp Terminal 的默認外觀更現代，字體更清楚，界面也更亮堂。",[14,2175,2176],{},"最重要的是，它也支持類似 Terminator 的多 pane 分屏，所以可以作為 Terminator 的現代平替。",[14,2178,2179],{},"不過需要注意，Warp 的快捷鍵和 Terminator 不完全一樣。",[1380,2181,2182,2278],{},[1383,2183,2184,2185],{},"安裝",[1380,2186,2187,2232],{},[1383,2188,2189,2190,2220,2222,2223],{},"Ubuntu / Debian 安裝",[63,2191,2193],{"className":65,"code":2192,"language":67,"meta":19,"style":19},"wget -O warp-terminal.deb \"https://app.warp.dev/download?package=deb\"\nsudo apt install ./warp-terminal.deb\n",[53,2194,2195,2209],{"__ignoreMap":19},[71,2196,2197,2200,2203,2206],{"class":73,"line":74},[71,2198,2199],{"class":123},"wget",[71,2201,2202],{"class":77}," -O",[71,2204,2205],{"class":81}," warp-terminal.deb",[71,2207,2208],{"class":81}," \"https://app.warp.dev/download?package=deb\"\n",[71,2210,2211,2213,2215,2217],{"class":73,"line":89},[71,2212,1630],{"class":123},[71,2214,1633],{"class":81},[71,2216,1636],{"class":81},[71,2218,2219],{"class":81}," ./warp-terminal.deb\n",[1414,2221],{},"安裝完成後，可以在應用菜單裡打開 Warp，也可以在終端裡輸入：",[63,2224,2226],{"className":65,"code":2225,"language":67,"meta":19,"style":19},"warp-terminal\n",[53,2227,2228],{"__ignoreMap":19},[71,2229,2230],{"class":73,"line":74},[71,2231,2225],{"class":123},[1383,2233,2234,2235,2237,2238,2267,2269,2270],{},"Fedora / RHEL 安裝",[1414,2236],{},"如果你用的是 Fedora、RHEL、CentOS 這類發行版，可以安裝 rpm 包：",[63,2239,2241],{"className":65,"code":2240,"language":67,"meta":19,"style":19},"wget -O warp-terminal.rpm \"https://app.warp.dev/download?package=rpm\"\nsudo dnf install ./warp-terminal.rpm\n",[53,2242,2243,2255],{"__ignoreMap":19},[71,2244,2245,2247,2249,2252],{"class":73,"line":74},[71,2246,2199],{"class":123},[71,2248,2202],{"class":77},[71,2250,2251],{"class":81}," warp-terminal.rpm",[71,2253,2254],{"class":81}," \"https://app.warp.dev/download?package=rpm\"\n",[71,2256,2257,2259,2262,2264],{"class":73,"line":89},[71,2258,1630],{"class":123},[71,2260,2261],{"class":81}," dnf",[71,2263,1636],{"class":81},[71,2265,2266],{"class":81}," ./warp-terminal.rpm\n",[1414,2268],{},"啟動方式同樣是：",[63,2271,2272],{"className":65,"code":2225,"language":67,"meta":19,"style":19},[53,2273,2274],{"__ignoreMap":19},[71,2275,2276],{"class":73,"line":74},[71,2277,2225],{"class":123},[1383,2279,2280],{},"Warp 常用快捷鍵",[1646,2282,2283,2293],{},[1649,2284,2285],{},[1652,2286,2287,2289,2291],{},[1655,2288,1657],{},[1655,2290,1660],{},[1655,2292,1663],{},[1665,2294,2295,2311,2326,2339,2355,2371,2384,2397,2413,2426,2438,2451,2464,2477],{},[1652,2296,2297,2302,2305],{},[1670,2298,2299],{},[53,2300,2301],{},"Ctrl + Shift + D",[1670,2303,2304],{},"向右分屏",[1670,2306,2307,2310],{},[1392,2308,2309],{},"D = Divide","，分割出一個新的 pane，默認往右邊開",[1652,2312,2313,2317,2320],{},[1670,2314,2315],{},[53,2316,1674],{},[1670,2318,2319],{},"向下分屏",[1670,2321,2322,2325],{},[1392,2323,2324],{},"E = Extend Down","，向下面擴展一個新的 pane",[1652,2327,2328,2333,2336],{},[1670,2329,2330],{},[53,2331,2332],{},"Ctrl + Alt + 方向键",[1670,2334,2335],{},"按方向切換 pane",[1670,2337,2338],{},"想去哪邊就按哪個方向鍵",[1652,2340,2341,2346,2349],{},[1670,2342,2343],{},[53,2344,2345],{},"Ctrl + Shift + [",[1670,2347,2348],{},"切換到上一個 pane",[1670,2350,2351,2354],{},[53,2352,2353],{},"["," 可以理解成往前切",[1652,2356,2357,2362,2365],{},[1670,2358,2359],{},[53,2360,2361],{},"Ctrl + Shift + ]",[1670,2363,2364],{},"切換到下一個 pane",[1670,2366,2367,2370],{},[53,2368,2369],{},"]"," 可以理解成往後切",[1652,2372,2373,2378,2381],{},[1670,2374,2375],{},[53,2376,2377],{},"Ctrl + Shift + Enter",[1670,2379,2380],{},"最大化/還原當前 pane",[1670,2382,2383],{},"Enter 進入當前 pane 的專注模式",[1652,2385,2386,2390,2392],{},[1670,2387,2388],{},[53,2389,1767],{},[1670,2391,1770],{},[1670,2393,2394,2396],{},[1392,2395,1775],{},"，關閉當前小窗口",[1652,2398,2399,2404,2407],{},[1670,2400,2401],{},[53,2402,2403],{},"Ctrl + Shift + T",[1670,2405,2406],{},"新建標籤頁",[1670,2408,2409,2412],{},[1392,2410,2411],{},"T = Tab","，新開一個標籤頁",[1652,2414,2415,2420,2423],{},[1670,2416,2417],{},[53,2418,2419],{},"Ctrl + PageUp",[1670,2421,2422],{},"切換到上一個標籤頁",[1670,2424,2425],{},"類似瀏覽器切換標籤",[1652,2427,2428,2433,2436],{},[1670,2429,2430],{},[53,2431,2432],{},"Ctrl + PageDown",[1670,2434,2435],{},"切換到下一個標籤頁",[1670,2437,2425],{},[1652,2439,2440,2444,2446],{},[1670,2441,2442],{},[53,2443,1751],{},[1670,2445,1754],{},[1670,2447,2448,2450],{},[1392,2449,1759],{},"，相當於翻到一個新頁面",[1652,2452,2453,2458,2461],{},[1670,2454,2455],{},[53,2456,2457],{},"Ctrl + =",[1670,2459,2460],{},"放大字體",[1670,2462,2463],{},"等號旁邊通常也是加號，表示放大",[1652,2465,2466,2471,2474],{},[1670,2467,2468],{},[53,2469,2470],{},"Ctrl + -",[1670,2472,2473],{},"縮小字體",[1670,2475,2476],{},"減號，表示縮小",[1652,2478,2479,2484,2487],{},[1670,2480,2481],{},[53,2482,2483],{},"Ctrl + 0",[1670,2485,2486],{},"恢復默認字體大小",[1670,2488,2489],{},"歸零，恢復默認",[1380,2491,2492],{"start":864},[1383,2493,2494,2495],{},"Warp 的特點",[1380,2496,2497,2500,2503,2506,2509],{},[1383,2498,2499],{},"默認顏值比 Terminator 高，不需要額外折騰配色",[1383,2501,2502],{},"支持一直分屏，適合大屏幕開發",[1383,2504,2505],{},"字體渲染比較清楚，觀感比 Terminator 亮堂",[1383,2507,2508],{},"支持命令塊，長命令輸出看起來更清晰",[1383,2510,2511],{},"支持 AI 功能，但不使用 AI 也可以當普通終端使用",[14,2513,2514],{},"首次打開 Warp 時可能需要聯網初始化。之後即使離線也可以作為普通終端使用，只是 AI、協作等雲端功能不能用。",[14,2516,2517],{},"如果只是想要一個傳統、穩定、輕量的終端，可以繼續用 Terminator。",[14,2519,2520],{},"如果想要更好看的界面、更現代的交互體驗，並且也需要分屏，那麼 Warp 是一個很不錯的選擇。",[1358,2522,2523],{"id":2523},"git",[14,2525,2526],{},[17,2527],{"alt":19,"src":2528},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image215.webp",[14,2530,2531,2532],{},"咱們的Git入門教程：",[1365,2533,2536],{"href":2534,"rel":2535},"https://sdutvincirobot.feishu.cn/docx/B7arde6u0ob5tsxk5QOcFLG7nYd",[1369],"Vinci機器人隊Git入門教程",[10,2538,2540],{"id":2539},"ros2體系框架","ROS2體系框架",[14,2542,2543],{},[17,2544],{"alt":19,"src":2545},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image216.webp",[14,2547,2548],{},[17,2549],{"alt":19,"src":2550},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image217.webp",[14,2552,2553],{},[17,2554],{"alt":19,"src":2555},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image218.webp",[14,2557,2558],{},[17,2559],{"alt":19,"src":2560},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image219.webp",[14,2562,2563],{},"Client Library就是ROS2的客戶端，比如rclcpp，rclpy。",[14,2565,2566],{},"Abstract DDS Layer是DDS抽象層，這樣DDS可以實現可插拔，可以隨便替換DDS模塊。",[14,2568,2569],{},"Intra-process API是進程內通訊API，可以提高通信效率的一類API。",[14,2571,2572],{},[17,2573],{"alt":19,"src":2574},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image220.webp",[14,2576,2577],{},[17,2578],{"alt":19,"src":2579},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image221.webp",[2581,2582,2583],"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":2585},[2586,2587,2588,2589,2590,2591,2592,2593,2594,2595,2596],{"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":1307,"depth":864,"text":1308},{"id":1355,"depth":864,"text":1356},{"id":1612,"depth":864,"text":1612},{"id":2539,"depth":864,"text":2540},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","2",2000000,"2023-12-30","wiki/2023-12-30-ros2-tutorial","zh-tw:2023-12-30-ros2-tutorial","/zh-tw/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki/2023-12-30-ros2-tutorial/ch2-入门操作",false,null,"zh-TW","zh-tw",{},{"title":5,"description":19},"/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch2-入门操作","wxIG0KvR_nMPnoNLkgHbvaz-7hM7hIffK2KxC4vclUM",[2617,2623,2629,2635,2641,2647,2653,2659,2665,2671,2677,2683,2689,2695,2701,2707,2713,2719,2724,2730,2735,2741,2747,2753,2759,2765,2771,2777,2783,2789,2795,2801,2807,2813,2819,2825,2831,2837,2843,2849,2855,2861,2867,2873,2879,2885,2891,2897,2903,2909,2915,2916,2922,2928,2934,2940,2946,2952,2958,2964],{"path":2618,"stem":2619,"title":2620,"date":2600,"chapter":2621,"chapterSort":2622,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","ROS2介紹","1",1000000,{"path":2624,"stem":2625,"title":2626,"date":2600,"chapter":2627,"chapterSort":2628,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2仿真平臺","10",10000000,{"path":2630,"stem":2631,"title":2632,"date":2600,"chapter":2633,"chapterSort":2634,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":2636,"stem":2637,"title":2638,"date":2600,"chapter":2639,"chapterSort":2640,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":2642,"stem":2643,"title":2644,"date":2600,"chapter":2645,"chapterSort":2646,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":2648,"stem":2649,"title":2650,"date":2600,"chapter":2651,"chapterSort":2652,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","11.4",11040000,{"path":2654,"stem":2655,"title":2656,"date":2600,"chapter":2657,"chapterSort":2658,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gezebo仿真平臺","11",11000000,{"path":2660,"stem":2661,"title":2662,"date":2600,"chapter":2663,"chapterSort":2664,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-1-humble-ban-ben","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-1-Humble版本","Humble導航仿真","12.1",12010000,{"path":2666,"stem":2667,"title":2668,"date":2600,"chapter":2669,"chapterSort":2670,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-2-jazzy-ban-ben","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-2-Jazzy版本","Jazzy導航仿真","12.2",12020000,{"path":2672,"stem":2673,"title":2674,"date":2600,"chapter":2675,"chapterSort":2676,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-3-humble2jazzy","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-3-Humble2Jazzy","Humble與Jazzy導航的差異","12.3",12030000,{"path":2678,"stem":2679,"title":2680,"date":2600,"chapter":2681,"chapterSort":2682,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","12",12000000,{"path":2684,"stem":2685,"title":2686,"date":2600,"chapter":2687,"chapterSort":2688,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-1-boost-aiso","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-1-Boost.Aiso","Boost.Asio庫","13.1.1",13010100,{"path":2690,"stem":2691,"title":2692,"date":2600,"chapter":2693,"chapterSort":2694,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2-serial-driver","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2_serial_driver","ROS2 Serial Driver庫","13.1.2",13010200,{"path":2696,"stem":2697,"title":2698,"date":2600,"chapter":2699,"chapterSort":2700,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-chuan-kou-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-1-串口通信","UART串口通信","13.1",13010000,{"path":2702,"stem":2703,"title":2704,"date":2600,"chapter":2705,"chapterSort":2706,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","SocketCAN","13.2.1",13020100,{"path":2708,"stem":2709,"title":2710,"date":2600,"chapter":2711,"chapterSort":2712,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2-socketcan","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2_socketcan","ROS2_SocketCAN","13.2.2",13020200,{"path":2714,"stem":2715,"title":2716,"date":2600,"chapter":2717,"chapterSort":2718,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信","CAN通信","13.2",13020000,{"path":2720,"stem":2721,"title":2686,"date":2600,"chapter":2722,"chapterSort":2723,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-3-1-boost-aiso","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-3-1-Boost.Aiso","13.3.1",13030100,{"path":2725,"stem":2726,"title":2727,"date":2600,"chapter":2728,"chapterSort":2729,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-3-tcp-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-3-TCP通信","TCP通信","13.3",13030000,{"path":2731,"stem":2732,"title":2686,"date":2600,"chapter":2733,"chapterSort":2734,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-4-1-boost-aiso","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-4-1-Boost.Aiso","13.4.1",13040100,{"path":2736,"stem":2737,"title":2738,"date":2600,"chapter":2739,"chapterSort":2740,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信","UDP通信","13.4",13040000,{"path":2742,"stem":2743,"title":2744,"date":2600,"chapter":2745,"chapterSort":2746,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-linux-ying-jian-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-Linux硬件通信","Linux硬件通信","13",13000000,{"path":2748,"stem":2749,"title":2750,"date":2600,"chapter":2751,"chapterSort":2752,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-1-ji-qi-ren-zu-cheng","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-1-机器人组成","機器人組成","14.1",14010000,{"path":2754,"stem":2755,"title":2756,"date":2600,"chapter":2757,"chapterSort":2758,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-1-yuan-cheng-kai-fa-ssh","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-1-远程开发SSH","遠程開發SSH","14.2.1",14020100,{"path":2760,"stem":2761,"title":2762,"date":2600,"chapter":2763,"chapterSort":2764,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-2-yuan-cheng-fang-wen-zhuo-mian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-2-远程访问桌面","遠程訪問桌面","14.2.2",14020200,{"path":2766,"stem":2767,"title":2768,"date":2600,"chapter":2769,"chapterSort":2770,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-2-工控机之远程开发环境","工控機之遠程開發環境","14.2",14020000,{"path":2772,"stem":2773,"title":2774,"date":2600,"chapter":2775,"chapterSort":2776,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-3-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-3-工控机之外接USB设备","工控機之外接USB設備","14.3",14030000,{"path":2778,"stem":2779,"title":2780,"date":2600,"chapter":2781,"chapterSort":2782,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-4-fen-bu-shi-da-jian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-4-分布式搭建","分佈式搭建","14.4",14040000,{"path":2784,"stem":2785,"title":2786,"date":2600,"chapter":2787,"chapterSort":2788,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-5-you-hua-ri-zhi","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-5-优化日志","優化日誌","14.5",14050000,{"path":2790,"stem":2791,"title":2792,"date":2600,"chapter":2793,"chapterSort":2794,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-1-li-cheng-ji-odom","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-1-里程计Odom","里程計Odom","14.6.1",14060100,{"path":2796,"stem":2797,"title":2798,"date":2600,"chapter":2799,"chapterSort":2800,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-2-guan-xing-ji-imu","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-2-惯性计IMU","慣性計IMU","14.6.2",14060200,{"path":2802,"stem":2803,"title":2804,"date":2600,"chapter":2805,"chapterSort":2806,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-3-ji-guang-lei-da-lidar","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-3-激光雷达LiDAR","激光雷達LiDAR","14.6.3",14060300,{"path":2808,"stem":2809,"title":2810,"date":2600,"chapter":2811,"chapterSort":2812,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-4-xiang-ji-camera","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-4-相机Camera","相機Camera","14.6.4",14060400,{"path":2814,"stem":2815,"title":2816,"date":2600,"chapter":2817,"chapterSort":2818,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-5-quan-qiu-ding-wei-gnss","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-5-全球定位GNSS","全球定位GNSS","14.6.5",14060500,{"path":2820,"stem":2821,"title":2822,"date":2600,"chapter":2823,"chapterSort":2824,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-6-shou-bing-joy","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-6-手柄joy","手柄JOY","14.6.6",14060600,{"path":2826,"stem":2827,"title":2828,"date":2600,"chapter":2829,"chapterSort":2830,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-7-jian-pan-kong-zhi-jie-dian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-7-键盘控制节点","鍵盤控制節點","14.6.7",14060700,{"path":2832,"stem":2833,"title":2834,"date":2600,"chapter":2835,"chapterSort":2836,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-ying-jian-ping-tai","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-6-硬件平台","硬件平臺","14.6",14060000,{"path":2838,"stem":2839,"title":2840,"date":2600,"chapter":2841,"chapterSort":2842,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-7-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-7-坐标系与话题关系","座標系與話題關係","14.7",14070000,{"path":2844,"stem":2845,"title":2846,"date":2600,"chapter":2847,"chapterSort":2848,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-lun-shi-li-cheng-ji-biao-ding","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-轮式里程计标定","輪式里程計標定","14.8.1.1",14080101,{"path":2850,"stem":2851,"title":2852,"date":2600,"chapter":2853,"chapterSort":2854,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-轮式里程计与IMU融合","輪式里程計與IMU融合","14.8.1.2",14080102,{"path":2856,"stem":2857,"title":2858,"date":2600,"chapter":2859,"chapterSort":2860,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-1-轮式里程计标定与融合","輪式里程計標定與融合","14.8.1",14080100,{"path":2862,"stem":2863,"title":2864,"date":2600,"chapter":2865,"chapterSort":2866,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-2-ji-guang-lei-da-gong-ju","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-2-激光雷达工具","激光雷達工具","14.8.2",14080200,{"path":2868,"stem":2869,"title":2870,"date":2600,"chapter":2871,"chapterSort":2872,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-3-xiang-ji-shi-yong-jin-jie","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-3-相机使用进阶","相機使用進階","14.8.3",14080300,{"path":2874,"stem":2875,"title":2876,"date":2600,"chapter":2877,"chapterSort":2878,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-ying-jian-ping-tai-jin-jie","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-8-硬件平台进阶","硬件平臺進階","14.8",14080000,{"path":2880,"stem":2881,"title":2882,"date":2600,"chapter":2883,"chapterSort":2884,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","機器人硬件","14",14000000,{"path":2886,"stem":2887,"title":2888,"date":2600,"chapter":2889,"chapterSort":2890,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":2892,"stem":2893,"title":2894,"date":2600,"chapter":2895,"chapterSort":2896,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","16",16000000,{"path":2898,"stem":2899,"title":2900,"date":2600,"chapter":2901,"chapterSort":2902,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","17",17000000,{"path":2904,"stem":2905,"title":2906,"date":2600,"chapter":2907,"chapterSort":2908,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch18-microros","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":2910,"stem":2911,"title":2912,"date":2600,"chapter":2913,"chapterSort":2914,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots仿真平臺","19",19000000,{"path":2597,"stem":2614,"title":5,"date":2600,"chapter":2598,"chapterSort":2599,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},{"path":2917,"stem":2918,"title":2919,"date":2600,"chapter":2920,"chapterSort":2921,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch20-opencv","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","OpenCV","20",20000000,{"path":2923,"stem":2924,"title":2925,"date":2600,"chapter":2926,"chapterSort":2927,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","工作空間與功能包","3",3000000,{"path":2929,"stem":2930,"title":2931,"date":2600,"chapter":2932,"chapterSort":2933,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch4-四大通信","四大通信","4",4000000,{"path":2935,"stem":2936,"title":2937,"date":2600,"chapter":2938,"chapterSort":2939,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","ROS2其他通信機制","5",5000000,{"path":2941,"stem":2942,"title":2943,"date":2600,"chapter":2944,"chapterSort":2945,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch6-launch","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":2947,"stem":2948,"title":2949,"date":2600,"chapter":2950,"chapterSort":2951,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":2953,"stem":2954,"title":2955,"date":2600,"chapter":2956,"chapterSort":2957,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","座標變換TF","8",8000000,{"path":2959,"stem":2960,"title":2961,"date":2600,"chapter":2962,"chapterSort":2963,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":2607},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","可視化平臺RVIZ2與URDF建模語言","9",9000000,{"path":2603,"stem":2965,"title":2966,"date":2600,"chapter":2608,"chapterSort":2967,"docKey":2602,"docRoot":2603,"docTitle":2604,"isWikiDoc":860,"isWikiIndex":860},"_i18n/zh-tw/wiki/2023-12-30-ros2-tutorial/index","ROS2機器人操作系統教程",0,{"variants":2969},[2970,2973,2976,2979,2980],{"path":2971,"localeSlug":2972,"i18nKey":2606},"/en-us/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","en-us",{"path":2974,"localeSlug":2975,"i18nKey":2606},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","zh-hant",{"path":2977,"localeSlug":2978,"i18nKey":2606},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","zh-hk",{"path":2597,"localeSlug":2610,"i18nKey":2606},{"path":2981,"localeSlug":2982,"i18nKey":2606},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","zh-cn",[2971,2613,2974,2613,2977,2613,2597,2613,2981,2613],1780671891019]