[{"data":1,"prerenderedAt":3660},["ShallowReactive",2],{"wiki-page-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao":3,"wiki-doc-items-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao":3292,"language-switcher-data-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao":3644,"wiki-i18n-paths-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao":3659},{"id":4,"title":5,"body":6,"canonicalPath":3274,"chapter":1210,"chapterSort":3275,"date":3276,"description":30,"docI18nKey":3277,"docKey":3278,"docRoot":3279,"docTitle":3280,"extension":3281,"i18nKey":3282,"isBlogPost":3283,"isWikiDoc":621,"isWikiIndex":3283,"layout":3284,"legacyPath":3284,"locale":3285,"localeSlug":3286,"meta":3287,"navigation":621,"path":3274,"seo":3288,"sourcePath":3289,"sourceStem":3282,"stem":3290,"wikiDepth":418,"__hash__":3291},"content/_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍.md","ROS2介紹",{"type":7,"value":8,"toc":3264},"minimark",[9,14,18,21,25,35,39,43,46,54,60,63,69,77,80,84,200,204,212,215,223,226,229,236,243,250,255,260,265,268,273,277,280,285,288,296,299,307,311,314,319,322,327,332,335,343,346,351,361,364,369,372,380,385,394,401,404,407,422,427,431,434,439,442,447,451,454,459,462,494,497,502,505,531,536,540,547,551,555,560,563,568,571,576,579,584,589,600,649,654,657,662,823,1261,1267,1272,1275,1284,1287,1292,1299,1317,1321,1325,1329,1334,1336,1341,1344,1349,1352,1357,1361,1448,1453,1458,1461,1464,1467,1473,1478,1481,1565,1570,1575,1580,1696,1701,1706,1709,1725,1730,1735,1740,1743,1748,1753,1758,1826,1831,1836,1839,1873,1878,1883,1886,1901,1904,1909,1912,1917,1921,1925,1930,1932,1940,1942,1947,1980,1984,2000,2004,2008,2012,2019,2023,2026,2029,2032,2039,2042,2045,2048,2051,2054,2057,2060,2063,2174,2214,2217,2223,2228,2232,2428,2432,2435,2439,2442,2447,2450,2455,2458,2463,2468,2471,2474,2479,2482,2487,2490,2495,2498,2552,2555,2560,2563,2566,2639,2642,2645,2648,2670,2675,2678,2683,2686,2714,2717,2722,2725,2765,2770,2772,2775,2809,2812,2817,2819,2822,2828,2833,2836,2839,2842,2845,2850,2853,2858,2865,2870,2873,2912,2917,2922,2928,2933,2966,2971,2974,2989,2992,3043,3048,3051,3055,3118,3121,3124,3127,3146,3149,3152,3155,3160,3163,3166,3171,3174,3177,3180,3210,3213,3216,3221,3224,3228,3231,3260],[10,11,13],"h3",{"id":12},"ros2簡介","ROS2簡介",[15,16,17],"p",{},"The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.",[15,19,20],{},"機器人操作系統（ROS）是一組軟件庫和工具，可幫助您構建機器人應用程序。從驅動程序到最先進的算法，再加上強大的開發工具，ROS爲您的下一個機器人項目提供了所需的東西。而且都是開源的。",[10,22,24],{"id":23},"ros2框架","ROS2框架",[15,26,27,32],{},[28,29],"img",{"alt":30,"src":31},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image3.webp",[28,33],{"alt":30,"src":34},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image4.webp",[10,36,38],{"id":37},"ros2參考資料","ROS2參考資料",[40,41,42],"h4",{"id":42},"官方資料",[15,44,45],{},"由於ROS2參考文檔太少，所以很多教程還是需要看ROS2官網：",[15,47,48],{},[49,50,51],"a",{"href":51,"rel":52},"https://www.ros.org/",[53],"nofollow",[40,55,57],{"id":56},"推薦的視頻資料與配套文檔",[58,59,56],"strong",{},[15,61,62],{},"非常推薦以下資料與視頻",[15,64,65],{},[49,66,67],{"href":67,"rel":68},"https://www.bilibili.com/video/BV1VB4y137ys",[53],[15,70,71,72],{},"趙虛左原版配套資料:",[49,73,76],{"href":74,"rel":75},"https://sdutvincirobot.feishu.cn/file/GQgvbWU4UoKhbxx8DjHc9nQ1nWf",[53],"ROS2理論與實踐-趙虛左\u003C密碼:qinghuamengshi>.pdf",[15,78,79],{},"暫時無法在飛書文檔外展示此內容",[10,81,83],{"id":82},"學習ros2需要用到的知識儲備","學習ROS2需要用到的知識儲備",[85,86,87],"ol",{},[88,89,90,91,96,99,100,105,107,111,117,99,119,124,130,99,132,137,143,99,145,150,99,152,157,163,99,165,170,172,176,182,184,188,194,196],"li",{},"需要用哪些知識？",[85,92,93],{},[88,94,95],{},"Linux基本操作與Shell腳本語言",[97,98],"br",{},"  ",[49,101,104],{"href":102,"rel":103},"https://sdutvincirobot.feishu.cn/docx/ZD0bd33RRovEoIxeBzncdmQEnSg",[53],"Linux基本教程",[97,106],{},[49,108,109],{"href":109,"rel":110},"https://www.runoob.com/linux/linux-tutorial.html",[53],[85,112,114],{"start":113},4,[88,115,116],{},"Cmake基本使用",[97,118],{},[49,120,123],{"href":121,"rel":122},"https://sdutvincirobot.feishu.cn/docx/ANgFdRtvKoCcKDxZ2ehc5Rocnwh",[53],"Linux C++編譯環境配置",[85,125,127],{"start":126},6,[88,128,129],{},"Git基本操作",[97,131],{},[49,133,136],{"href":134,"rel":135},"https://sdutvincirobot.feishu.cn/docx/B7arde6u0ob5tsxk5QOcFLG7nYd",[53],"Vinci機器人隊Git入門教程",[85,138,140],{"start":139},8,[88,141,142],{},"C/C++語言",[97,144],{},[49,146,149],{"href":147,"rel":148},"https://sdutvincirobot.feishu.cn/docx/XfSud40MgoxZkQxup0acTf6Znwb",[53],"Vinci機器人隊電控組入門指導",[97,151],{},[49,153,156],{"href":154,"rel":155},"https://sdutvincirobot.feishu.cn/docx/N0GAdx6IDoqnRnx1q0TcX1Wfnvc",[53],"Vinci機器人隊C/C++資料",[85,158,160],{"start":159},11,[88,161,162],{},"Python3語言",[97,164],{},[49,166,169],{"href":167,"rel":168},"https://sdutvincirobot.feishu.cn/wiki/QZL8wLeewiTmvfkczMyccAdVn0c",[53],"Vinci機器人隊Python3教程",[97,171],{},[49,173,174],{"href":174,"rel":175},"https://www.runoob.com/python3/python3-tutorial.html",[53],[85,177,179],{"start":178},14,[88,180,181],{},"XML語言",[97,183],{},[49,185,186],{"href":186,"rel":187},"https://www.runoob.com/xml/xml-tutorial.html",[53],[85,189,191],{"start":190},16,[88,192,193],{},"YAML語言",[97,195],{},[49,197,198],{"href":198,"rel":199},"http://www.noobyard.com/article/p-saghdsms-mn.html",[53],[10,201,203],{"id":202},"安裝ros2","安裝ROS2",[15,205,206,207],{},"ROS1安裝請看",[49,208,211],{"href":209,"rel":210},"https://sdutvincirobot.feishu.cn/wiki/W976wTlonibALVkmfIhcdUKYnUV",[53],"ROS機器人操作系統教程",[15,213,214],{},"** 建議使用Kubuntu 24.04 LTS **\n** 建議學習 ROS2 Jazzy 版本，本教程將基於ROS2 Jazzy **",[40,216,218,219,222],{"id":217},"二進制包安裝ros2以kubuntu-jammy-2204安裝-ros-humble-爲例","二進制包安裝ROS2(以Kubuntu Jammy 22.04安裝 ",[58,220,221],{},"ROS Humble"," 爲例)",[15,224,225],{},"注意:",[15,227,228],{},"截至2024年12月，強烈建議如果要用ROS2的話，一定要用ROS Humble,別用ROS Jazzy，這玩意有些區別，特別是Gazebo,幾乎沒啥教程的。",[15,230,231,232],{},"Ubuntu Jammy 22.04(LTS)請安裝ROS Humble(LTS)。安裝嚮導網站:",[49,233,234],{"href":234,"rel":235},"https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html",[53],[15,237,238,239],{},"Ubuntu Noble 24.04(LTS)請安裝ROS Jazzy(LTS)。安裝嚮導網站:",[49,240,241],{"href":241,"rel":242},"https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debians.html",[53],[15,244,245,246],{},"各個ROS1、ROS2版本所支持的發行版：",[49,247,248],{"href":248,"rel":249},"https://www.ros.org/reps/rep-2000.html",[53],[251,252,254],"h5",{"id":253},"進入ros官網","進入ROS官網",[15,256,257],{},[28,258],{"alt":30,"src":259},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image5.webp",[15,261,262],{},[28,263],{"alt":30,"src":264},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image6.webp",[15,266,267],{},"一定要安裝LTS版本的ROS2",[15,269,270],{},[28,271],{"alt":30,"src":272},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image7.webp",[251,274,276],{"id":275},"安裝ros2前期準備工作","安裝ROS2前期準備工作",[15,278,279],{},"裝LTS版本的ROS2點擊使用debian包管理工具安裝ROS2二進制文件",[15,281,282],{},[28,283],{"alt":30,"src":284},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image8.webp",[15,286,287],{},"按照ROS2官網教程在終端裏輸入如下命令",[15,289,290,293],{},[28,291],{"alt":30,"src":292},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image9.webp",[28,294],{"alt":30,"src":295},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image10.webp",[15,297,298],{},"依舊輸入以下命令啓動Ubuntu Universe Repo",[15,300,301,304],{},[28,302],{"alt":30,"src":303},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image11.webp",[28,305],{"alt":30,"src":306},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image12.webp",[251,308,310],{"id":309},"換源國內源","換源(國內源)",[15,312,313],{},"這個是官網的源，是從國外服務器下載ROS2二進制文件的，對網絡有要求，所以我們要給改爲國內源。",[15,315,316],{},[28,317],{"alt":30,"src":318},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image13.webp",[15,320,321],{},"百度搜索北京外國語大學鏡像源(親測，北方最快的源)",[15,323,324],{},[28,325],{"alt":30,"src":326},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image14.webp",[15,328,329],{},[28,330],{"alt":30,"src":331},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image15.webp",[15,333,334],{},"找到ROS2，然後勾上sudo和https，選擇正確的Linux發行版。在使用該命令前有可能會遇到權限不夠的問題，可以先往下看，如何以root權限運行所有命令。",[15,336,337,340],{},[28,338],{"alt":30,"src":339},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image16.webp",[28,341],{"alt":30,"src":342},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image17.webp",[15,344,345],{},"先輸入sudo passwd設置root密碼（Ubuntu系發行版要乾的事）（debian,Fedora等發行版在裝機時就已經設置過了，無需運行）",[15,347,348],{},[28,349],{"alt":30,"src":350},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image18.webp",[352,353,358],"pre",{"className":354,"code":356,"language":357},[355],"language-text","sudo passwd\n\nsu -\n","text",[359,360,356],"code",{"__ignoreMap":30},[15,362,363],{},"然後進入管理員權限下",[15,365,366],{},[28,367],{"alt":30,"src":368},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image19.webp",[15,370,371],{},"挨行復制輸入運行",[15,373,374,377],{},[28,375],{"alt":30,"src":376},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image20.webp",[28,378],{"alt":30,"src":379},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image21.webp",[15,381,382],{},[28,383],{"alt":30,"src":384},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image22.webp",[15,386,387,388,393],{},"上面下載key的時候如果卡住了，那就是github又抽風了，很正常的問題，可以選擇科學*上網(",[49,389,392],{"href":390,"rel":391},"https://sdutvincirobot.feishu.cn/wiki/HnjswlR8NiVjVgkbn6hcAlwzn2e",[53],"科學機場教程",")解決，如果還解決不了，可以通過下方教程修改hosts。",[15,395,396],{},[49,397,400],{"href":398,"rel":399},"https://blog.csdn.net/qq%5C_40584960/article/details/117963644?sharetype=blog&shareId=117963644&sharerefer=APP&sharesource=qq%5C_33274985&sharefrom=link",[53],"https://blog.csdn.net/qq\\_40584960/article/details/117963644?sharetype=blog&shareId=117963644&sharerefer=APP&sharesource=qq\\_33274985&sharefrom=link",[15,402,403],{},"成功下載key之後，繼續往下弄。",[15,405,406],{},"輸入exit退出root模式",[352,408,412],{"className":409,"code":410,"language":411,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","exit\n","bash",[359,413,414],{"__ignoreMap":30},[415,416,419],"span",{"class":417,"line":418},"line",1,[415,420,410],{"class":421},"sj4cs",[15,423,424],{},[28,425],{"alt":30,"src":426},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image23.webp",[251,428,430],{"id":429},"通過apt安裝ros2","通過apt安裝ROS2",[15,432,433],{},"把以下紅色框框的全部在終端裏敲一遍",[15,435,436],{},[28,437],{"alt":30,"src":438},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image24.webp",[15,440,441],{},"國內的鏡像下載還是非常快的。",[15,443,444],{},[28,445],{"alt":30,"src":446},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image25.webp",[251,448,450],{"id":449},"ros2基礎環境變量配置","ROS2基礎環境變量配置",[15,452,453],{},"複製該行",[15,455,456],{},[28,457],{"alt":30,"src":458},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image26.webp",[15,460,461],{},"輸入以下命令",[352,463,465],{"className":409,"code":464,"language":411,"meta":30,"style":30},"sudo apt-get install vim\nsudo vim ~/.bashrc\n",[359,466,467,483],{"__ignoreMap":30},[415,468,469,473,477,480],{"class":417,"line":418},[415,470,472],{"class":471},"sScJk","sudo",[415,474,476],{"class":475},"sZZnC"," apt-get",[415,478,479],{"class":475}," install",[415,481,482],{"class":475}," vim\n",[415,484,486,488,491],{"class":417,"line":485},2,[415,487,472],{"class":471},[415,489,490],{"class":475}," vim",[415,492,493],{"class":475}," ~/.bashrc\n",[15,495,496],{},"在最底部把這行加上（vim不會使用的，請自行百度）",[15,498,499],{},[28,500],{"alt":30,"src":501},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image27.webp",[15,503,504],{},"刷新以下當前終端的環境變量",[352,506,508],{"className":409,"code":507,"language":411,"meta":30,"style":30},"echo 'export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc\nsource ~/.bashrc\n",[359,509,510,524],{"__ignoreMap":30},[415,511,512,515,518,522],{"class":417,"line":418},[415,513,514],{"class":421},"echo",[415,516,517],{"class":475}," 'export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml'",[415,519,521],{"class":520},"szBVR"," >>",[415,523,493],{"class":475},[415,525,526,529],{"class":417,"line":485},[415,527,528],{"class":421},"source",[415,530,493],{"class":475},[15,532,533],{},[28,534],{"alt":30,"src":535},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image28.webp",[251,537,539],{"id":538},"測試ros2","測試ROS2",[15,541,542,543,546],{},"請往下翻到**",[359,544,545],{},"测试ROS2","**章節",[40,548,550],{"id":549},"從源碼安裝ros2難度較高ubuntu用上面那個簡單方法即可","從源碼安裝ROS2(難度較高，Ubuntu用上面那個簡單方法即可。)",[251,552,554],{"id":553},"fedora或者rocky","Fedora或者Rocky",[15,556,557],{},[49,558,51],{"href":51,"rel":559},[53],[15,561,562],{},"先進官網,選擇對應的版本,比如我這裏選擇ROS Jazzy.",[15,564,565],{},[28,566],{"alt":30,"src":567},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image29.webp",[15,569,570],{},"然後選擇用源碼進行編譯,找到對應的發行版,比如我這裏是Feodra.",[15,572,573],{},[28,574],{"alt":30,"src":575},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image30.webp",[15,577,578],{},"然後根據官網教程來就行",[15,580,581],{},[28,582],{"alt":30,"src":583},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image31.webp",[85,585,586],{},[88,587,588],{},"設置區域",[15,590,591,592,595,596,599],{},"確保你的 locale 支持 ",[359,593,594],{},"UTF-8","。如果你在一個最小的環境（比如 docker 容器）中，locale 可能是 ",[359,597,598],{},"C"," 等最小的東西。我們使用以下設置進行測試。但是，如果您使用的是其他支持 UTF-8 的區域設置，應該沒問題。",[352,601,605],{"className":602,"code":603,"language":604,"meta":30,"style":30},"language-cmake shiki shiki-themes github-light github-dark","locale  # check for UTF-8\n\nsudo dnf install langpacks-en glibc-langpack-en\nexport LANG=en_US.UTF-8\n\nlocale  # verify settings\n","cmake",[359,606,607,617,623,629,637,642],{"__ignoreMap":30},[415,608,609,613],{"class":417,"line":418},[415,610,612],{"class":611},"sVt8B","locale  ",[415,614,616],{"class":615},"sJ8bj","# check for UTF-8\n",[415,618,619],{"class":417,"line":485},[415,620,622],{"emptyLinePlaceholder":621},true,"\n",[415,624,626],{"class":417,"line":625},3,[415,627,628],{"class":611},"sudo dnf install langpacks-en glibc-langpack-en\n",[415,630,631,634],{"class":417,"line":113},[415,632,633],{"class":520},"export",[415,635,636],{"class":611}," LANG=en_US.UTF-8\n",[415,638,640],{"class":417,"line":639},5,[415,641,622],{"emptyLinePlaceholder":621},[415,643,644,646],{"class":417,"line":126},[415,645,612],{"class":611},[415,647,648],{"class":615},"# verify settings\n",[85,650,651],{"start":485},[88,652,653],{},"啓用必須的倉庫",[15,655,656],{},"Fedora無需額外啓用倉庫,RHEL需要.",[85,658,659],{"start":625},[88,660,661],{},"安裝開發工具",[352,663,665],{"className":602,"code":664,"language":604,"meta":30,"style":30},"sudo dnf install -y \\\n  cmake \\\n  gcc-c++ \\\n  git \\\n  make \\\n  patch \\\n  python3-colcon-common-extensions \\\n  python3-mypy \\\n  python3-pip \\\n  python3-pydocstyle \\\n  python3-pytest \\\n  python3-pytest-cov \\\n  python3-pytest-mock \\\n  python3-pytest-repeat \\\n  python3-pytest-rerunfailures \\\n  python3-pytest-runner \\\n  python3-rosdep \\\n  python3-setuptools \\\n  python3-vcstool \\\n  wget\n\n# install some pip packages needed for testing and\n\n# not available as RPMs\npython3 -m pip install -U --user \\\n  flake8-blind-except==0.1.1 \\\n  flake8-class-newline \\\n  flake8-deprecated\n",[359,666,667,672,677,682,687,692,697,703,708,714,720,725,731,737,742,748,753,759,765,771,777,782,788,793,799,805,811,817],{"__ignoreMap":30},[415,668,669],{"class":417,"line":418},[415,670,671],{"class":611},"sudo dnf install -y \\\n",[415,673,674],{"class":417,"line":485},[415,675,676],{"class":611},"  cmake \\\n",[415,678,679],{"class":417,"line":625},[415,680,681],{"class":611},"  gcc-c++ \\\n",[415,683,684],{"class":417,"line":113},[415,685,686],{"class":611},"  git \\\n",[415,688,689],{"class":417,"line":639},[415,690,691],{"class":611},"  make \\\n",[415,693,694],{"class":417,"line":126},[415,695,696],{"class":611},"  patch \\\n",[415,698,700],{"class":417,"line":699},7,[415,701,702],{"class":611},"  python3-colcon-common-extensions \\\n",[415,704,705],{"class":417,"line":139},[415,706,707],{"class":611},"  python3-mypy \\\n",[415,709,711],{"class":417,"line":710},9,[415,712,713],{"class":611},"  python3-pip \\\n",[415,715,717],{"class":417,"line":716},10,[415,718,719],{"class":611},"  python3-pydocstyle \\\n",[415,721,722],{"class":417,"line":159},[415,723,724],{"class":611},"  python3-pytest \\\n",[415,726,728],{"class":417,"line":727},12,[415,729,730],{"class":611},"  python3-pytest-cov \\\n",[415,732,734],{"class":417,"line":733},13,[415,735,736],{"class":611},"  python3-pytest-mock \\\n",[415,738,739],{"class":417,"line":178},[415,740,741],{"class":611},"  python3-pytest-repeat \\\n",[415,743,745],{"class":417,"line":744},15,[415,746,747],{"class":611},"  python3-pytest-rerunfailures \\\n",[415,749,750],{"class":417,"line":190},[415,751,752],{"class":611},"  python3-pytest-runner \\\n",[415,754,756],{"class":417,"line":755},17,[415,757,758],{"class":611},"  python3-rosdep \\\n",[415,760,762],{"class":417,"line":761},18,[415,763,764],{"class":611},"  python3-setuptools \\\n",[415,766,768],{"class":417,"line":767},19,[415,769,770],{"class":611},"  python3-vcstool \\\n",[415,772,774],{"class":417,"line":773},20,[415,775,776],{"class":611},"  wget\n",[415,778,780],{"class":417,"line":779},21,[415,781,622],{"emptyLinePlaceholder":621},[415,783,785],{"class":417,"line":784},22,[415,786,787],{"class":615},"# install some pip packages needed for testing and\n",[415,789,791],{"class":417,"line":790},23,[415,792,622],{"emptyLinePlaceholder":621},[415,794,796],{"class":417,"line":795},24,[415,797,798],{"class":615},"# not available as RPMs\n",[415,800,802],{"class":417,"line":801},25,[415,803,804],{"class":611},"python3 -m pip install -U --user \\\n",[415,806,808],{"class":417,"line":807},26,[415,809,810],{"class":611},"  flake8-blind-except==0.1.1 \\\n",[415,812,814],{"class":417,"line":813},27,[415,815,816],{"class":611},"  flake8-class-newline \\\n",[415,818,820],{"class":417,"line":819},28,[415,821,822],{"class":611},"  flake8-deprecated\n",[85,824,825,1258],{"start":113},[88,826,827,828,833,835,836,856,858,861,866,868,869,878,883,885,889,891,894,896,899,981,983,986,988,991,996,1026,1028,1031,1033,1034,1043,1045,1046,1049,1050,1072,1074,1075,1077,1080,1085,1087,1088,1090,1091,1157,1225,1227,1230,1236,1245,1247,1250,1252,1253,1255],{},"構建ROS2",[85,829,830],{},[88,831,832],{},"獲取ROS2源碼",[97,834],{},"  找一個要存放ROS2的文件夾,建議在/home分區找,然後在這個文件夾下打開終端.",[352,837,839],{"className":602,"code":838,"language":604,"meta":30,"style":30},"mkdir -p ./ros2_jazzy/src\ncd ./ros2_jazzy\nvcs import --input https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos src\n",[359,840,841,846,851],{"__ignoreMap":30},[415,842,843],{"class":417,"line":418},[415,844,845],{"class":611},"mkdir -p ./ros2_jazzy/src\n",[415,847,848],{"class":417,"line":485},[415,849,850],{"class":611},"cd ./ros2_jazzy\n",[415,852,853],{"class":417,"line":625},[415,854,855],{"class":611},"vcs import --input https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos src\n",[97,857],{},[28,859],{"alt":30,"src":860},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image32.webp",[85,862,863],{"start":639},[88,864,865],{},"更新系統",[97,867],{},"  ROS 2 軟件包構建在經常更新的 紅帽系 系統上。始終建議您在安裝新軟件包之前確保您的系統是最新的。",[352,870,872],{"className":602,"code":871,"language":604,"meta":30,"style":30},"sudo dnf upgrade\n",[359,873,874],{"__ignoreMap":30},[415,875,876],{"class":417,"line":418},[415,877,871],{"class":611},[85,879,880],{"start":139},[88,881,882],{},"初始化並更換rosdep源",[97,884],{},[49,886,887],{"href":887,"rel":888},"https://mirrors.bfsu.edu.cn/help/rosdistro/",[53],[97,890],{},[28,892],{"alt":30,"src":893},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image33.webp",[97,895],{},[28,897],{"alt":30,"src":898},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image34.webp",[352,900,902],{"className":602,"code":901,"language":604,"meta":30,"style":30},"\n# 手动模拟 rosdep init\nsudo mkdir -p /etc/ros/rosdep/sources.list.d/\nsudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list -L https://mirrors.bfsu.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list\n\n# 加入环境\necho 'export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc\n\n# 加载.bashrc\nsource ~/.bashrc\n\n# 更新rosdep\nrosdep update\n",[359,903,904,908,913,924,939,943,948,953,957,962,967,971,976],{"__ignoreMap":30},[415,905,906],{"class":417,"line":418},[415,907,622],{"emptyLinePlaceholder":621},[415,909,910],{"class":417,"line":485},[415,911,912],{"class":615},"# 手动模拟 rosdep init\n",[415,914,915,918,921],{"class":417,"line":625},[415,916,917],{"class":611},"sudo mkdir -p /etc/ros/rosdep/",[415,919,920],{"class":471},"sources",[415,922,923],{"class":611},".list.d/\n",[415,925,926,929,931,934,936],{"class":417,"line":113},[415,927,928],{"class":611},"sudo curl -o /etc/ros/rosdep/",[415,930,920],{"class":471},[415,932,933],{"class":611},".list.d/20-default.list -L https://mirrors.bfsu.edu.cn/github-raw/ros/rosdistro/master/rosdep/",[415,935,920],{"class":471},[415,937,938],{"class":611},".list.d/20-default.list\n",[415,940,941],{"class":417,"line":639},[415,942,622],{"emptyLinePlaceholder":621},[415,944,945],{"class":417,"line":126},[415,946,947],{"class":615},"# 加入环境\n",[415,949,950],{"class":417,"line":699},[415,951,952],{"class":611},"echo 'export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc\n",[415,954,955],{"class":417,"line":139},[415,956,622],{"emptyLinePlaceholder":621},[415,958,959],{"class":417,"line":710},[415,960,961],{"class":615},"# 加载.bashrc\n",[415,963,964],{"class":417,"line":716},[415,965,966],{"class":611},"source ~/.bashrc\n",[415,968,969],{"class":417,"line":159},[415,970,622],{"emptyLinePlaceholder":621},[415,972,973],{"class":417,"line":727},[415,974,975],{"class":615},"# 更新rosdep\n",[415,977,978],{"class":417,"line":733},[415,979,980],{"class":611},"rosdep update\n",[97,982],{},[28,984],{"alt":30,"src":985},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image35.webp",[97,987],{},[28,989],{"alt":30,"src":990},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image36.webp",[85,992,993],{"start":744},[88,994,995],{},"通過rosdep安裝依賴",[352,997,999],{"className":602,"code":998,"language":604,"meta":30,"style":30},"export ROS_PYTHON_VERSION=3\n\nrosdep install --from-paths src --ignore-src -y --skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[359,1000,1001,1008,1012],{"__ignoreMap":30},[415,1002,1003,1005],{"class":417,"line":418},[415,1004,633],{"class":520},[415,1006,1007],{"class":611}," ROS_PYTHON_VERSION=3\n",[415,1009,1010],{"class":417,"line":485},[415,1011,622],{"emptyLinePlaceholder":621},[415,1013,1014,1017,1020,1023],{"class":417,"line":625},[415,1015,1016],{"class":611},"rosdep install --from-",[415,1018,1019],{"class":520},"paths",[415,1021,1022],{"class":611}," src --ignore-src -y --skip-keys ",[415,1024,1025],{"class":475},"\"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[97,1027],{},[28,1029],{"alt":30,"src":1030},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image37.webp",[97,1032],{},"  如果出現上面這種錯誤,使用pip3安裝包.",[352,1035,1037],{"className":602,"code":1036,"language":604,"meta":30,"style":30},"sudo pip3 install flake8-docstrings\n",[359,1038,1039],{"__ignoreMap":30},[415,1040,1041],{"class":417,"line":418},[415,1042,1036],{"class":611},[97,1044],{},"  然後,使用下面命令忽略掉",[359,1047,1048],{},"flake8-docstrings",".",[352,1051,1053],{"className":602,"code":1052,"language":604,"meta":30,"style":30},"rosdep install --from-paths src --ignore-src -y \\\n--skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-flake8-docstrings\"\n",[359,1054,1055,1064],{"__ignoreMap":30},[415,1056,1057,1059,1061],{"class":417,"line":418},[415,1058,1016],{"class":611},[415,1060,1019],{"class":520},[415,1062,1063],{"class":611}," src --ignore-src -y \\\n",[415,1065,1066,1069],{"class":417,"line":485},[415,1067,1068],{"class":611},"--skip-keys ",[415,1070,1071],{"class":475},"\"fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-flake8-docstrings\"\n",[97,1073],{},"  顯示成功即可",[97,1076],{},[28,1078],{"alt":30,"src":1079},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image38.webp",[85,1081,1082],{"start":795},[88,1083,1084],{},"配置環境(不是紅帽系的發行版不用弄)",[97,1086],{},"  如果你是紅帽繫系統需要下面配置",[97,1089],{},"  可以用下面這些命令暫時定義這些宏。",[352,1092,1094],{"className":409,"code":1093,"language":411,"meta":30,"style":30},"export RPM_PACKAGE_NAME=qt_gui_cpp   # 根据包名调整（如 ros_\u003Cpackage>）\nexport RPM_PACKAGE_VERSION=1.0.0\nexport RPM_PACKAGE_RELEASE=1\nexport RPM_ARCH=$(uname -m)\n",[359,1095,1096,1112,1124,1136],{"__ignoreMap":30},[415,1097,1098,1100,1103,1106,1109],{"class":417,"line":418},[415,1099,633],{"class":520},[415,1101,1102],{"class":611}," RPM_PACKAGE_NAME",[415,1104,1105],{"class":520},"=",[415,1107,1108],{"class":611},"qt_gui_cpp   ",[415,1110,1111],{"class":615},"# 根据包名调整（如 ros_\u003Cpackage>）\n",[415,1113,1114,1116,1119,1121],{"class":417,"line":485},[415,1115,633],{"class":520},[415,1117,1118],{"class":611}," RPM_PACKAGE_VERSION",[415,1120,1105],{"class":520},[415,1122,1123],{"class":421},"1.0.0\n",[415,1125,1126,1128,1131,1133],{"class":417,"line":625},[415,1127,633],{"class":520},[415,1129,1130],{"class":611}," RPM_PACKAGE_RELEASE",[415,1132,1105],{"class":520},[415,1134,1135],{"class":421},"1\n",[415,1137,1138,1140,1143,1145,1148,1151,1154],{"class":417,"line":113},[415,1139,633],{"class":520},[415,1141,1142],{"class":611}," RPM_ARCH",[415,1144,1105],{"class":520},[415,1146,1147],{"class":611},"$(",[415,1149,1150],{"class":471},"uname",[415,1152,1153],{"class":421}," -m",[415,1155,1156],{"class":611},")\n",[1158,1159,1160,1177],"table",{},[1161,1162,1163],"thead",{},[1164,1165,1166,1171,1174],"tr",{},[1167,1168,1170],"th",{"align":1169},"left","變量名",[1167,1172,1173],{"align":1169},"示例值",[1167,1175,1176],{"align":1169},"用途",[1178,1179,1180,1192,1203,1214],"tbody",{},[1164,1181,1182,1186,1189],{},[1183,1184,1185],"td",{"align":1169},"RPM_PACKAGE_NAME",[1183,1187,1188],{"align":1169},"qt_gui_cpp",[1183,1190,1191],{"align":1169},"定義 RPM 包名",[1164,1193,1194,1197,1200],{},[1183,1195,1196],{"align":1169},"RPM_PACKAGE_VERSION",[1183,1198,1199],{"align":1169},"1.0.0",[1183,1201,1202],{"align":1169},"定義 RPM 包版本",[1164,1204,1205,1208,1211],{},[1183,1206,1207],{"align":1169},"RPM_PACKAGE_RELEASE",[1183,1209,1210],{"align":1169},"1",[1183,1212,1213],{"align":1169},"定義 RPM 包發行號",[1164,1215,1216,1219,1222],{},[1183,1217,1218],{"align":1169},"RPM_ARCH",[1183,1220,1221],{"align":1169},"x86_64 或 arm64",[1183,1223,1224],{"align":1169},"定義目標系統架構",[97,1226],{},[28,1228],{"alt":30,"src":1229},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image39.webp",[85,1231,1233],{"start":1232},30,[88,1234,1235],{},"使用colcon構建源碼",[352,1237,1239],{"className":602,"code":1238,"language":604,"meta":30,"style":30},"colcon build --symlink-install\n",[359,1240,1241],{"__ignoreMap":30},[415,1242,1243],{"class":417,"line":418},[415,1244,1238],{"class":611},[97,1246],{},[28,1248],{"alt":30,"src":1249},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image40.webp",[97,1251],{},"  等待構建完畢,下方就是構建完畢且沒錯誤的樣子",[97,1254],{},[28,1256],{"alt":30,"src":1257},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image41.webp",[88,1259,1260],{},"配置基礎環境",[15,1262,1263,1264],{},"找到下方文件夾,並複製路徑,比如我的是",[359,1265,1266],{},"~/UserFloder/Applications/ros2_jazzy",[15,1268,1269],{},[28,1270],{"alt":30,"src":1271},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image42.webp",[15,1273,1274],{},"使用vim修改bash的環境",[352,1276,1278],{"className":602,"code":1277,"language":604,"meta":30,"style":30},"vim ~/.bashrc\n",[359,1279,1280],{"__ignoreMap":30},[415,1281,1282],{"class":417,"line":418},[415,1283,1277],{"class":611},[15,1285,1286],{},"使用Insert按鍵進行輸入",[15,1288,1289],{},[28,1290],{"alt":30,"src":1291},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image43.webp",[15,1293,1294,1295,1298],{},"添加完這兩行後,按ESC,然後",[359,1296,1297],{},":wq","保存並退出.",[352,1300,1302],{"className":602,"code":1301,"language":604,"meta":30,"style":30},"\n# 刷新当前环境变量\nsource ~/.bashrc\n",[359,1303,1304,1308,1313],{"__ignoreMap":30},[415,1305,1306],{"class":417,"line":418},[415,1307,622],{"emptyLinePlaceholder":621},[415,1309,1310],{"class":417,"line":485},[415,1311,1312],{"class":615},"# 刷新当前环境变量\n",[415,1314,1315],{"class":417,"line":625},[415,1316,966],{"class":611},[85,1318,1319],{"start":126},[88,1320,539],{},[15,1322,542,1323,546],{},[359,1324,545],{},[251,1326,1328],{"id":1327},"debian","Debian",[15,1330,1331],{},[49,1332,51],{"href":51,"rel":1333},[53],[15,1335,562],{},[15,1337,1338],{},[28,1339],{"alt":30,"src":1340},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image44.webp",[15,1342,1343],{},"然後選擇用源碼進行編譯,找到對應的發行版,比如我這裏是Debian.",[15,1345,1346],{},[28,1347],{"alt":30,"src":1348},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image45.webp",[15,1350,1351],{},"接下來，從下圖這裏開始，跟着官方教程一路敲，但是有幾個需要注意的點，我這裏都會寫出來：",[15,1353,1354],{},[28,1355],{"alt":30,"src":1356},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image46.webp",[85,1358,1359],{},[88,1360,588],{},[352,1362,1364],{"className":409,"code":1363,"language":411,"meta":30,"style":30},"locale  # check for UTF-8\n\nsudo apt update && sudo apt install locales\nsudo locale-gen en_US en_US.UTF-8\nsudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8\nexport LANG=en_US.UTF-8\n\nlocale  # verify settings\n",[359,1365,1366,1374,1378,1400,1413,1425,1437,1441],{"__ignoreMap":30},[415,1367,1368,1371],{"class":417,"line":418},[415,1369,1370],{"class":471},"locale",[415,1372,1373],{"class":615},"  # check for UTF-8\n",[415,1375,1376],{"class":417,"line":485},[415,1377,622],{"emptyLinePlaceholder":621},[415,1379,1380,1382,1385,1388,1391,1393,1395,1397],{"class":417,"line":625},[415,1381,472],{"class":471},[415,1383,1384],{"class":475}," apt",[415,1386,1387],{"class":475}," update",[415,1389,1390],{"class":611}," && ",[415,1392,472],{"class":471},[415,1394,1384],{"class":475},[415,1396,479],{"class":475},[415,1398,1399],{"class":475}," locales\n",[415,1401,1402,1404,1407,1410],{"class":417,"line":113},[415,1403,472],{"class":471},[415,1405,1406],{"class":475}," locale-gen",[415,1408,1409],{"class":475}," en_US",[415,1411,1412],{"class":475}," en_US.UTF-8\n",[415,1414,1415,1417,1420,1423],{"class":417,"line":639},[415,1416,472],{"class":471},[415,1418,1419],{"class":475}," update-locale",[415,1421,1422],{"class":475}," LC_ALL=en_US.UTF-8",[415,1424,636],{"class":475},[415,1426,1427,1429,1432,1434],{"class":417,"line":126},[415,1428,633],{"class":520},[415,1430,1431],{"class":611}," LANG",[415,1433,1105],{"class":520},[415,1435,1436],{"class":611},"en_US.UTF-8\n",[415,1438,1439],{"class":417,"line":699},[415,1440,622],{"emptyLinePlaceholder":621},[415,1442,1443,1445],{"class":417,"line":139},[415,1444,1370],{"class":471},[415,1446,1447],{"class":615},"  # verify settings\n",[85,1449,1450],{"start":485},[88,1451,1452],{},"換源",[15,1454,1455],{},[28,1456],{"alt":30,"src":1457},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image47.webp",[15,1459,1460],{},"紅色部分是Ubuntu要做的，我們是debian,不需要做。",[15,1462,1463],{},"藍色部分我們不要用官方的，官方是國外源，我們替換成國內源。",[15,1465,1466],{},"先去鏡像源換源：",[15,1468,1469],{},[49,1470,1471],{"href":1471,"rel":1472},"https://mirrors.bfsu.edu.cn/help/ros2/",[53],[15,1474,1475],{},[28,1476],{"alt":30,"src":1477},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image48.webp",[15,1479,1480],{},"比如我是debian12：",[352,1482,1484],{"className":409,"code":1483,"language":411,"meta":30,"style":30},"sudo apt install curl gnupg2\nsudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg\n\necho \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.bfsu.edu.cn/ros2/ubuntu bookworm main\" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null\nsudo apt update\n",[359,1485,1486,1500,1518,1522,1556],{"__ignoreMap":30},[415,1487,1488,1490,1492,1494,1497],{"class":417,"line":418},[415,1489,472],{"class":471},[415,1491,1384],{"class":475},[415,1493,479],{"class":475},[415,1495,1496],{"class":475}," curl",[415,1498,1499],{"class":475}," gnupg2\n",[415,1501,1502,1504,1506,1509,1512,1515],{"class":417,"line":485},[415,1503,472],{"class":471},[415,1505,1496],{"class":475},[415,1507,1508],{"class":421}," -sSL",[415,1510,1511],{"class":475}," https://raw.githubusercontent.com/ros/rosdistro/master/ros.key",[415,1513,1514],{"class":421},"  -o",[415,1516,1517],{"class":475}," /usr/share/keyrings/ros-archive-keyring.gpg\n",[415,1519,1520],{"class":417,"line":625},[415,1521,622],{"emptyLinePlaceholder":621},[415,1523,1524,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553],{"class":417,"line":113},[415,1525,514],{"class":421},[415,1527,1528],{"class":475}," \"deb [arch=$(",[415,1530,1531],{"class":471},"dpkg",[415,1533,1534],{"class":421}," --print-architecture",[415,1536,1537],{"class":475},") signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.bfsu.edu.cn/ros2/ubuntu bookworm main\"",[415,1539,1540],{"class":520}," |",[415,1542,1543],{"class":471}," sudo",[415,1545,1546],{"class":475}," tee",[415,1548,1549],{"class":475}," /etc/apt/sources.list.d/ros2.list",[415,1551,1552],{"class":520}," >",[415,1554,1555],{"class":475}," /dev/null\n",[415,1557,1558,1560,1562],{"class":417,"line":639},[415,1559,472],{"class":471},[415,1561,1384],{"class":475},[415,1563,1564],{"class":475}," update\n",[15,1566,1567],{},[28,1568],{"alt":30,"src":1569},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image49.webp",[85,1571,1572],{"start":625},[88,1573,1574],{},"上圖成功換源後，再安裝ros的工具：",[15,1576,1577],{},[28,1578],{"alt":30,"src":1579},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image50.webp",[352,1581,1583],{"className":409,"code":1582,"language":411,"meta":30,"style":30},"sudo apt update && sudo apt install -y \\\n  python3-flake8-blind-except \\\n  python3-flake8-class-newline \\\n  python3-flake8-deprecated \\\n  python3-mypy \\\n  python3-pip \\\n  python3-pytest \\\n  python3-pytest-cov \\\n  python3-pytest-mock \\\n  python3-pytest-repeat \\\n  python3-pytest-rerunfailures \\\n  python3-pytest-runner \\\n  python3-pytest-timeout \\\n  ros-dev-tools\n",[359,1584,1585,1607,1614,1621,1628,1635,1642,1649,1656,1663,1670,1677,1684,1691],{"__ignoreMap":30},[415,1586,1587,1589,1591,1593,1595,1597,1599,1601,1604],{"class":417,"line":418},[415,1588,472],{"class":471},[415,1590,1384],{"class":475},[415,1592,1387],{"class":475},[415,1594,1390],{"class":611},[415,1596,472],{"class":471},[415,1598,1384],{"class":475},[415,1600,479],{"class":475},[415,1602,1603],{"class":421}," -y",[415,1605,1606],{"class":421}," \\\n",[415,1608,1609,1612],{"class":417,"line":485},[415,1610,1611],{"class":475},"  python3-flake8-blind-except",[415,1613,1606],{"class":421},[415,1615,1616,1619],{"class":417,"line":625},[415,1617,1618],{"class":475},"  python3-flake8-class-newline",[415,1620,1606],{"class":421},[415,1622,1623,1626],{"class":417,"line":113},[415,1624,1625],{"class":475},"  python3-flake8-deprecated",[415,1627,1606],{"class":421},[415,1629,1630,1633],{"class":417,"line":639},[415,1631,1632],{"class":475},"  python3-mypy",[415,1634,1606],{"class":421},[415,1636,1637,1640],{"class":417,"line":126},[415,1638,1639],{"class":475},"  python3-pip",[415,1641,1606],{"class":421},[415,1643,1644,1647],{"class":417,"line":699},[415,1645,1646],{"class":475},"  python3-pytest",[415,1648,1606],{"class":421},[415,1650,1651,1654],{"class":417,"line":139},[415,1652,1653],{"class":475},"  python3-pytest-cov",[415,1655,1606],{"class":421},[415,1657,1658,1661],{"class":417,"line":710},[415,1659,1660],{"class":475},"  python3-pytest-mock",[415,1662,1606],{"class":421},[415,1664,1665,1668],{"class":417,"line":716},[415,1666,1667],{"class":475},"  python3-pytest-repeat",[415,1669,1606],{"class":421},[415,1671,1672,1675],{"class":417,"line":159},[415,1673,1674],{"class":475},"  python3-pytest-rerunfailures",[415,1676,1606],{"class":421},[415,1678,1679,1682],{"class":417,"line":727},[415,1680,1681],{"class":475},"  python3-pytest-runner",[415,1683,1606],{"class":421},[415,1685,1686,1689],{"class":417,"line":733},[415,1687,1688],{"class":475},"  python3-pytest-timeout",[415,1690,1606],{"class":421},[415,1692,1693],{"class":417,"line":178},[415,1694,1695],{"class":475},"  ros-dev-tools\n",[85,1697,1698],{"start":113},[88,1699,1700],{},"下載ROS2源碼",[15,1702,1703],{},[28,1704],{"alt":30,"src":1705},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image51.webp",[15,1707,1708],{},"找一個要存放ROS2的文件夾,建議在/home分區找,然後在這個文件夾下打開終端.",[352,1710,1711],{"className":602,"code":838,"language":604,"meta":30,"style":30},[359,1712,1713,1717,1721],{"__ignoreMap":30},[415,1714,1715],{"class":417,"line":418},[415,1716,845],{"class":611},[415,1718,1719],{"class":417,"line":485},[415,1720,850],{"class":611},[415,1722,1723],{"class":417,"line":625},[415,1724,855],{"class":611},[15,1726,1727],{},[28,1728],{"alt":30,"src":1729},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image52.webp",[85,1731,1732],{"start":639},[88,1733,1734],{},"補依賴之前，我們需要先初始化rosdep並給rosdep換源：",[15,1736,1737],{},[28,1738],{"alt":30,"src":1739},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image53.webp",[15,1741,1742],{},"圖中紅色部分，不要跟着這個來，這個是官方源，會很慢很慢，建議用bfsu的倉庫。",[15,1744,1745],{},[49,1746,887],{"href":887,"rel":1747},[53],[15,1749,1750],{},[28,1751],{"alt":30,"src":1752},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image54.webp",[15,1754,1755],{},[28,1756],{"alt":30,"src":1757},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image55.webp",[352,1759,1760],{"className":602,"code":901,"language":604,"meta":30,"style":30},[359,1761,1762,1766,1770,1778,1790,1794,1798,1802,1806,1810,1814,1818,1822],{"__ignoreMap":30},[415,1763,1764],{"class":417,"line":418},[415,1765,622],{"emptyLinePlaceholder":621},[415,1767,1768],{"class":417,"line":485},[415,1769,912],{"class":615},[415,1771,1772,1774,1776],{"class":417,"line":625},[415,1773,917],{"class":611},[415,1775,920],{"class":471},[415,1777,923],{"class":611},[415,1779,1780,1782,1784,1786,1788],{"class":417,"line":113},[415,1781,928],{"class":611},[415,1783,920],{"class":471},[415,1785,933],{"class":611},[415,1787,920],{"class":471},[415,1789,938],{"class":611},[415,1791,1792],{"class":417,"line":639},[415,1793,622],{"emptyLinePlaceholder":621},[415,1795,1796],{"class":417,"line":126},[415,1797,947],{"class":615},[415,1799,1800],{"class":417,"line":699},[415,1801,952],{"class":611},[415,1803,1804],{"class":417,"line":139},[415,1805,622],{"emptyLinePlaceholder":621},[415,1807,1808],{"class":417,"line":710},[415,1809,961],{"class":615},[415,1811,1812],{"class":417,"line":716},[415,1813,966],{"class":611},[415,1815,1816],{"class":417,"line":159},[415,1817,622],{"emptyLinePlaceholder":621},[415,1819,1820],{"class":417,"line":727},[415,1821,975],{"class":615},[415,1823,1824],{"class":417,"line":733},[415,1825,980],{"class":611},[15,1827,1828],{},[28,1829],{"alt":30,"src":1830},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image56.webp",[15,1832,1833],{},[28,1834],{"alt":30,"src":1835},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image57.webp",[15,1837,1838],{},"出現以上紅框部分，就是成功換源了。如果你不換源，下面補依賴的過程可能會巨慢（我具體沒試過，猜測），除非你科學了。",[352,1840,1842],{"className":602,"code":1841,"language":604,"meta":30,"style":30},"sudo apt upgrade\n\nexport ROS_PYTHON_VERSION=3\n\nrosdep install --from-paths src --ignore-src -y --skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[359,1843,1844,1849,1853,1859,1863],{"__ignoreMap":30},[415,1845,1846],{"class":417,"line":418},[415,1847,1848],{"class":611},"sudo apt upgrade\n",[415,1850,1851],{"class":417,"line":485},[415,1852,622],{"emptyLinePlaceholder":621},[415,1854,1855,1857],{"class":417,"line":625},[415,1856,633],{"class":520},[415,1858,1007],{"class":611},[415,1860,1861],{"class":417,"line":113},[415,1862,622],{"emptyLinePlaceholder":621},[415,1864,1865,1867,1869,1871],{"class":417,"line":639},[415,1866,1016],{"class":611},[415,1868,1019],{"class":520},[415,1870,1022],{"class":611},[415,1872,1025],{"class":475},[15,1874,1875],{},[28,1876],{"alt":30,"src":1877},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image58.webp",[85,1879,1880],{"start":126},[88,1881,1882],{},"編譯ROS2",[15,1884,1885],{},"在ros_jazzy目錄下，打開終端，跑下面命令。",[352,1887,1888],{"className":409,"code":1238,"language":411,"meta":30,"style":30},[359,1889,1890],{"__ignoreMap":30},[415,1891,1892,1895,1898],{"class":417,"line":418},[415,1893,1894],{"class":471},"colcon",[415,1896,1897],{"class":475}," build",[415,1899,1900],{"class":421}," --symlink-install\n",[15,1902,1903],{},"colcon build還有以下命令，如--packages-skip和--packages-select用來跳過和單個功能包編譯。",[15,1905,1906],{},[28,1907],{"alt":30,"src":1908},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image59.webp",[15,1910,1911],{},"等待構建完畢,下方就是構建完畢且沒錯誤的樣子",[15,1913,1914],{},[28,1915],{"alt":30,"src":1916},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image60.webp",[85,1918,1919],{"start":699},[88,1920,1260],{},[15,1922,1263,1923],{},[359,1924,1266],{},[15,1926,1927],{},[28,1928],{"alt":30,"src":1929},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image61.webp",[15,1931,1274],{},[352,1933,1934],{"className":602,"code":1277,"language":604,"meta":30,"style":30},[359,1935,1936],{"__ignoreMap":30},[415,1937,1938],{"class":417,"line":418},[415,1939,1277],{"class":611},[15,1941,1286],{},[15,1943,1944],{},[28,1945],{"alt":30,"src":1946},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image62.webp",[352,1948,1950],{"className":409,"code":1949,"language":411,"meta":30,"style":30},"\n# 配置ROS2环境\nexport ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml\nsource ~/UserFloder/Applcations/ros2_jazzy/install/setup.bash\n",[359,1951,1952,1956,1961,1973],{"__ignoreMap":30},[415,1953,1954],{"class":417,"line":418},[415,1955,622],{"emptyLinePlaceholder":621},[415,1957,1958],{"class":417,"line":485},[415,1959,1960],{"class":615},"# 配置ROS2环境\n",[415,1962,1963,1965,1968,1970],{"class":417,"line":625},[415,1964,633],{"class":520},[415,1966,1967],{"class":611}," ROSDISTRO_INDEX_URL",[415,1969,1105],{"class":520},[415,1971,1972],{"class":611},"https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml\n",[415,1974,1975,1977],{"class":417,"line":113},[415,1976,528],{"class":421},[415,1978,1979],{"class":475}," ~/UserFloder/Applcations/ros2_jazzy/install/setup.bash\n",[15,1981,1294,1982,1298],{},[359,1983,1297],{},[352,1985,1986],{"className":602,"code":1301,"language":604,"meta":30,"style":30},[359,1987,1988,1992,1996],{"__ignoreMap":30},[415,1989,1990],{"class":417,"line":418},[415,1991,622],{"emptyLinePlaceholder":621},[415,1993,1994],{"class":417,"line":485},[415,1995,1312],{"class":615},[415,1997,1998],{"class":417,"line":625},[415,1999,966],{"class":611},[85,2001,2002],{"start":139},[88,2003,539],{},[15,2005,542,2006,546],{},[359,2007,545],{},[40,2009,2011],{"id":2010},"docker安裝ros2","Docker安裝ROS2",[15,2013,2014],{},[49,2015,2018],{"href":2016,"rel":2017},"https://sdutvincirobot.feishu.cn/wiki/KRSMwKmTvivWRskSRszc2vfNnoc",[53],"Docker教程",[10,2020,2022],{"id":2021},"ros2安裝進階可選","ROS2安裝進階(可選)",[15,2024,2025],{},"上面只是安裝了最基本的ROS2包和配置了最基本的ROS2環境。",[15,2027,2028],{},"你安裝完上面的內容後，可以選擇接着進行下面的進階配置ROS2環境。",[15,2030,2031],{},"也可以不安裝進階得東西，學到啥再安裝啥就可以，當然也有想一勞永逸的同學，所以下面也會列出來最常用的ros2包和環境配置供大家一次性安裝。",[15,2033,2034],{},[49,2035,2038],{"href":2036,"rel":2037},"https://index.ros.org/?search%5C_packages=true",[53],"https://index.ros.org/?search\\_packages=true",[40,2040,2041],{"id":2041},"安裝進階的包",[15,2043,2044],{},"以下是一些ROS2自帶的導航算法和仿真環境等等的包，下方將列出這些包。",[15,2046,2047],{},"如果你是Ubuntu的話：",[15,2049,2050],{},"下面的包你全都可以用apt安裝，不用手動編譯！！！",[15,2052,2053],{},"如果你不是Ubuntu的話：",[15,2055,2056],{},"灰色的是上面基礎教程安裝過的包，",[15,2058,2059],{},"黃色是需要手動編譯的包，",[15,2061,2062],{},"藍色是不僅要手動編譯，還要手動修改一些源碼的包。",[1158,2064,2065,2072],{},[1161,2066,2067],{},[1164,2068,2069],{},[1167,2070,2071],{"align":1169},"ROS的包（非Ubuntu的發行版基本都需要手動編譯）",[1178,2073,2074,2079,2084,2089,2094,2099,2104,2109,2114,2119,2124,2129,2134,2139,2144,2149,2154,2159,2164,2169],{},[1164,2075,2076],{},[1183,2077,2078],{"align":1169},"軟件包/庫名稱",[1164,2080,2081],{},[1183,2082,2083],{"align":1169},"ros-humble-desktop",[1164,2085,2086],{},[1183,2087,2088],{"align":1169},"ros-humble-xacro",[1164,2090,2091],{},[1183,2092,2093],{"align":1169},"ros-humble-joint-state-publisher",[1164,2095,2096],{},[1183,2097,2098],{"align":1169},"ros-humble-joint-state-publisher-gui",[1164,2100,2101],{},[1183,2102,2103],{"align":1169},"ros-humble-gazebo-ros",[1164,2105,2106],{},[1183,2107,2108],{"align":1169},"ros-humble-gazebo-ros-pkgs",[1164,2110,2111],{},[1183,2112,2113],{"align":1169},"ros-humble-ros-gz",[1164,2115,2116],{},[1183,2117,2118],{"align":1169},"ros-humble-diagnostic-updater",[1164,2120,2121],{},[1183,2122,2123],{"align":1169},"ros-humble-teleop-twist-keyboard",[1164,2125,2126],{},[1183,2127,2128],{"align":1169},"ros-humble-navigation2",[1164,2130,2131],{},[1183,2132,2133],{"align":1169},"ros-humble-nav2-bringup",[1164,2135,2136],{},[1183,2137,2138],{"align":1169},"ros-humble-slam-toolbox",[1164,2140,2141],{},[1183,2142,2143],{"align":1169},"ros-humble-cartographer",[1164,2145,2146],{},[1183,2147,2148],{"align":1169},"ros-humble-cartographer-ros",[1164,2150,2151],{},[1183,2152,2153],{"align":1169},"ros-humble-asio-cmake-module",[1164,2155,2156],{},[1183,2157,2158],{"align":1169},"ros-humble-serial-driver",[1164,2160,2161],{},[1183,2162,2163],{"align":1169},"ros-humble-pcl-ros",[1164,2165,2166],{},[1183,2167,2168],{"align":1169},"ros-humble-pointcloud-to-laserscan",[1164,2170,2171],{},[1183,2172,2173],{"align":1169},"ros-humble-vision-opencv",[1158,2175,2176,2183],{},[1161,2177,2178],{},[1164,2179,2180],{},[1167,2181,2182],{"align":1169},"非ROS包（基本都可以apt,dnf安裝）",[1178,2184,2185,2189,2194,2199,2204,2209],{},[1164,2186,2187],{},[1183,2188,2078],{"align":1169},[1164,2190,2191],{},[1183,2192,2193],{"align":1169},"libpcl-dev",[1164,2195,2196],{},[1183,2197,2198],{"align":1169},"libeigen3-dev",[1164,2200,2201],{},[1183,2202,2203],{"align":1169},"libpcap-dev",[1164,2205,2206],{},[1183,2207,2208],{"align":1169},"libboost-dev",[1164,2210,2211],{},[1183,2212,2213],{"align":1169},"libogre-1.12-dev",[15,2215,2216],{},"但是上面這些包可以依賴於其他的包，下面這個倉庫裏有全部的包的倉庫鏈接：（往後看就知道怎麼用了）",[15,2218,2219],{},[49,2220,2221],{"href":2221,"rel":2222},"https://github.com/ros/rosdistro/tree/master",[53],[15,2224,2225],{},[28,2226],{"alt":30,"src":2227},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image63.webp",[251,2229,2231],{"id":2230},"apt安裝方式ubuntu強烈建議","apt安裝方式（Ubuntu強烈建議）",[352,2233,2235],{"className":409,"code":2234,"language":411,"meta":30,"style":30},"sudo apt update && sudo apt install \\\n    ros-humble-desktop \\\n    ros-dev-tools \\\n    ros-humble-xacro \\\n    ros-humble-joint-state-publisher \\\n    ros-humble-joint-state-publisher-gui \\\n    ros-humble-ros-gz \\\n    ros-humble-gazebo-ros \\\n    ros-humble-gazebo-ros-pkgs \\\n    ros-humble-imu-tools \\\n    ros-humble-diagnostic-updater \\\n    ros-humble-teleop-twist-keyboard \\\n    ros-humble-navigation2 \\\n    ros-humble-nav2-bringup \\\n    ros-humble-slam-toolbox \\\n    ros-humble-cartographer \\\n    ros-humble-cartographer-ros \\\n    ros-humble-asio-cmake-module \\\n    ros-humble-serial-driver \\\n    ros-humble-pcl-ros \\\n    ros-humble-vision-opencv \\\n    ros-humble-pointcloud-to-laserscan \\\n    libpcl-dev \\\n    libeigen3-dev \\\n    libpcap-dev \\\n    python3-colcon-common-extensions\n",[359,2236,2237,2255,2262,2269,2276,2283,2290,2297,2304,2311,2318,2325,2332,2339,2346,2353,2360,2367,2374,2381,2388,2395,2402,2409,2416,2423],{"__ignoreMap":30},[415,2238,2239,2241,2243,2245,2247,2249,2251,2253],{"class":417,"line":418},[415,2240,472],{"class":471},[415,2242,1384],{"class":475},[415,2244,1387],{"class":475},[415,2246,1390],{"class":611},[415,2248,472],{"class":471},[415,2250,1384],{"class":475},[415,2252,479],{"class":475},[415,2254,1606],{"class":421},[415,2256,2257,2260],{"class":417,"line":485},[415,2258,2259],{"class":475},"    ros-humble-desktop",[415,2261,1606],{"class":421},[415,2263,2264,2267],{"class":417,"line":625},[415,2265,2266],{"class":475},"    ros-dev-tools",[415,2268,1606],{"class":421},[415,2270,2271,2274],{"class":417,"line":113},[415,2272,2273],{"class":475},"    ros-humble-xacro",[415,2275,1606],{"class":421},[415,2277,2278,2281],{"class":417,"line":639},[415,2279,2280],{"class":475},"    ros-humble-joint-state-publisher",[415,2282,1606],{"class":421},[415,2284,2285,2288],{"class":417,"line":126},[415,2286,2287],{"class":475},"    ros-humble-joint-state-publisher-gui",[415,2289,1606],{"class":421},[415,2291,2292,2295],{"class":417,"line":699},[415,2293,2294],{"class":475},"    ros-humble-ros-gz",[415,2296,1606],{"class":421},[415,2298,2299,2302],{"class":417,"line":139},[415,2300,2301],{"class":475},"    ros-humble-gazebo-ros",[415,2303,1606],{"class":421},[415,2305,2306,2309],{"class":417,"line":710},[415,2307,2308],{"class":475},"    ros-humble-gazebo-ros-pkgs",[415,2310,1606],{"class":421},[415,2312,2313,2316],{"class":417,"line":716},[415,2314,2315],{"class":475},"    ros-humble-imu-tools",[415,2317,1606],{"class":421},[415,2319,2320,2323],{"class":417,"line":159},[415,2321,2322],{"class":475},"    ros-humble-diagnostic-updater",[415,2324,1606],{"class":421},[415,2326,2327,2330],{"class":417,"line":727},[415,2328,2329],{"class":475},"    ros-humble-teleop-twist-keyboard",[415,2331,1606],{"class":421},[415,2333,2334,2337],{"class":417,"line":733},[415,2335,2336],{"class":475},"    ros-humble-navigation2",[415,2338,1606],{"class":421},[415,2340,2341,2344],{"class":417,"line":178},[415,2342,2343],{"class":475},"    ros-humble-nav2-bringup",[415,2345,1606],{"class":421},[415,2347,2348,2351],{"class":417,"line":744},[415,2349,2350],{"class":475},"    ros-humble-slam-toolbox",[415,2352,1606],{"class":421},[415,2354,2355,2358],{"class":417,"line":190},[415,2356,2357],{"class":475},"    ros-humble-cartographer",[415,2359,1606],{"class":421},[415,2361,2362,2365],{"class":417,"line":755},[415,2363,2364],{"class":475},"    ros-humble-cartographer-ros",[415,2366,1606],{"class":421},[415,2368,2369,2372],{"class":417,"line":761},[415,2370,2371],{"class":475},"    ros-humble-asio-cmake-module",[415,2373,1606],{"class":421},[415,2375,2376,2379],{"class":417,"line":767},[415,2377,2378],{"class":475},"    ros-humble-serial-driver",[415,2380,1606],{"class":421},[415,2382,2383,2386],{"class":417,"line":773},[415,2384,2385],{"class":475},"    ros-humble-pcl-ros",[415,2387,1606],{"class":421},[415,2389,2390,2393],{"class":417,"line":779},[415,2391,2392],{"class":475},"    ros-humble-vision-opencv",[415,2394,1606],{"class":421},[415,2396,2397,2400],{"class":417,"line":784},[415,2398,2399],{"class":475},"    ros-humble-pointcloud-to-laserscan",[415,2401,1606],{"class":421},[415,2403,2404,2407],{"class":417,"line":790},[415,2405,2406],{"class":475},"    libpcl-dev",[415,2408,1606],{"class":421},[415,2410,2411,2414],{"class":417,"line":795},[415,2412,2413],{"class":475},"    libeigen3-dev",[415,2415,1606],{"class":421},[415,2417,2418,2421],{"class":417,"line":801},[415,2419,2420],{"class":475},"    libpcap-dev",[415,2422,1606],{"class":421},[415,2424,2425],{"class":417,"line":807},[415,2426,2427],{"class":475},"    python3-colcon-common-extensions\n",[251,2429,2431],{"id":2430},"源碼方式非ubuntu","源碼方式（非Ubuntu）",[15,2433,2434],{},"以debian12爲例。",[2436,2437,2438],"h6",{"id":2438},"黃色的包",[15,2440,2441],{},"以安裝ros-jazzy-xacro，ros-jazzy-joint-state-publisher，ros-jazzy-joint-state-publisher-gui這三個包爲例，其他的包一樣操作。",[15,2443,2444],{},[49,2445,2038],{"href":2036,"rel":2446},[53],[15,2448,2449],{},"進入上面的網站，在下圖中選擇對應版本，比如我是JAZZY，然後在搜索框中搜索xacro，joint_state_publisher，joint_state_publisher_gui",[15,2451,2452],{},[28,2453],{"alt":30,"src":2454},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image64.webp",[15,2456,2457],{},"比如xacro",[15,2459,2460],{},[28,2461],{"alt":30,"src":2462},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image65.webp",[15,2464,2465],{},[28,2466],{"alt":30,"src":2467},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image66.webp",[15,2469,2470],{},"找到對應版本的xacro，然後倉庫地址是checkout URI，分支是vcs version,你可以使用git clone一個一個克隆下來，但這是巨麻煩的一件事，所以我們選擇ROS2提供給我們的vcs命令進行下載包的源碼。",[15,2472,2473],{},"首先，進入自己的ros2_jazzy文件並打開一個終端",[15,2475,2476],{},[28,2477],{"alt":30,"src":2478},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image67.webp",[15,2480,2481],{},"並創建一個.repos文件，文件名隨便起，比如我的叫my_ros2_jazzy_packages.repos",[15,2483,2484],{},[28,2485],{"alt":30,"src":2486},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image68.webp",[15,2488,2489],{},"然後用vscode編輯，因爲.repos使用的是yaml語言，vscode可以識別語法正確性：",[15,2491,2492],{},[28,2493],{"alt":30,"src":2494},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image69.webp",[15,2496,2497],{},"將剛纔查詢的信息寫上去：",[352,2499,2503],{"className":2500,"code":2501,"language":2502,"meta":30,"style":30},"language-yaml shiki shiki-themes github-light github-dark","repositories:\n  xacro:\n    type: git\n    url: https://github.com/ros/xacro.git\n    version: ros2\n","yaml",[359,2504,2505,2514,2521,2532,2542],{"__ignoreMap":30},[415,2506,2507,2511],{"class":417,"line":418},[415,2508,2510],{"class":2509},"s9eBZ","repositories",[415,2512,2513],{"class":611},":\n",[415,2515,2516,2519],{"class":417,"line":485},[415,2517,2518],{"class":2509},"  xacro",[415,2520,2513],{"class":611},[415,2522,2523,2526,2529],{"class":417,"line":625},[415,2524,2525],{"class":2509},"    type",[415,2527,2528],{"class":611},": ",[415,2530,2531],{"class":475},"git\n",[415,2533,2534,2537,2539],{"class":417,"line":113},[415,2535,2536],{"class":2509},"    url",[415,2538,2528],{"class":611},[415,2540,2541],{"class":475},"https://github.com/ros/xacro.git\n",[415,2543,2544,2547,2549],{"class":417,"line":639},[415,2545,2546],{"class":2509},"    version",[415,2548,2528],{"class":611},[415,2550,2551],{"class":475},"ros2\n",[15,2553,2554],{},"用同樣的方式找到其他包：",[15,2556,2557],{},[28,2558],{"alt":30,"src":2559},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image70.webp",[15,2561,2562],{},"上圖說明joint_state_publisher和joint_state_publisher_gui其實是一個倉庫，所以我們只需要克隆一個倉庫。",[15,2564,2565],{},"然後vcs version也就是git的分支是ros2。",[352,2567,2569],{"className":2500,"code":2568,"language":2502,"meta":30,"style":30},"repositories:\n  xacro:\n    type: git\n    url: https://github.com/ros/xacro.git\n    version: ros2\n  joint_state_publisher:\n    type: git\n    url: https://github.com/ros/joint_state_publisher.git\n    version: ros2\n",[359,2570,2571,2577,2583,2591,2599,2607,2614,2622,2631],{"__ignoreMap":30},[415,2572,2573,2575],{"class":417,"line":418},[415,2574,2510],{"class":2509},[415,2576,2513],{"class":611},[415,2578,2579,2581],{"class":417,"line":485},[415,2580,2518],{"class":2509},[415,2582,2513],{"class":611},[415,2584,2585,2587,2589],{"class":417,"line":625},[415,2586,2525],{"class":2509},[415,2588,2528],{"class":611},[415,2590,2531],{"class":475},[415,2592,2593,2595,2597],{"class":417,"line":113},[415,2594,2536],{"class":2509},[415,2596,2528],{"class":611},[415,2598,2541],{"class":475},[415,2600,2601,2603,2605],{"class":417,"line":639},[415,2602,2546],{"class":2509},[415,2604,2528],{"class":611},[415,2606,2551],{"class":475},[415,2608,2609,2612],{"class":417,"line":126},[415,2610,2611],{"class":2509},"  joint_state_publisher",[415,2613,2513],{"class":611},[415,2615,2616,2618,2620],{"class":417,"line":699},[415,2617,2525],{"class":2509},[415,2619,2528],{"class":611},[415,2621,2531],{"class":475},[415,2623,2624,2626,2628],{"class":417,"line":139},[415,2625,2536],{"class":2509},[415,2627,2528],{"class":611},[415,2629,2630],{"class":475},"https://github.com/ros/joint_state_publisher.git\n",[415,2632,2633,2635,2637],{"class":417,"line":710},[415,2634,2546],{"class":2509},[415,2636,2528],{"class":611},[415,2638,2551],{"class":475},[15,2640,2641],{},"其他的包如法炮製。",[15,2643,2644],{},"但我先以這倆包做個例子。",[15,2646,2647],{},"在ros2_jazzy目錄下的終端：",[352,2649,2651],{"className":409,"code":2650,"language":411,"meta":30,"style":30},"vcs import src \u003C my_ros2_jazzy_packages.repos\n",[359,2652,2653],{"__ignoreMap":30},[415,2654,2655,2658,2661,2664,2667],{"class":417,"line":418},[415,2656,2657],{"class":471},"vcs",[415,2659,2660],{"class":475}," import",[415,2662,2663],{"class":475}," src",[415,2665,2666],{"class":520}," \u003C",[415,2668,2669],{"class":475}," my_ros2_jazzy_packages.repos\n",[15,2671,2672],{},[28,2673],{"alt":30,"src":2674},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image71.webp",[15,2676,2677],{},"可以看到下圖，克隆成功了",[15,2679,2680],{},[28,2681],{"alt":30,"src":2682},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image72.webp",[15,2684,2685],{},"接下來進行補充依賴：",[352,2687,2689],{"className":409,"code":2688,"language":411,"meta":30,"style":30},"rosdep install --from-paths src --ignore-src -y --skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[359,2690,2691],{"__ignoreMap":30},[415,2692,2693,2696,2698,2701,2703,2706,2708,2711],{"class":417,"line":418},[415,2694,2695],{"class":471},"rosdep",[415,2697,479],{"class":475},[415,2699,2700],{"class":421}," --from-paths",[415,2702,2663],{"class":475},[415,2704,2705],{"class":421}," --ignore-src",[415,2707,1603],{"class":421},[415,2709,2710],{"class":421}," --skip-keys",[415,2712,2713],{"class":475}," \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[15,2715,2716],{},"提示下圖字樣，即是成功",[15,2718,2719],{},[28,2720],{"alt":30,"src":2721},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image73.webp",[15,2723,2724],{},"再編譯安裝即可：",[352,2726,2728],{"className":409,"code":2727,"language":411,"meta":30,"style":30},"colcon build --symlink-install\n\n# 或仅编译特定包\ncolcon build --packages-select xacro joint_state_publisher joint_state_publisher_gui\n",[359,2729,2730,2738,2742,2747],{"__ignoreMap":30},[415,2731,2732,2734,2736],{"class":417,"line":418},[415,2733,1894],{"class":471},[415,2735,1897],{"class":475},[415,2737,1900],{"class":421},[415,2739,2740],{"class":417,"line":485},[415,2741,622],{"emptyLinePlaceholder":621},[415,2743,2744],{"class":417,"line":625},[415,2745,2746],{"class":615},"# 或仅编译特定包\n",[415,2748,2749,2751,2753,2756,2759,2762],{"class":417,"line":113},[415,2750,1894],{"class":471},[415,2752,1897],{"class":475},[415,2754,2755],{"class":421}," --packages-select",[415,2757,2758],{"class":475}," xacro",[415,2760,2761],{"class":475}," joint_state_publisher",[415,2763,2764],{"class":475}," joint_state_publisher_gui\n",[15,2766,2767],{},[28,2768],{"alt":30,"src":2769},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image74.webp",[15,2771,2641],{},[15,2773,2774],{},"測試：",[352,2776,2778],{"className":409,"code":2777,"language":411,"meta":30,"style":30},"\n# 重新加载环境\nsource ~/.bashrc\n\n# 敲命令\nxacro\n",[359,2779,2780,2784,2789,2795,2799,2804],{"__ignoreMap":30},[415,2781,2782],{"class":417,"line":418},[415,2783,622],{"emptyLinePlaceholder":621},[415,2785,2786],{"class":417,"line":485},[415,2787,2788],{"class":615},"# 重新加载环境\n",[415,2790,2791,2793],{"class":417,"line":625},[415,2792,528],{"class":421},[415,2794,493],{"class":475},[415,2796,2797],{"class":417,"line":113},[415,2798,622],{"emptyLinePlaceholder":621},[415,2800,2801],{"class":417,"line":639},[415,2802,2803],{"class":615},"# 敲命令\n",[415,2805,2806],{"class":417,"line":126},[415,2807,2808],{"class":471},"xacro\n",[15,2810,2811],{},"如下圖xacro提示error即是成功，這樣就是安裝成功了！",[15,2813,2814],{},[28,2815],{"alt":30,"src":2816},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image75.webp",[15,2818,2641],{},[15,2820,2821],{},"我也整了Humble和Jazzy的repos的文件，從官網和distribution.yaml一個個找的，你可以克隆下來直接用我整理的就可以。(但有可能部分倉庫分支ROS2官方會做出修改)",[15,2823,2824],{},[49,2825,2826],{"href":2826,"rel":2827},"https://github.com/tungchiahui/ros-docker/tree/main/repos",[53],[15,2829,2830],{},[28,2831],{"alt":30,"src":2832},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image76.webp",[2436,2834,2835],{"id":2835},"藍色的包",[15,2837,2838],{},"藍色的包大體的方式是和黃色一樣的，只不過藍色的包在下載完源碼後，還需要修改下源碼裏的文件，再進行編譯。",[15,2840,2841],{},"如vision_opencv的cv_bridge:請看下方OpenCV章節的CV_Bridge。",[251,2843,2844],{"id":2844},"常見問題",[85,2846,2847],{},[88,2848,2849],{},"libogre-dev找不到",[15,2851,2852],{},"Gazebo的渲染引擎，在debian12中用libogre-dev搜不到，必須用libogre-1.12-dev才能搜到。",[85,2854,2855],{"start":485},[88,2856,2857],{},"nav2_mppi_controller裏有個被當成空指針了，警告成錯誤了。",[15,2859,2860,2861,2864],{},"解決在nav2_mppi_controller的cmakelists裏添加上",[359,2862,2863],{},"add_compile_options(-Wno-error=null-dereference)","即可。",[85,2866,2867],{"start":625},[88,2868,2869],{},"nav2_system_tests裏有個內存重疊警告。",[15,2871,2872],{},"解決在nav2_system_tests的cmakelists裏添加上下面的幾行即可。",[352,2874,2876],{"className":409,"code":2875,"language":411,"meta":30,"style":30},"if (CMAKE_CXX_COMPILER_ID MATCHES \"GNU\")\n    add_compile_options(-Wno-restrict)\nendif()\n",[359,2877,2878,2897,2904],{"__ignoreMap":30},[415,2879,2880,2883,2886,2889,2892,2895],{"class":417,"line":418},[415,2881,2882],{"class":520},"if",[415,2884,2885],{"class":611}," (",[415,2887,2888],{"class":471},"CMAKE_CXX_COMPILER_ID",[415,2890,2891],{"class":475}," MATCHES",[415,2893,2894],{"class":475}," \"GNU\"",[415,2896,1156],{"class":611},[415,2898,2899,2902],{"class":417,"line":485},[415,2900,2901],{"class":471},"    add_compile_options(-Wno-restrict",[415,2903,1156],{"class":611},[415,2905,2906,2909],{"class":417,"line":625},[415,2907,2908],{"class":471},"endif",[415,2910,2911],{"class":611},"()\n",[85,2913,2914],{"start":113},[88,2915,2916],{},"有的庫在Fedora最新版沒有，在舊版有。",[15,2918,2919],{},[28,2920],{"alt":30,"src":2921},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image77.webp",[15,2923,2924],{},[49,2925,2926],{"href":2926,"rel":2927},"https://src.fedoraproject.org/projects/rpms/%2A",[53],[15,2929,2930],{},[28,2931],{"alt":30,"src":2932},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image78.webp",[352,2934,2936],{"className":409,"code":2935,"language":411,"meta":30,"style":30},"sudo dnf install python3-pykdl --releasever=41\nsudo dnf install orocos-kdl-devel --releasever=41\n",[359,2937,2938,2953],{"__ignoreMap":30},[415,2939,2940,2942,2945,2947,2950],{"class":417,"line":418},[415,2941,472],{"class":471},[415,2943,2944],{"class":475}," dnf",[415,2946,479],{"class":475},[415,2948,2949],{"class":475}," python3-pykdl",[415,2951,2952],{"class":421}," --releasever=41\n",[415,2954,2955,2957,2959,2961,2964],{"class":417,"line":485},[415,2956,472],{"class":471},[415,2958,2944],{"class":475},[415,2960,479],{"class":475},[415,2962,2963],{"class":475}," orocos-kdl-devel",[415,2965,2952],{"class":421},[85,2967,2968],{"start":639},[88,2969,2970],{},"有些python庫在最新版系統上下不了，因爲python版本過高",[15,2972,2973],{},"可以使用pip3安裝該庫",[352,2975,2977],{"className":409,"code":2976,"language":411,"meta":30,"style":30},"pip3 install flake8-docstrings\n",[359,2978,2979],{"__ignoreMap":30},[415,2980,2981,2984,2986],{"class":417,"line":418},[415,2982,2983],{"class":471},"pip3",[415,2985,479],{"class":475},[415,2987,2988],{"class":475}," flake8-docstrings\n",[15,2990,2991],{},"但後續編譯的話，需要把該庫加入rosdep忽略的依賴。比如python3-flake8-docstrings的話就是下面這行：",[352,2993,2995],{"className":409,"code":2994,"language":411,"meta":30,"style":30},"rosdep install --from-paths src --ignore-src -y --skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n\n# 改为\nrosdep install --from-paths src --ignore-src -y --skip-keys \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-flake8-docstrings\"\n",[359,2996,2997,3015,3019,3024],{"__ignoreMap":30},[415,2998,2999,3001,3003,3005,3007,3009,3011,3013],{"class":417,"line":418},[415,3000,2695],{"class":471},[415,3002,479],{"class":475},[415,3004,2700],{"class":421},[415,3006,2663],{"class":475},[415,3008,2705],{"class":421},[415,3010,1603],{"class":421},[415,3012,2710],{"class":421},[415,3014,2713],{"class":475},[415,3016,3017],{"class":417,"line":485},[415,3018,622],{"emptyLinePlaceholder":621},[415,3020,3021],{"class":417,"line":625},[415,3022,3023],{"class":615},"# 改为\n",[415,3025,3026,3028,3030,3032,3034,3036,3038,3040],{"class":417,"line":113},[415,3027,2695],{"class":471},[415,3029,479],{"class":475},[415,3031,2700],{"class":421},[415,3033,2663],{"class":475},[415,3035,2705],{"class":421},[415,3037,1603],{"class":421},[415,3039,2710],{"class":421},[415,3041,3042],{"class":475}," \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-flake8-docstrings\"\n",[15,3044,3045],{},[28,3046],{"alt":30,"src":3047},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image79.webp",[40,3049,3050],{"id":3050},"環境進階",[251,3052,3054],{"id":3053},"apt方式","Apt方式",[352,3056,3060],{"className":3057,"code":3058,"language":3059,"meta":30,"style":30},"language-javascript shiki shiki-themes github-light github-dark","\n# rosdep换源\nexport ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml\n\n# 加载ROS2环境\nsource /opt/ros/jazzy/setup.bash\n\n# 配置ROS2的分布式\nexport ROS_DOMAIN_ID=6\n\n# 配置新版Gazebo的资源（这里先注释，等你学到gazebo再打开）\n#export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/home/tungchiahui/UserFloder/MySource/ROS_WS/gazebo_models:/home/tungchiahui/UserFloder/MySource/ROS_WS/ign_models\n","javascript",[359,3061,3062,3066,3071,3076,3080,3085,3090,3094,3099,3104,3108,3113],{"__ignoreMap":30},[415,3063,3064],{"class":417,"line":418},[415,3065,622],{"emptyLinePlaceholder":621},[415,3067,3068],{"class":417,"line":485},[415,3069,3070],{},"# rosdep换源\n",[415,3072,3073],{"class":417,"line":625},[415,3074,3075],{},"export ROSDISTRO_INDEX_URL=https://mirrors.bfsu.edu.cn/rosdistro/index-v4.yaml\n",[415,3077,3078],{"class":417,"line":113},[415,3079,622],{"emptyLinePlaceholder":621},[415,3081,3082],{"class":417,"line":639},[415,3083,3084],{},"# 加载ROS2环境\n",[415,3086,3087],{"class":417,"line":126},[415,3088,3089],{},"source /opt/ros/jazzy/setup.bash\n",[415,3091,3092],{"class":417,"line":699},[415,3093,622],{"emptyLinePlaceholder":621},[415,3095,3096],{"class":417,"line":139},[415,3097,3098],{},"# 配置ROS2的分布式\n",[415,3100,3101],{"class":417,"line":710},[415,3102,3103],{},"export ROS_DOMAIN_ID=6\n",[415,3105,3106],{"class":417,"line":716},[415,3107,622],{"emptyLinePlaceholder":621},[415,3109,3110],{"class":417,"line":159},[415,3111,3112],{},"# 配置新版Gazebo的资源（这里先注释，等你学到gazebo再打开）\n",[415,3114,3115],{"class":417,"line":727},[415,3116,3117],{},"#export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:/home/tungchiahui/UserFloder/MySource/ROS_WS/gazebo_models:/home/tungchiahui/UserFloder/MySource/ROS_WS/ign_models\n",[15,3119,3120],{},"注意，Gazebo資源包在不同ROS2版本可能宏的名稱不同，如在ROS2Humble裏是IGN_GAZEBO_RESOURCE_PATH，在ROS2Jazzy裏是GZ_SIM_RESOURCE_PATH。（往後的ROS2版本估計都是GZ_SIM_RESOURCE_PATH）（詳見下方Gazebo教程）",[251,3122,3123],{"id":3123},"源碼方式",[15,3125,3126],{},"與apt方式相同，但是需要把加載ROS2環境的那個setup.bash路徑設置爲你的ros2安裝路徑。",[352,3128,3130],{"className":409,"code":3129,"language":411,"meta":30,"style":30},"\n# 加载ROS2环境\nsource ~/UserFloder/Applcations/ros2_jazzy/install/setup.bash\n",[359,3131,3132,3136,3140],{"__ignoreMap":30},[415,3133,3134],{"class":417,"line":418},[415,3135,622],{"emptyLinePlaceholder":621},[415,3137,3138],{"class":417,"line":485},[415,3139,3084],{"class":615},[415,3141,3142,3144],{"class":417,"line":625},[415,3143,528],{"class":421},[415,3145,1979],{"class":475},[10,3147,539],{"id":3148},"測試ros2-1",[40,3150,3151],{"id":3151},"示例1",[15,3153,3154],{},"打開兩個終端，並分別輸入如下兩個紅框框裏的命令",[15,3156,3157],{},[28,3158],{"alt":30,"src":3159},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image80.webp",[15,3161,3162],{},"彈出如下程序，則測試成功。",[15,3164,3165],{},"對着終端按Ctrl+C可以終止程序。",[15,3167,3168],{},[28,3169],{"alt":30,"src":3170},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image81.webp",[40,3172,3173],{"id":3173},"示例2",[15,3175,3176],{},"烏龜作爲ROS老測試項目了，必須拉出來溜溜！",[15,3178,3179],{},"同樣開兩個終端，並分別輸入以下命令。",[352,3181,3183],{"className":409,"code":3182,"language":411,"meta":30,"style":30},"ros2 run turtlesim turtlesim_node\nros2 run turtlesim turtle_teleop_key\n",[359,3184,3185,3199],{"__ignoreMap":30},[415,3186,3187,3190,3193,3196],{"class":417,"line":418},[415,3188,3189],{"class":471},"ros2",[415,3191,3192],{"class":475}," run",[415,3194,3195],{"class":475}," turtlesim",[415,3197,3198],{"class":475}," turtlesim_node\n",[415,3200,3201,3203,3205,3207],{"class":417,"line":485},[415,3202,3189],{"class":471},[415,3204,3192],{"class":475},[415,3206,3195],{"class":475},[415,3208,3209],{"class":475}," turtle_teleop_key\n",[15,3211,3212],{},"鼠標點以下紅色部分，然後通過小鍵盤的方向鍵可以控制烏龜運行，如果沒有小鍵盤，可以嘗試GBVCDERT等按鍵操控小烏龜。",[15,3214,3215],{},"同樣地，對着終端按Ctrl+C可以終止程序。",[15,3217,3218],{},[28,3219],{"alt":30,"src":3220},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image82.webp",[10,3222,2844],{"id":3223},"常見問題-1",[40,3225,3227],{"id":3226},"rviz2閃爍","Rviz2閃爍",[15,3229,3230],{},"如果2K+的電腦安裝完rviz2有顯示問題，可以在.bashrc里加上下面的內容，用來讓qt不縮放。",[352,3232,3234],{"className":409,"code":3233,"language":411,"meta":30,"style":30},"export QT_AUTO_SCREEN_SCALE_FACTOR=0\nexport QT_SCREEN_SCALE_FACTORS=[1.0]\n",[359,3235,3236,3248],{"__ignoreMap":30},[415,3237,3238,3240,3243,3245],{"class":417,"line":418},[415,3239,633],{"class":520},[415,3241,3242],{"class":611}," QT_AUTO_SCREEN_SCALE_FACTOR",[415,3244,1105],{"class":520},[415,3246,3247],{"class":421},"0\n",[415,3249,3250,3252,3255,3257],{"class":417,"line":485},[415,3251,633],{"class":520},[415,3253,3254],{"class":611}," QT_SCREEN_SCALE_FACTORS",[415,3256,1105],{"class":520},[415,3258,3259],{"class":611},"[1.0]\n",[3261,3262,3263],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":30,"searchDepth":485,"depth":485,"links":3265},[3266,3267,3268,3269,3270,3271,3272,3273],{"id":12,"depth":625,"text":13},{"id":23,"depth":625,"text":24},{"id":37,"depth":625,"text":38},{"id":82,"depth":625,"text":83},{"id":202,"depth":625,"text":203},{"id":2021,"depth":625,"text":2022},{"id":3148,"depth":625,"text":539},{"id":3223,"depth":625,"text":2844},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao",1000000,"2023-12-30","wiki/2023-12-30-ros2-tutorial","zh-hant:2023-12-30-ros2-tutorial","/zh-hant/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍",false,null,"zh-Hant","zh-hant",{},{"title":5,"description":30},"/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","oLttEvqal_fiEyA7T21J3fTI0ZFGl_NgaDjNCEYJO0Y",[3293,3294,3300,3306,3312,3318,3324,3330,3336,3342,3348,3354,3360,3366,3372,3378,3384,3390,3395,3401,3406,3412,3418,3424,3430,3436,3442,3448,3454,3460,3466,3472,3478,3484,3490,3496,3502,3508,3514,3520,3526,3532,3538,3544,3550,3556,3562,3568,3574,3580,3586,3592,3598,3604,3610,3616,3622,3628,3634,3640],{"path":3274,"stem":3290,"title":5,"date":3276,"chapter":1210,"chapterSort":3275,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},{"path":3295,"stem":3296,"title":3297,"date":3276,"chapter":3298,"chapterSort":3299,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2仿真平臺","10",10000000,{"path":3301,"stem":3302,"title":3303,"date":3276,"chapter":3304,"chapterSort":3305,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":3307,"stem":3308,"title":3309,"date":3276,"chapter":3310,"chapterSort":3311,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":3313,"stem":3314,"title":3315,"date":3276,"chapter":3316,"chapterSort":3317,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":3319,"stem":3320,"title":3321,"date":3276,"chapter":3322,"chapterSort":3323,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","11.4",11040000,{"path":3325,"stem":3326,"title":3327,"date":3276,"chapter":3328,"chapterSort":3329,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gezebo仿真平臺","11",11000000,{"path":3331,"stem":3332,"title":3333,"date":3276,"chapter":3334,"chapterSort":3335,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-1-humble-ban-ben","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-1-Humble版本","Humble導航仿真","12.1",12010000,{"path":3337,"stem":3338,"title":3339,"date":3276,"chapter":3340,"chapterSort":3341,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-2-jazzy-ban-ben","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-2-Jazzy版本","Jazzy導航仿真","12.2",12020000,{"path":3343,"stem":3344,"title":3345,"date":3276,"chapter":3346,"chapterSort":3347,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-3-humble2jazzy","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-3-Humble2Jazzy","Humble與Jazzy導航的差異","12.3",12030000,{"path":3349,"stem":3350,"title":3351,"date":3276,"chapter":3352,"chapterSort":3353,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","12",12000000,{"path":3355,"stem":3356,"title":3357,"date":3276,"chapter":3358,"chapterSort":3359,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-1-Boost.Aiso","Boost.Asio庫","13.1.1",13010100,{"path":3361,"stem":3362,"title":3363,"date":3276,"chapter":3364,"chapterSort":3365,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2-serial-driver","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2_serial_driver","ROS2 Serial Driver庫","13.1.2",13010200,{"path":3367,"stem":3368,"title":3369,"date":3276,"chapter":3370,"chapterSort":3371,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-chuan-kou-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-串口通信","UART串口通信","13.1",13010000,{"path":3373,"stem":3374,"title":3375,"date":3276,"chapter":3376,"chapterSort":3377,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","SocketCAN","13.2.1",13020100,{"path":3379,"stem":3380,"title":3381,"date":3276,"chapter":3382,"chapterSort":3383,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2-socketcan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2_socketcan","ROS2_SocketCAN","13.2.2",13020200,{"path":3385,"stem":3386,"title":3387,"date":3276,"chapter":3388,"chapterSort":3389,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信","CAN通信","13.2",13020000,{"path":3391,"stem":3392,"title":3357,"date":3276,"chapter":3393,"chapterSort":3394,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-1-Boost.Aiso","13.3.1",13030100,{"path":3396,"stem":3397,"title":3398,"date":3276,"chapter":3399,"chapterSort":3400,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-tcp-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-TCP通信","TCP通信","13.3",13030000,{"path":3402,"stem":3403,"title":3357,"date":3276,"chapter":3404,"chapterSort":3405,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-1-Boost.Aiso","13.4.1",13040100,{"path":3407,"stem":3408,"title":3409,"date":3276,"chapter":3410,"chapterSort":3411,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信","UDP通信","13.4",13040000,{"path":3413,"stem":3414,"title":3415,"date":3276,"chapter":3416,"chapterSort":3417,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-linux-ying-jian-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-Linux硬件通信","Linux硬件通信","13",13000000,{"path":3419,"stem":3420,"title":3421,"date":3276,"chapter":3422,"chapterSort":3423,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-1-ji-qi-ren-zu-cheng","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-1-机器人组成","機器人組成","14.1",14010000,{"path":3425,"stem":3426,"title":3427,"date":3276,"chapter":3428,"chapterSort":3429,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-1-yuan-cheng-kai-fa-ssh","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-1-远程开发SSH","遠程開發SSH","14.2.1",14020100,{"path":3431,"stem":3432,"title":3433,"date":3276,"chapter":3434,"chapterSort":3435,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-2-yuan-cheng-fang-wen-zhuo-mian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-2-远程访问桌面","遠程訪問桌面","14.2.2",14020200,{"path":3437,"stem":3438,"title":3439,"date":3276,"chapter":3440,"chapterSort":3441,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-工控机之远程开发环境","工控機之遠程開發環境","14.2",14020000,{"path":3443,"stem":3444,"title":3445,"date":3276,"chapter":3446,"chapterSort":3447,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-3-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-3-工控机之外接USB设备","工控機之外接USB設備","14.3",14030000,{"path":3449,"stem":3450,"title":3451,"date":3276,"chapter":3452,"chapterSort":3453,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-4-fen-bu-shi-da-jian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-4-分布式搭建","分佈式搭建","14.4",14040000,{"path":3455,"stem":3456,"title":3457,"date":3276,"chapter":3458,"chapterSort":3459,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-5-you-hua-ri-zhi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-5-优化日志","優化日誌","14.5",14050000,{"path":3461,"stem":3462,"title":3463,"date":3276,"chapter":3464,"chapterSort":3465,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-1-li-cheng-ji-odom","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-1-里程计Odom","里程計Odom","14.6.1",14060100,{"path":3467,"stem":3468,"title":3469,"date":3276,"chapter":3470,"chapterSort":3471,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-2-guan-xing-ji-imu","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-2-惯性计IMU","慣性計IMU","14.6.2",14060200,{"path":3473,"stem":3474,"title":3475,"date":3276,"chapter":3476,"chapterSort":3477,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-3-ji-guang-lei-da-lidar","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-3-激光雷达LiDAR","激光雷達LiDAR","14.6.3",14060300,{"path":3479,"stem":3480,"title":3481,"date":3276,"chapter":3482,"chapterSort":3483,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-4-xiang-ji-camera","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-4-相机Camera","相機Camera","14.6.4",14060400,{"path":3485,"stem":3486,"title":3487,"date":3276,"chapter":3488,"chapterSort":3489,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-5-quan-qiu-ding-wei-gnss","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-5-全球定位GNSS","全球定位GNSS","14.6.5",14060500,{"path":3491,"stem":3492,"title":3493,"date":3276,"chapter":3494,"chapterSort":3495,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-6-shou-bing-joy","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-6-手柄joy","手柄JOY","14.6.6",14060600,{"path":3497,"stem":3498,"title":3499,"date":3276,"chapter":3500,"chapterSort":3501,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-7-jian-pan-kong-zhi-jie-dian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-7-键盘控制节点","鍵盤控制節點","14.6.7",14060700,{"path":3503,"stem":3504,"title":3505,"date":3276,"chapter":3506,"chapterSort":3507,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-ying-jian-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-硬件平台","硬件平臺","14.6",14060000,{"path":3509,"stem":3510,"title":3511,"date":3276,"chapter":3512,"chapterSort":3513,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-7-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-7-坐标系与话题关系","座標系與話題關係","14.7",14070000,{"path":3515,"stem":3516,"title":3517,"date":3276,"chapter":3518,"chapterSort":3519,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-lun-shi-li-cheng-ji-biao-ding","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-轮式里程计标定","輪式里程計標定","14.8.1.1",14080101,{"path":3521,"stem":3522,"title":3523,"date":3276,"chapter":3524,"chapterSort":3525,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-轮式里程计与IMU融合","輪式里程計與IMU融合","14.8.1.2",14080102,{"path":3527,"stem":3528,"title":3529,"date":3276,"chapter":3530,"chapterSort":3531,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-轮式里程计标定与融合","輪式里程計標定與融合","14.8.1",14080100,{"path":3533,"stem":3534,"title":3535,"date":3276,"chapter":3536,"chapterSort":3537,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-2-ji-guang-lei-da-gong-ju","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-2-激光雷达工具","激光雷達工具","14.8.2",14080200,{"path":3539,"stem":3540,"title":3541,"date":3276,"chapter":3542,"chapterSort":3543,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-3-xiang-ji-shi-yong-jin-jie","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-3-相机使用进阶","相機使用進階","14.8.3",14080300,{"path":3545,"stem":3546,"title":3547,"date":3276,"chapter":3548,"chapterSort":3549,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-ying-jian-ping-tai-jin-jie","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-硬件平台进阶","硬件平臺進階","14.8",14080000,{"path":3551,"stem":3552,"title":3553,"date":3276,"chapter":3554,"chapterSort":3555,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","機器人硬件","14",14000000,{"path":3557,"stem":3558,"title":3559,"date":3276,"chapter":3560,"chapterSort":3561,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":3563,"stem":3564,"title":3565,"date":3276,"chapter":3566,"chapterSort":3567,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","16",16000000,{"path":3569,"stem":3570,"title":3571,"date":3276,"chapter":3572,"chapterSort":3573,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","17",17000000,{"path":3575,"stem":3576,"title":3577,"date":3276,"chapter":3578,"chapterSort":3579,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch18-microros","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":3581,"stem":3582,"title":3583,"date":3276,"chapter":3584,"chapterSort":3585,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots仿真平臺","19",19000000,{"path":3587,"stem":3588,"title":3589,"date":3276,"chapter":3590,"chapterSort":3591,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch2-入门操作","入門操作","2",2000000,{"path":3593,"stem":3594,"title":3595,"date":3276,"chapter":3596,"chapterSort":3597,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch20-opencv","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","OpenCV","20",20000000,{"path":3599,"stem":3600,"title":3601,"date":3276,"chapter":3602,"chapterSort":3603,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","工作空間與功能包","3",3000000,{"path":3605,"stem":3606,"title":3607,"date":3276,"chapter":3608,"chapterSort":3609,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch4-四大通信","四大通信","4",4000000,{"path":3611,"stem":3612,"title":3613,"date":3276,"chapter":3614,"chapterSort":3615,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","ROS2其他通信機制","5",5000000,{"path":3617,"stem":3618,"title":3619,"date":3276,"chapter":3620,"chapterSort":3621,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch6-launch","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":3623,"stem":3624,"title":3625,"date":3276,"chapter":3626,"chapterSort":3627,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":3629,"stem":3630,"title":3631,"date":3276,"chapter":3632,"chapterSort":3633,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","座標變換TF","8",8000000,{"path":3635,"stem":3636,"title":3637,"date":3276,"chapter":3638,"chapterSort":3639,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":3283},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","可視化平臺RVIZ2與URDF建模語言","9",9000000,{"path":3279,"stem":3641,"title":3642,"date":3276,"chapter":3284,"chapterSort":3643,"docKey":3278,"docRoot":3279,"docTitle":3280,"isWikiDoc":621,"isWikiIndex":621},"_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/index","ROS2機器人操作系統教程",0,{"variants":3645},[3646,3649,3650,3653,3656],{"path":3647,"localeSlug":3648,"i18nKey":3282},"/en-us/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","en-us",{"path":3274,"localeSlug":3286,"i18nKey":3282},{"path":3651,"localeSlug":3652,"i18nKey":3282},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","zh-hk",{"path":3654,"localeSlug":3655,"i18nKey":3282},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","zh-tw",{"path":3657,"localeSlug":3658,"i18nKey":3282},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","zh-cn",[3647,3289,3274,3289,3651,3289,3654,3289,3657,3289],1780673917488]