[{"data":1,"prerenderedAt":3600},["ShallowReactive",2],{"wiki-page-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao":3,"wiki-doc-items-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao":3291,"language-switcher-data-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao":3584,"wiki-i18n-paths-\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao":3599},{"id":4,"title":5,"body":6,"canonicalPath":3272,"chapterDepth":3273,"chapterOrder":3274,"date":3275,"description":30,"docI18nKey":3276,"docKey":3277,"docRoot":3278,"docTitle":3279,"extension":3280,"i18nKey":3281,"isBlogPost":3282,"isWikiDoc":621,"isWikiIndex":3282,"layout":3283,"legacyPath":3283,"locale":3284,"localeSlug":3285,"meta":3286,"navigation":621,"path":3272,"seo":3287,"sourcePath":3288,"sourceStem":3281,"stem":3289,"wikiDepth":418,"__hash__":3290},"content\u002F_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍.md","ROS2介紹",{"type":7,"value":8,"toc":3262},"minimark",[9,14,18,21,25,35,39,43,46,54,60,63,69,72,88,92,202,206,213,216,224,227,230,237,244,251,256,261,266,269,274,278,281,286,289,297,300,308,312,315,320,323,328,333,336,344,347,352,362,365,370,373,381,386,395,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,2018,2022,2025,2028,2031,2037,2040,2043,2046,2049,2052,2055,2058,2061,2172,2212,2215,2221,2226,2230,2426,2430,2433,2437,2440,2445,2448,2453,2456,2461,2466,2469,2472,2477,2480,2485,2488,2493,2496,2550,2553,2558,2561,2564,2637,2640,2643,2646,2668,2673,2676,2681,2684,2712,2715,2720,2723,2763,2768,2770,2773,2807,2810,2815,2817,2820,2826,2831,2834,2837,2840,2843,2848,2851,2856,2863,2868,2871,2910,2915,2920,2926,2931,2964,2969,2972,2987,2990,3041,3046,3049,3053,3116,3119,3122,3125,3144,3147,3150,3153,3158,3161,3164,3169,3172,3175,3178,3208,3211,3214,3219,3222,3226,3229,3258],[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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage3.webp",[28,33],{"alt":30,"src":34},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage4.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:\u002F\u002Fwww.ros.org\u002F",[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:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1VB4y137ys",[53],[15,70,71],{},"趙虛左原版配套資料:",[73,74,75,82],"ul",{},[76,77,78],"li",{},[49,79,81],{"href":80},"\u002Fdocs\u002Fros2\u002Fcore\u002Findex.html","ROS2理論與實踐核心篇",[76,83,84],{},[49,85,87],{"href":86},"\u002Fdocs\u002Fros2\u002Fapplication\u002Findex.html","ROS2理論與實踐應用篇",[10,89,91],{"id":90},"學習ros2需要用到的知識儲備","學習ROS2需要用到的知識儲備",[93,94,95],"ol",{},[76,96,97,98,103,106,107,111,113,117,123,106,125,129,135,106,137,141,147,106,149,153,106,155,159,165,106,167,172,174,178,184,186,190,196,198],{},"需要用哪些知識？",[93,99,100],{},[76,101,102],{},"Linux基本操作與Shell腳本語言",[104,105],"br",{},"  ",[49,108,110],{"href":109},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Linux基本教程",[104,112],{},[49,114,115],{"href":115,"rel":116},"https:\u002F\u002Fwww.runoob.com\u002Flinux\u002Flinux-tutorial.html",[53],[93,118,120],{"start":119},4,[76,121,122],{},"Cmake基本使用",[104,124],{},[49,126,128],{"href":127},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F0100-c-kai-fa-huan-jing-da-jian-yu-ce-shi","Linux C++編譯環境配置",[93,130,132],{"start":131},6,[76,133,134],{},"Git基本操作",[104,136],{},[49,138,140],{"href":139},"\u002Fwiki\u002F2023-12-29-git-jiao-xue","Vinci機器人隊Git入門教程",[93,142,144],{"start":143},8,[76,145,146],{},"C\u002FC++語言",[104,148],{},[49,150,152],{"href":151},"\u002Fwiki\u002F2023-09-29-ji-qi-ren-gong-cheng-shi-cheng-zhang-ji-hua","Vinci機器人隊電控組入門指導",[104,154],{},[49,156,158],{"href":157},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue","Vinci機器人隊C\u002FC++資料",[93,160,162],{"start":161},11,[76,163,164],{},"Python3語言",[104,166],{},[49,168,171],{"href":169,"rel":170},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fwiki\u002FQZL8wLeewiTmvfkczMyccAdVn0c",[53],"Vinci機器人隊Python3教程",[104,173],{},[49,175,176],{"href":176,"rel":177},"https:\u002F\u002Fwww.runoob.com\u002Fpython3\u002Fpython3-tutorial.html",[53],[93,179,181],{"start":180},14,[76,182,183],{},"XML語言",[104,185],{},[49,187,188],{"href":188,"rel":189},"https:\u002F\u002Fwww.runoob.com\u002Fxml\u002Fxml-tutorial.html",[53],[93,191,193],{"start":192},16,[76,194,195],{},"YAML語言",[104,197],{},[49,199,200],{"href":200,"rel":201},"http:\u002F\u002Fwww.noobyard.com\u002Farticle\u002Fp-saghdsms-mn.html",[53],[10,203,205],{"id":204},"安裝ros2","安裝ROS2",[15,207,208,209],{},"ROS1安裝請看",[49,210,212],{"href":211},"\u002Fwiki\u002F2024-07-13-ros1-ji-qi-ren-cao-zuo-xi-tong-jiao-cheng","ROS機器人操作系統教程",[15,214,215],{},"** 建議使用Kubuntu 24.04 LTS **\n** 建議學習 ROS2 Jazzy 版本，本教程將基於ROS2 Jazzy **",[40,217,219,220,223],{"id":218},"二進制包安裝ros2以kubuntu-jammy-2204安裝-ros-humble-為例","二進制包安裝ROS2(以Kubuntu Jammy 22.04安裝 ",[58,221,222],{},"ROS Humble"," 為例)",[15,225,226],{},"注意:",[15,228,229],{},"截至2024年12月，強烈建議如果要用ROS2的話，一定要用ROS Humble,別用ROS Jazzy，這玩意有些區別，特別是Gazebo,幾乎沒啥教程的。",[15,231,232,233],{},"Ubuntu Jammy 22.04(LTS)請安裝ROS Humble(LTS)。安裝嚮導網站:",[49,234,235],{"href":235,"rel":236},"https:\u002F\u002Fdocs.ros.org\u002Fen\u002Fhumble\u002FInstallation\u002FUbuntu-Install-Debians.html",[53],[15,238,239,240],{},"Ubuntu Noble 24.04(LTS)請安裝ROS Jazzy(LTS)。安裝嚮導網站:",[49,241,242],{"href":242,"rel":243},"https:\u002F\u002Fdocs.ros.org\u002Fen\u002Fjazzy\u002FInstallation\u002FUbuntu-Install-Debians.html",[53],[15,245,246,247],{},"各個ROS1、ROS2版本所支持的發行版：",[49,248,249],{"href":249,"rel":250},"https:\u002F\u002Fwww.ros.org\u002Freps\u002Frep-2000.html",[53],[252,253,255],"h5",{"id":254},"進入ros官網","進入ROS官網",[15,257,258],{},[28,259],{"alt":30,"src":260},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage5.webp",[15,262,263],{},[28,264],{"alt":30,"src":265},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage6.webp",[15,267,268],{},"一定要安裝LTS版本的ROS2",[15,270,271],{},[28,272],{"alt":30,"src":273},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage7.webp",[252,275,277],{"id":276},"安裝ros2前期準備工作","安裝ROS2前期準備工作",[15,279,280],{},"裝LTS版本的ROS2點擊使用debian包管理工具安裝ROS2二進制文件",[15,282,283],{},[28,284],{"alt":30,"src":285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage8.webp",[15,287,288],{},"按照ROS2官網教程在終端裏輸入如下命令",[15,290,291,294],{},[28,292],{"alt":30,"src":293},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage9.webp",[28,295],{"alt":30,"src":296},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage10.webp",[15,298,299],{},"依舊輸入以下命令啓動Ubuntu Universe Repo",[15,301,302,305],{},[28,303],{"alt":30,"src":304},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage11.webp",[28,306],{"alt":30,"src":307},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage12.webp",[252,309,311],{"id":310},"換源國內源","換源(國內源)",[15,313,314],{},"這個是官網的源，是從國外服務器下載ROS2二進制文件的，對網絡有要求，所以我們要給改為國內源。",[15,316,317],{},[28,318],{"alt":30,"src":319},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage13.webp",[15,321,322],{},"百度搜索北京外國語大學鏡像源(親測，北方最快的源)",[15,324,325],{},[28,326],{"alt":30,"src":327},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage14.webp",[15,329,330],{},[28,331],{"alt":30,"src":332},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage15.webp",[15,334,335],{},"找到ROS2，然後勾上sudo和https，選擇正確的Linux發行版。在使用該命令前有可能會遇到權限不夠的問題，可以先往下看，如何以root權限運行所有命令。",[15,337,338,341],{},[28,339],{"alt":30,"src":340},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage16.webp",[28,342],{"alt":30,"src":343},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage17.webp",[15,345,346],{},"先輸入sudo passwd設置root密碼（Ubuntu系發行版要乾的事）（debian,Fedora等發行版在裝機時就已經設置過了，無需運行）",[15,348,349],{},[28,350],{"alt":30,"src":351},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage18.webp",[353,354,359],"pre",{"className":355,"code":357,"language":358},[356],"language-text","sudo passwd\n\nsu -\n","text",[360,361,357],"code",{"__ignoreMap":30},[15,363,364],{},"然後進入管理員權限下",[15,366,367],{},[28,368],{"alt":30,"src":369},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage19.webp",[15,371,372],{},"挨行復制輸入運行",[15,374,375,378],{},[28,376],{"alt":30,"src":377},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage20.webp",[28,379],{"alt":30,"src":380},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage21.webp",[15,382,383],{},[28,384],{"alt":30,"src":385},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage22.webp",[15,387,388,389,394],{},"上面下載key的時候如果卡住了，那就是github又抽風了，很正常的問題，可以選擇科學*上網(",[49,390,393],{"href":391,"rel":392},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fwiki\u002FHnjswlR8NiVjVgkbn6hcAlwzn2e",[53],"科學機場教程",")解決，如果還解決不了，可以通過下方教程修改hosts。",[15,396,397],{},[49,398,399],{"href":399,"rel":400},"https:\u002F\u002Fblog.csdn.net\u002Fqq_40584960\u002Farticle\u002Fdetails\u002F117963644?sharetype=blog&shareId=117963644&sharerefer=APP&sharesource=qq_33274985&sharefrom=link",[53],[15,402,403],{},"成功下載key之後，繼續往下弄。",[15,405,406],{},"輸入exit退出root模式",[353,408,412],{"className":409,"code":410,"language":411,"meta":30,"style":30},"language-bash shiki shiki-themes github-light github-dark","exit\n","bash",[360,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage23.webp",[252,428,430],{"id":429},"通過apt安裝ros2","通過apt安裝ROS2",[15,432,433],{},"把以下紅色框框的全部在終端裏敲一遍",[15,435,436],{},[28,437],{"alt":30,"src":438},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage24.webp",[15,440,441],{},"國內的鏡像下載還是非常快的。",[15,443,444],{},[28,445],{"alt":30,"src":446},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage25.webp",[252,448,450],{"id":449},"ros2基礎環境變量配置","ROS2基礎環境變量配置",[15,452,453],{},"複製該行",[15,455,456],{},[28,457],{"alt":30,"src":458},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage26.webp",[15,460,461],{},"輸入以下命令",[353,463,465],{"className":409,"code":464,"language":411,"meta":30,"style":30},"sudo apt-get install vim\nsudo vim ~\u002F.bashrc\n",[360,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}," ~\u002F.bashrc\n",[15,495,496],{},"在最底部把這行加上（vim不會使用的，請自行百度）",[15,498,499],{},[28,500],{"alt":30,"src":501},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage27.webp",[15,503,504],{},"刷新以下當前終端的環境變量",[353,506,508],{"className":409,"code":507,"language":411,"meta":30,"style":30},"echo 'export ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml' >> ~\u002F.bashrc\nsource ~\u002F.bashrc\n",[360,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:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage28.webp",[252,537,539],{"id":538},"測試ros2","測試ROS2",[15,541,542,543,546],{},"請往下翻到**",[360,544,545],{},"测试ROS2","**章節",[40,548,550],{"id":549},"從源碼安裝ros2難度較高ubuntu用上面那個簡單方法即可","從源碼安裝ROS2(難度較高，Ubuntu用上面那個簡單方法即可。)",[252,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage29.webp",[15,569,570],{},"然後選擇用源碼進行編譯,找到對應的發行版,比如我這裏是Feodra.",[15,572,573],{},[28,574],{"alt":30,"src":575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage30.webp",[15,577,578],{},"然後根據官網教程來就行",[15,580,581],{},[28,582],{"alt":30,"src":583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage31.webp",[93,585,586],{},[76,587,588],{},"設置區域",[15,590,591,592,595,596,599],{},"確保你的 locale 支持 ",[360,593,594],{},"UTF-8","。如果你在一個最小的環境（比如 docker 容器）中，locale 可能是 ",[360,597,598],{},"C"," 等最小的東西。我們使用以下設置進行測試。但是，如果您使用的是其他支持 UTF-8 的區域設置，應該沒問題。",[353,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",[360,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":119},[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":131},[415,645,612],{"class":611},[415,647,648],{"class":615},"# verify settings\n",[93,650,651],{"start":485},[76,652,653],{},"啓用必須的倉庫",[15,655,656],{},"Fedora無需額外啓用倉庫,RHEL需要.",[93,658,659],{"start":625},[76,660,661],{},"安裝開發工具",[353,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",[360,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":119},[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":131},[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":143},[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":161},[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":180},[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":192},[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",[93,824,825,1258],{"start":119},[76,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",[93,829,830],{},[76,831,832],{},"獲取ROS2源碼",[104,834],{},"  找一個要存放ROS2的文件夾,建議在\u002Fhome分區找,然後在這個文件夾下打開終端.",[353,837,839],{"className":602,"code":838,"language":604,"meta":30,"style":30},"mkdir -p .\u002Fros2_jazzy\u002Fsrc\ncd .\u002Fros2_jazzy\nvcs import --input https:\u002F\u002Fraw.githubusercontent.com\u002Fros2\u002Fros2\u002Fjazzy\u002Fros2.repos src\n",[360,840,841,846,851],{"__ignoreMap":30},[415,842,843],{"class":417,"line":418},[415,844,845],{"class":611},"mkdir -p .\u002Fros2_jazzy\u002Fsrc\n",[415,847,848],{"class":417,"line":485},[415,849,850],{"class":611},"cd .\u002Fros2_jazzy\n",[415,852,853],{"class":417,"line":625},[415,854,855],{"class":611},"vcs import --input https:\u002F\u002Fraw.githubusercontent.com\u002Fros2\u002Fros2\u002Fjazzy\u002Fros2.repos src\n",[104,857],{},[28,859],{"alt":30,"src":860},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage32.webp",[93,862,863],{"start":639},[76,864,865],{},"更新系統",[104,867],{},"  ROS 2 軟件包構建在經常更新的 紅帽系 系統上。始終建議您在安裝新軟件包之前確保您的系統是最新的。",[353,870,872],{"className":602,"code":871,"language":604,"meta":30,"style":30},"sudo dnf upgrade\n",[360,873,874],{"__ignoreMap":30},[415,875,876],{"class":417,"line":418},[415,877,871],{"class":611},[93,879,880],{"start":143},[76,881,882],{},"初始化並更換rosdep源",[104,884],{},[49,886,887],{"href":887,"rel":888},"https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fhelp\u002Frosdistro\u002F",[53],[104,890],{},[28,892],{"alt":30,"src":893},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage33.webp",[104,895],{},[28,897],{"alt":30,"src":898},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage34.webp",[353,900,902],{"className":602,"code":901,"language":604,"meta":30,"style":30},"\n# 手动模拟 rosdep init\nsudo mkdir -p \u002Fetc\u002Fros\u002Frosdep\u002Fsources.list.d\u002F\nsudo curl -o \u002Fetc\u002Fros\u002Frosdep\u002Fsources.list.d\u002F20-default.list -L https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fgithub-raw\u002Fros\u002Frosdistro\u002Fmaster\u002Frosdep\u002Fsources.list.d\u002F20-default.list\n\n# 加入环境\necho 'export ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml' >> ~\u002F.bashrc\n\n# 加载.bashrc\nsource ~\u002F.bashrc\n\n# 更新rosdep\nrosdep update\n",[360,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 \u002Fetc\u002Fros\u002Frosdep\u002F",[415,919,920],{"class":471},"sources",[415,922,923],{"class":611},".list.d\u002F\n",[415,925,926,929,931,934,936],{"class":417,"line":119},[415,927,928],{"class":611},"sudo curl -o \u002Fetc\u002Fros\u002Frosdep\u002F",[415,930,920],{"class":471},[415,932,933],{"class":611},".list.d\u002F20-default.list -L https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fgithub-raw\u002Fros\u002Frosdistro\u002Fmaster\u002Frosdep\u002F",[415,935,920],{"class":471},[415,937,938],{"class":611},".list.d\u002F20-default.list\n",[415,940,941],{"class":417,"line":639},[415,942,622],{"emptyLinePlaceholder":621},[415,944,945],{"class":417,"line":131},[415,946,947],{"class":615},"# 加入环境\n",[415,949,950],{"class":417,"line":699},[415,951,952],{"class":611},"echo 'export ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml' >> ~\u002F.bashrc\n",[415,954,955],{"class":417,"line":143},[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 ~\u002F.bashrc\n",[415,968,969],{"class":417,"line":161},[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",[104,982],{},[28,984],{"alt":30,"src":985},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage35.webp",[104,987],{},[28,989],{"alt":30,"src":990},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage36.webp",[93,992,993],{"start":744},[76,994,995],{},"通過rosdep安裝依賴",[353,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",[360,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",[104,1027],{},[28,1029],{"alt":30,"src":1030},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage37.webp",[104,1032],{},"  如果出現上面這種錯誤,使用pip3安裝包.",[353,1035,1037],{"className":602,"code":1036,"language":604,"meta":30,"style":30},"sudo pip3 install flake8-docstrings\n",[360,1038,1039],{"__ignoreMap":30},[415,1040,1041],{"class":417,"line":418},[415,1042,1036],{"class":611},[104,1044],{},"  然後,使用下面命令忽略掉",[360,1047,1048],{},"flake8-docstrings",".",[353,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",[360,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",[104,1073],{},"  顯示成功即可",[104,1076],{},[28,1078],{"alt":30,"src":1079},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage38.webp",[93,1081,1082],{"start":795},[76,1083,1084],{},"配置環境(不是紅帽系的發行版不用弄)",[104,1086],{},"  如果你是紅帽繫系統需要下面配置",[104,1089],{},"  可以用下面這些命令暫時定義這些宏。",[353,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",[360,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":119},[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},"定義目標系統架構",[104,1226],{},[28,1228],{"alt":30,"src":1229},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage39.webp",[93,1231,1233],{"start":1232},30,[76,1234,1235],{},"使用colcon構建源碼",[353,1237,1239],{"className":602,"code":1238,"language":604,"meta":30,"style":30},"colcon build --symlink-install\n",[360,1240,1241],{"__ignoreMap":30},[415,1242,1243],{"class":417,"line":418},[415,1244,1238],{"class":611},[104,1246],{},[28,1248],{"alt":30,"src":1249},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage40.webp",[104,1251],{},"  等待構建完畢,下方就是構建完畢且沒錯誤的樣子",[104,1254],{},[28,1256],{"alt":30,"src":1257},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage41.webp",[76,1259,1260],{},"配置基礎環境",[15,1262,1263,1264],{},"找到下方文件夾,並複製路徑,比如我的是",[360,1265,1266],{},"~\u002FUserFloder\u002FApplications\u002Fros2_jazzy",[15,1268,1269],{},[28,1270],{"alt":30,"src":1271},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage42.webp",[15,1273,1274],{},"使用vim修改bash的環境",[353,1276,1278],{"className":602,"code":1277,"language":604,"meta":30,"style":30},"vim ~\u002F.bashrc\n",[360,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage43.webp",[15,1293,1294,1295,1298],{},"添加完這兩行後,按ESC,然後",[360,1296,1297],{},":wq","保存並退出.",[353,1300,1302],{"className":602,"code":1301,"language":604,"meta":30,"style":30},"\n# 刷新当前环境变量\nsource ~\u002F.bashrc\n",[360,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},[93,1318,1319],{"start":131},[76,1320,539],{},[15,1322,542,1323,546],{},[360,1324,545],{},[252,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage44.webp",[15,1342,1343],{},"然後選擇用源碼進行編譯,找到對應的發行版,比如我這裏是Debian.",[15,1345,1346],{},[28,1347],{"alt":30,"src":1348},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage45.webp",[15,1350,1351],{},"接下來，從下圖這裏開始，跟着官方教程一路敲，但是有幾個需要注意的點，我這裏都會寫出來：",[15,1353,1354],{},[28,1355],{"alt":30,"src":1356},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage46.webp",[93,1358,1359],{},[76,1360,588],{},[353,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",[360,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":119},[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":131},[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":143},[415,1444,1370],{"class":471},[415,1446,1447],{"class":615},"  # verify settings\n",[93,1449,1450],{"start":485},[76,1451,1452],{},"換源",[15,1454,1455],{},[28,1456],{"alt":30,"src":1457},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage47.webp",[15,1459,1460],{},"紅色部分是Ubuntu要做的，我們是debian,不需要做。",[15,1462,1463],{},"藍色部分我們不要用官方的，官方是國外源，我們替換成國內源。",[15,1465,1466],{},"先去鏡像源換源：",[15,1468,1469],{},[49,1470,1471],{"href":1471,"rel":1472},"https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fhelp\u002Fros2\u002F",[53],[15,1474,1475],{},[28,1476],{"alt":30,"src":1477},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage48.webp",[15,1479,1480],{},"比如我是debian12：",[353,1482,1484],{"className":409,"code":1483,"language":411,"meta":30,"style":30},"sudo apt install curl gnupg2\nsudo curl -sSL https:\u002F\u002Fraw.githubusercontent.com\u002Fros\u002Frosdistro\u002Fmaster\u002Fros.key  -o \u002Fusr\u002Fshare\u002Fkeyrings\u002Fros-archive-keyring.gpg\n\necho \"deb [arch=$(dpkg --print-architecture) signed-by=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fros-archive-keyring.gpg] https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fros2\u002Fubuntu bookworm main\" | sudo tee \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fros2.list > \u002Fdev\u002Fnull\nsudo apt update\n",[360,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:\u002F\u002Fraw.githubusercontent.com\u002Fros\u002Frosdistro\u002Fmaster\u002Fros.key",[415,1513,1514],{"class":421},"  -o",[415,1516,1517],{"class":475}," \u002Fusr\u002Fshare\u002Fkeyrings\u002Fros-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":119},[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=\u002Fusr\u002Fshare\u002Fkeyrings\u002Fros-archive-keyring.gpg] https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Fros2\u002Fubuntu bookworm main\"",[415,1539,1540],{"class":520}," |",[415,1542,1543],{"class":471}," sudo",[415,1545,1546],{"class":475}," tee",[415,1548,1549],{"class":475}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002Fros2.list",[415,1551,1552],{"class":520}," >",[415,1554,1555],{"class":475}," \u002Fdev\u002Fnull\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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage49.webp",[93,1571,1572],{"start":625},[76,1573,1574],{},"上圖成功換源後，再安裝ros的工具：",[15,1576,1577],{},[28,1578],{"alt":30,"src":1579},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage50.webp",[353,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",[360,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":119},[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":131},[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":143},[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":161},[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":180},[415,1694,1695],{"class":475},"  ros-dev-tools\n",[93,1697,1698],{"start":119},[76,1699,1700],{},"下載ROS2源碼",[15,1702,1703],{},[28,1704],{"alt":30,"src":1705},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage51.webp",[15,1707,1708],{},"找一個要存放ROS2的文件夾,建議在\u002Fhome分區找,然後在這個文件夾下打開終端.",[353,1710,1711],{"className":602,"code":838,"language":604,"meta":30,"style":30},[360,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage52.webp",[93,1731,1732],{"start":639},[76,1733,1734],{},"補依賴之前，我們需要先初始化rosdep並給rosdep換源：",[15,1736,1737],{},[28,1738],{"alt":30,"src":1739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage53.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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage54.webp",[15,1754,1755],{},[28,1756],{"alt":30,"src":1757},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage55.webp",[353,1759,1760],{"className":602,"code":901,"language":604,"meta":30,"style":30},[360,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":119},[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":131},[415,1797,947],{"class":615},[415,1799,1800],{"class":417,"line":699},[415,1801,952],{"class":611},[415,1803,1804],{"class":417,"line":143},[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":161},[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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage56.webp",[15,1832,1833],{},[28,1834],{"alt":30,"src":1835},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage57.webp",[15,1837,1838],{},"出現以上紅框部分，就是成功換源了。如果你不換源，下面補依賴的過程可能會巨慢（我具體沒試過，猜測），除非你科學了。",[353,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",[360,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":119},[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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage58.webp",[93,1879,1880],{"start":131},[76,1881,1882],{},"編譯ROS2",[15,1884,1885],{},"在ros_jazzy目錄下，打開終端，跑下面命令。",[353,1887,1888],{"className":409,"code":1238,"language":411,"meta":30,"style":30},[360,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage59.webp",[15,1910,1911],{},"等待構建完畢,下方就是構建完畢且沒錯誤的樣子",[15,1913,1914],{},[28,1915],{"alt":30,"src":1916},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage60.webp",[93,1918,1919],{"start":699},[76,1920,1260],{},[15,1922,1263,1923],{},[360,1924,1266],{},[15,1926,1927],{},[28,1928],{"alt":30,"src":1929},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage61.webp",[15,1931,1274],{},[353,1933,1934],{"className":602,"code":1277,"language":604,"meta":30,"style":30},[360,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:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage62.webp",[353,1948,1950],{"className":409,"code":1949,"language":411,"meta":30,"style":30},"\n# 配置ROS2环境\nexport ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml\nsource ~\u002FUserFloder\u002FApplcations\u002Fros2_jazzy\u002Finstall\u002Fsetup.bash\n",[360,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:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml\n",[415,1974,1975,1977],{"class":417,"line":119},[415,1976,528],{"class":421},[415,1978,1979],{"class":475}," ~\u002FUserFloder\u002FApplcations\u002Fros2_jazzy\u002Finstall\u002Fsetup.bash\n",[15,1981,1294,1982,1298],{},[360,1983,1297],{},[353,1985,1986],{"className":602,"code":1301,"language":604,"meta":30,"style":30},[360,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},[93,2001,2002],{"start":143},[76,2003,539],{},[15,2005,542,2006,546],{},[360,2007,545],{},[40,2009,2011],{"id":2010},"docker安裝ros2","Docker安裝ROS2",[15,2013,2014],{},[49,2015,2017],{"href":2016},"\u002Fwiki\u002F2024-10-03-docker-jiao-cheng","Docker教程",[10,2019,2021],{"id":2020},"ros2安裝進階可選","ROS2安裝進階(可選)",[15,2023,2024],{},"上面只是安裝了最基本的ROS2包和配置了最基本的ROS2環境。",[15,2026,2027],{},"你安裝完上面的內容後，可以選擇接着進行下面的進階配置ROS2環境。",[15,2029,2030],{},"也可以不安裝進階得東西，學到啥再安裝啥就可以，當然也有想一勞永逸的同學，所以下面也會列出來最常用的ros2包和環境配置供大家一次性安裝。",[15,2032,2033],{},[49,2034,2035],{"href":2035,"rel":2036},"https:\u002F\u002Findex.ros.org\u002F?search_packages=true",[53],[40,2038,2039],{"id":2039},"安裝進階的包",[15,2041,2042],{},"以下是一些ROS2自帶的導航算法和仿真環境等等的包，下方將列出這些包。",[15,2044,2045],{},"如果你是Ubuntu的話：",[15,2047,2048],{},"下面的包你全都可以用apt安裝，不用手動編譯！！！",[15,2050,2051],{},"如果你不是Ubuntu的話：",[15,2053,2054],{},"灰色的是上面基礎教程安裝過的包，",[15,2056,2057],{},"黃色是需要手動編譯的包，",[15,2059,2060],{},"藍色是不僅要手動編譯，還要手動修改一些源碼的包。",[1158,2062,2063,2070],{},[1161,2064,2065],{},[1164,2066,2067],{},[1167,2068,2069],{"align":1169},"ROS的包（非Ubuntu的發行版基本都需要手動編譯）",[1178,2071,2072,2077,2082,2087,2092,2097,2102,2107,2112,2117,2122,2127,2132,2137,2142,2147,2152,2157,2162,2167],{},[1164,2073,2074],{},[1183,2075,2076],{"align":1169},"軟件包\u002F庫名稱",[1164,2078,2079],{},[1183,2080,2081],{"align":1169},"ros-humble-desktop",[1164,2083,2084],{},[1183,2085,2086],{"align":1169},"ros-humble-xacro",[1164,2088,2089],{},[1183,2090,2091],{"align":1169},"ros-humble-joint-state-publisher",[1164,2093,2094],{},[1183,2095,2096],{"align":1169},"ros-humble-joint-state-publisher-gui",[1164,2098,2099],{},[1183,2100,2101],{"align":1169},"ros-humble-gazebo-ros",[1164,2103,2104],{},[1183,2105,2106],{"align":1169},"ros-humble-gazebo-ros-pkgs",[1164,2108,2109],{},[1183,2110,2111],{"align":1169},"ros-humble-ros-gz",[1164,2113,2114],{},[1183,2115,2116],{"align":1169},"ros-humble-diagnostic-updater",[1164,2118,2119],{},[1183,2120,2121],{"align":1169},"ros-humble-teleop-twist-keyboard",[1164,2123,2124],{},[1183,2125,2126],{"align":1169},"ros-humble-navigation2",[1164,2128,2129],{},[1183,2130,2131],{"align":1169},"ros-humble-nav2-bringup",[1164,2133,2134],{},[1183,2135,2136],{"align":1169},"ros-humble-slam-toolbox",[1164,2138,2139],{},[1183,2140,2141],{"align":1169},"ros-humble-cartographer",[1164,2143,2144],{},[1183,2145,2146],{"align":1169},"ros-humble-cartographer-ros",[1164,2148,2149],{},[1183,2150,2151],{"align":1169},"ros-humble-asio-cmake-module",[1164,2153,2154],{},[1183,2155,2156],{"align":1169},"ros-humble-serial-driver",[1164,2158,2159],{},[1183,2160,2161],{"align":1169},"ros-humble-pcl-ros",[1164,2163,2164],{},[1183,2165,2166],{"align":1169},"ros-humble-pointcloud-to-laserscan",[1164,2168,2169],{},[1183,2170,2171],{"align":1169},"ros-humble-vision-opencv",[1158,2173,2174,2181],{},[1161,2175,2176],{},[1164,2177,2178],{},[1167,2179,2180],{"align":1169},"非ROS包（基本都可以apt,dnf安裝）",[1178,2182,2183,2187,2192,2197,2202,2207],{},[1164,2184,2185],{},[1183,2186,2076],{"align":1169},[1164,2188,2189],{},[1183,2190,2191],{"align":1169},"libpcl-dev",[1164,2193,2194],{},[1183,2195,2196],{"align":1169},"libeigen3-dev",[1164,2198,2199],{},[1183,2200,2201],{"align":1169},"libpcap-dev",[1164,2203,2204],{},[1183,2205,2206],{"align":1169},"libboost-dev",[1164,2208,2209],{},[1183,2210,2211],{"align":1169},"libogre-1.12-dev",[15,2213,2214],{},"但是上面這些包可以依賴於其他的包，下面這個倉庫裏有全部的包的倉庫鏈接：（往後看就知道怎麼用了）",[15,2216,2217],{},[49,2218,2219],{"href":2219,"rel":2220},"https:\u002F\u002Fgithub.com\u002Fros\u002Frosdistro\u002Ftree\u002Fmaster",[53],[15,2222,2223],{},[28,2224],{"alt":30,"src":2225},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage63.webp",[252,2227,2229],{"id":2228},"apt安裝方式ubuntu強烈建議","apt安裝方式（Ubuntu強烈建議）",[353,2231,2233],{"className":409,"code":2232,"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",[360,2234,2235,2253,2260,2267,2274,2281,2288,2295,2302,2309,2316,2323,2330,2337,2344,2351,2358,2365,2372,2379,2386,2393,2400,2407,2414,2421],{"__ignoreMap":30},[415,2236,2237,2239,2241,2243,2245,2247,2249,2251],{"class":417,"line":418},[415,2238,472],{"class":471},[415,2240,1384],{"class":475},[415,2242,1387],{"class":475},[415,2244,1390],{"class":611},[415,2246,472],{"class":471},[415,2248,1384],{"class":475},[415,2250,479],{"class":475},[415,2252,1606],{"class":421},[415,2254,2255,2258],{"class":417,"line":485},[415,2256,2257],{"class":475},"    ros-humble-desktop",[415,2259,1606],{"class":421},[415,2261,2262,2265],{"class":417,"line":625},[415,2263,2264],{"class":475},"    ros-dev-tools",[415,2266,1606],{"class":421},[415,2268,2269,2272],{"class":417,"line":119},[415,2270,2271],{"class":475},"    ros-humble-xacro",[415,2273,1606],{"class":421},[415,2275,2276,2279],{"class":417,"line":639},[415,2277,2278],{"class":475},"    ros-humble-joint-state-publisher",[415,2280,1606],{"class":421},[415,2282,2283,2286],{"class":417,"line":131},[415,2284,2285],{"class":475},"    ros-humble-joint-state-publisher-gui",[415,2287,1606],{"class":421},[415,2289,2290,2293],{"class":417,"line":699},[415,2291,2292],{"class":475},"    ros-humble-ros-gz",[415,2294,1606],{"class":421},[415,2296,2297,2300],{"class":417,"line":143},[415,2298,2299],{"class":475},"    ros-humble-gazebo-ros",[415,2301,1606],{"class":421},[415,2303,2304,2307],{"class":417,"line":710},[415,2305,2306],{"class":475},"    ros-humble-gazebo-ros-pkgs",[415,2308,1606],{"class":421},[415,2310,2311,2314],{"class":417,"line":716},[415,2312,2313],{"class":475},"    ros-humble-imu-tools",[415,2315,1606],{"class":421},[415,2317,2318,2321],{"class":417,"line":161},[415,2319,2320],{"class":475},"    ros-humble-diagnostic-updater",[415,2322,1606],{"class":421},[415,2324,2325,2328],{"class":417,"line":727},[415,2326,2327],{"class":475},"    ros-humble-teleop-twist-keyboard",[415,2329,1606],{"class":421},[415,2331,2332,2335],{"class":417,"line":733},[415,2333,2334],{"class":475},"    ros-humble-navigation2",[415,2336,1606],{"class":421},[415,2338,2339,2342],{"class":417,"line":180},[415,2340,2341],{"class":475},"    ros-humble-nav2-bringup",[415,2343,1606],{"class":421},[415,2345,2346,2349],{"class":417,"line":744},[415,2347,2348],{"class":475},"    ros-humble-slam-toolbox",[415,2350,1606],{"class":421},[415,2352,2353,2356],{"class":417,"line":192},[415,2354,2355],{"class":475},"    ros-humble-cartographer",[415,2357,1606],{"class":421},[415,2359,2360,2363],{"class":417,"line":755},[415,2361,2362],{"class":475},"    ros-humble-cartographer-ros",[415,2364,1606],{"class":421},[415,2366,2367,2370],{"class":417,"line":761},[415,2368,2369],{"class":475},"    ros-humble-asio-cmake-module",[415,2371,1606],{"class":421},[415,2373,2374,2377],{"class":417,"line":767},[415,2375,2376],{"class":475},"    ros-humble-serial-driver",[415,2378,1606],{"class":421},[415,2380,2381,2384],{"class":417,"line":773},[415,2382,2383],{"class":475},"    ros-humble-pcl-ros",[415,2385,1606],{"class":421},[415,2387,2388,2391],{"class":417,"line":779},[415,2389,2390],{"class":475},"    ros-humble-vision-opencv",[415,2392,1606],{"class":421},[415,2394,2395,2398],{"class":417,"line":784},[415,2396,2397],{"class":475},"    ros-humble-pointcloud-to-laserscan",[415,2399,1606],{"class":421},[415,2401,2402,2405],{"class":417,"line":790},[415,2403,2404],{"class":475},"    libpcl-dev",[415,2406,1606],{"class":421},[415,2408,2409,2412],{"class":417,"line":795},[415,2410,2411],{"class":475},"    libeigen3-dev",[415,2413,1606],{"class":421},[415,2415,2416,2419],{"class":417,"line":801},[415,2417,2418],{"class":475},"    libpcap-dev",[415,2420,1606],{"class":421},[415,2422,2423],{"class":417,"line":807},[415,2424,2425],{"class":475},"    python3-colcon-common-extensions\n",[252,2427,2429],{"id":2428},"源碼方式非ubuntu","源碼方式（非Ubuntu）",[15,2431,2432],{},"以debian12為例。",[2434,2435,2436],"h6",{"id":2436},"黃色的包",[15,2438,2439],{},"以安裝ros-jazzy-xacro，ros-jazzy-joint-state-publisher，ros-jazzy-joint-state-publisher-gui這三個包為例，其他的包一樣操作。",[15,2441,2442],{},[49,2443,2035],{"href":2035,"rel":2444},[53],[15,2446,2447],{},"進入上面的網站，在下圖中選擇對應版本，比如我是JAZZY，然後在搜索框中搜索xacro，joint_state_publisher，joint_state_publisher_gui",[15,2449,2450],{},[28,2451],{"alt":30,"src":2452},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage64.webp",[15,2454,2455],{},"比如xacro",[15,2457,2458],{},[28,2459],{"alt":30,"src":2460},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage65.webp",[15,2462,2463],{},[28,2464],{"alt":30,"src":2465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage66.webp",[15,2467,2468],{},"找到對應版本的xacro，然後倉庫地址是checkout URI，分支是vcs version,你可以使用git clone一個一個克隆下來，但這是巨麻煩的一件事，所以我們選擇ROS2提供給我們的vcs命令進行下載包的源碼。",[15,2470,2471],{},"首先，進入自己的ros2_jazzy文件並打開一個終端",[15,2473,2474],{},[28,2475],{"alt":30,"src":2476},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage67.webp",[15,2478,2479],{},"並創建一個.repos文件，文件名隨便起，比如我的叫my_ros2_jazzy_packages.repos",[15,2481,2482],{},[28,2483],{"alt":30,"src":2484},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage68.webp",[15,2486,2487],{},"然後用vscode編輯，因為.repos使用的是yaml語言，vscode可以識別語法正確性：",[15,2489,2490],{},[28,2491],{"alt":30,"src":2492},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage69.webp",[15,2494,2495],{},"將剛才查詢的信息寫上去：",[353,2497,2501],{"className":2498,"code":2499,"language":2500,"meta":30,"style":30},"language-yaml shiki shiki-themes github-light github-dark","repositories:\n  xacro:\n    type: git\n    url: https:\u002F\u002Fgithub.com\u002Fros\u002Fxacro.git\n    version: ros2\n","yaml",[360,2502,2503,2512,2519,2530,2540],{"__ignoreMap":30},[415,2504,2505,2509],{"class":417,"line":418},[415,2506,2508],{"class":2507},"s9eBZ","repositories",[415,2510,2511],{"class":611},":\n",[415,2513,2514,2517],{"class":417,"line":485},[415,2515,2516],{"class":2507},"  xacro",[415,2518,2511],{"class":611},[415,2520,2521,2524,2527],{"class":417,"line":625},[415,2522,2523],{"class":2507},"    type",[415,2525,2526],{"class":611},": ",[415,2528,2529],{"class":475},"git\n",[415,2531,2532,2535,2537],{"class":417,"line":119},[415,2533,2534],{"class":2507},"    url",[415,2536,2526],{"class":611},[415,2538,2539],{"class":475},"https:\u002F\u002Fgithub.com\u002Fros\u002Fxacro.git\n",[415,2541,2542,2545,2547],{"class":417,"line":639},[415,2543,2544],{"class":2507},"    version",[415,2546,2526],{"class":611},[415,2548,2549],{"class":475},"ros2\n",[15,2551,2552],{},"用同樣的方式找到其他包：",[15,2554,2555],{},[28,2556],{"alt":30,"src":2557},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage70.webp",[15,2559,2560],{},"上圖説明joint_state_publisher和joint_state_publisher_gui其實是一個倉庫，所以我們只需要克隆一個倉庫。",[15,2562,2563],{},"然後vcs version也就是git的分支是ros2。",[353,2565,2567],{"className":2498,"code":2566,"language":2500,"meta":30,"style":30},"repositories:\n  xacro:\n    type: git\n    url: https:\u002F\u002Fgithub.com\u002Fros\u002Fxacro.git\n    version: ros2\n  joint_state_publisher:\n    type: git\n    url: https:\u002F\u002Fgithub.com\u002Fros\u002Fjoint_state_publisher.git\n    version: ros2\n",[360,2568,2569,2575,2581,2589,2597,2605,2612,2620,2629],{"__ignoreMap":30},[415,2570,2571,2573],{"class":417,"line":418},[415,2572,2508],{"class":2507},[415,2574,2511],{"class":611},[415,2576,2577,2579],{"class":417,"line":485},[415,2578,2516],{"class":2507},[415,2580,2511],{"class":611},[415,2582,2583,2585,2587],{"class":417,"line":625},[415,2584,2523],{"class":2507},[415,2586,2526],{"class":611},[415,2588,2529],{"class":475},[415,2590,2591,2593,2595],{"class":417,"line":119},[415,2592,2534],{"class":2507},[415,2594,2526],{"class":611},[415,2596,2539],{"class":475},[415,2598,2599,2601,2603],{"class":417,"line":639},[415,2600,2544],{"class":2507},[415,2602,2526],{"class":611},[415,2604,2549],{"class":475},[415,2606,2607,2610],{"class":417,"line":131},[415,2608,2609],{"class":2507},"  joint_state_publisher",[415,2611,2511],{"class":611},[415,2613,2614,2616,2618],{"class":417,"line":699},[415,2615,2523],{"class":2507},[415,2617,2526],{"class":611},[415,2619,2529],{"class":475},[415,2621,2622,2624,2626],{"class":417,"line":143},[415,2623,2534],{"class":2507},[415,2625,2526],{"class":611},[415,2627,2628],{"class":475},"https:\u002F\u002Fgithub.com\u002Fros\u002Fjoint_state_publisher.git\n",[415,2630,2631,2633,2635],{"class":417,"line":710},[415,2632,2544],{"class":2507},[415,2634,2526],{"class":611},[415,2636,2549],{"class":475},[15,2638,2639],{},"其他的包如法炮製。",[15,2641,2642],{},"但我先以這倆包做個例子。",[15,2644,2645],{},"在ros2_jazzy目錄下的終端：",[353,2647,2649],{"className":409,"code":2648,"language":411,"meta":30,"style":30},"vcs import src \u003C my_ros2_jazzy_packages.repos\n",[360,2650,2651],{"__ignoreMap":30},[415,2652,2653,2656,2659,2662,2665],{"class":417,"line":418},[415,2654,2655],{"class":471},"vcs",[415,2657,2658],{"class":475}," import",[415,2660,2661],{"class":475}," src",[415,2663,2664],{"class":520}," \u003C",[415,2666,2667],{"class":475}," my_ros2_jazzy_packages.repos\n",[15,2669,2670],{},[28,2671],{"alt":30,"src":2672},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage71.webp",[15,2674,2675],{},"可以看到下圖，克隆成功了",[15,2677,2678],{},[28,2679],{"alt":30,"src":2680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage72.webp",[15,2682,2683],{},"接下來進行補充依賴：",[353,2685,2687],{"className":409,"code":2686,"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",[360,2688,2689],{"__ignoreMap":30},[415,2690,2691,2694,2696,2699,2701,2704,2706,2709],{"class":417,"line":418},[415,2692,2693],{"class":471},"rosdep",[415,2695,479],{"class":475},[415,2697,2698],{"class":421}," --from-paths",[415,2700,2661],{"class":475},[415,2702,2703],{"class":421}," --ignore-src",[415,2705,1603],{"class":421},[415,2707,2708],{"class":421}," --skip-keys",[415,2710,2711],{"class":475}," \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers\"\n",[15,2713,2714],{},"提示下圖字樣，即是成功",[15,2716,2717],{},[28,2718],{"alt":30,"src":2719},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage73.webp",[15,2721,2722],{},"再編譯安裝即可：",[353,2724,2726],{"className":409,"code":2725,"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",[360,2727,2728,2736,2740,2745],{"__ignoreMap":30},[415,2729,2730,2732,2734],{"class":417,"line":418},[415,2731,1894],{"class":471},[415,2733,1897],{"class":475},[415,2735,1900],{"class":421},[415,2737,2738],{"class":417,"line":485},[415,2739,622],{"emptyLinePlaceholder":621},[415,2741,2742],{"class":417,"line":625},[415,2743,2744],{"class":615},"# 或仅编译特定包\n",[415,2746,2747,2749,2751,2754,2757,2760],{"class":417,"line":119},[415,2748,1894],{"class":471},[415,2750,1897],{"class":475},[415,2752,2753],{"class":421}," --packages-select",[415,2755,2756],{"class":475}," xacro",[415,2758,2759],{"class":475}," joint_state_publisher",[415,2761,2762],{"class":475}," joint_state_publisher_gui\n",[15,2764,2765],{},[28,2766],{"alt":30,"src":2767},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage74.webp",[15,2769,2639],{},[15,2771,2772],{},"測試：",[353,2774,2776],{"className":409,"code":2775,"language":411,"meta":30,"style":30},"\n# 重新加载环境\nsource ~\u002F.bashrc\n\n# 敲命令\nxacro\n",[360,2777,2778,2782,2787,2793,2797,2802],{"__ignoreMap":30},[415,2779,2780],{"class":417,"line":418},[415,2781,622],{"emptyLinePlaceholder":621},[415,2783,2784],{"class":417,"line":485},[415,2785,2786],{"class":615},"# 重新加载环境\n",[415,2788,2789,2791],{"class":417,"line":625},[415,2790,528],{"class":421},[415,2792,493],{"class":475},[415,2794,2795],{"class":417,"line":119},[415,2796,622],{"emptyLinePlaceholder":621},[415,2798,2799],{"class":417,"line":639},[415,2800,2801],{"class":615},"# 敲命令\n",[415,2803,2804],{"class":417,"line":131},[415,2805,2806],{"class":471},"xacro\n",[15,2808,2809],{},"如下圖xacro提示error即是成功，這樣就是安裝成功了！",[15,2811,2812],{},[28,2813],{"alt":30,"src":2814},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage75.webp",[15,2816,2639],{},[15,2818,2819],{},"我也整了Humble和Jazzy的repos的文件，從官網和distribution.yaml一個個找的，你可以克隆下來直接用我整理的就可以。(但有可能部分倉庫分支ROS2官方會做出修改)",[15,2821,2822],{},[49,2823,2824],{"href":2824,"rel":2825},"https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002Fros-docker\u002Ftree\u002Fmain\u002Frepos",[53],[15,2827,2828],{},[28,2829],{"alt":30,"src":2830},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage76.webp",[2434,2832,2833],{"id":2833},"藍色的包",[15,2835,2836],{},"藍色的包大體的方式是和黃色一樣的，只不過藍色的包在下載完源碼後，還需要修改下源碼裏的文件，再進行編譯。",[15,2838,2839],{},"如vision_opencv的cv_bridge:請看下方OpenCV章節的CV_Bridge。",[252,2841,2842],{"id":2842},"常見問題",[93,2844,2845],{},[76,2846,2847],{},"libogre-dev找不到",[15,2849,2850],{},"Gazebo的渲染引擎，在debian12中用libogre-dev搜不到，必須用libogre-1.12-dev才能搜到。",[93,2852,2853],{"start":485},[76,2854,2855],{},"nav2_mppi_controller裏有個被當成空指針了，警告成錯誤了。",[15,2857,2858,2859,2862],{},"解決在nav2_mppi_controller的cmakelists裏添加上",[360,2860,2861],{},"add_compile_options(-Wno-error=null-dereference)","即可。",[93,2864,2865],{"start":625},[76,2866,2867],{},"nav2_system_tests裏有個內存重疊警告。",[15,2869,2870],{},"解決在nav2_system_tests的cmakelists裏添加上下面的幾行即可。",[353,2872,2874],{"className":409,"code":2873,"language":411,"meta":30,"style":30},"if (CMAKE_CXX_COMPILER_ID MATCHES \"GNU\")\n    add_compile_options(-Wno-restrict)\nendif()\n",[360,2875,2876,2895,2902],{"__ignoreMap":30},[415,2877,2878,2881,2884,2887,2890,2893],{"class":417,"line":418},[415,2879,2880],{"class":520},"if",[415,2882,2883],{"class":611}," (",[415,2885,2886],{"class":471},"CMAKE_CXX_COMPILER_ID",[415,2888,2889],{"class":475}," MATCHES",[415,2891,2892],{"class":475}," \"GNU\"",[415,2894,1156],{"class":611},[415,2896,2897,2900],{"class":417,"line":485},[415,2898,2899],{"class":471},"    add_compile_options(-Wno-restrict",[415,2901,1156],{"class":611},[415,2903,2904,2907],{"class":417,"line":625},[415,2905,2906],{"class":471},"endif",[415,2908,2909],{"class":611},"()\n",[93,2911,2912],{"start":119},[76,2913,2914],{},"有的庫在Fedora最新版沒有，在舊版有。",[15,2916,2917],{},[28,2918],{"alt":30,"src":2919},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage77.webp",[15,2921,2922],{},[49,2923,2924],{"href":2924,"rel":2925},"https:\u002F\u002Fsrc.fedoraproject.org\u002Fprojects\u002Frpms\u002F%2A",[53],[15,2927,2928],{},[28,2929],{"alt":30,"src":2930},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage78.webp",[353,2932,2934],{"className":409,"code":2933,"language":411,"meta":30,"style":30},"sudo dnf install python3-pykdl --releasever=41\nsudo dnf install orocos-kdl-devel --releasever=41\n",[360,2935,2936,2951],{"__ignoreMap":30},[415,2937,2938,2940,2943,2945,2948],{"class":417,"line":418},[415,2939,472],{"class":471},[415,2941,2942],{"class":475}," dnf",[415,2944,479],{"class":475},[415,2946,2947],{"class":475}," python3-pykdl",[415,2949,2950],{"class":421}," --releasever=41\n",[415,2952,2953,2955,2957,2959,2962],{"class":417,"line":485},[415,2954,472],{"class":471},[415,2956,2942],{"class":475},[415,2958,479],{"class":475},[415,2960,2961],{"class":475}," orocos-kdl-devel",[415,2963,2950],{"class":421},[93,2965,2966],{"start":639},[76,2967,2968],{},"有些python庫在最新版系統上下不了，因為python版本過高",[15,2970,2971],{},"可以使用pip3安裝該庫",[353,2973,2975],{"className":409,"code":2974,"language":411,"meta":30,"style":30},"pip3 install flake8-docstrings\n",[360,2976,2977],{"__ignoreMap":30},[415,2978,2979,2982,2984],{"class":417,"line":418},[415,2980,2981],{"class":471},"pip3",[415,2983,479],{"class":475},[415,2985,2986],{"class":475}," flake8-docstrings\n",[15,2988,2989],{},"但後續編譯的話，需要把該庫加入rosdep忽略的依賴。比如python3-flake8-docstrings的話就是下面這行：",[353,2991,2993],{"className":409,"code":2992,"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",[360,2994,2995,3013,3017,3022],{"__ignoreMap":30},[415,2996,2997,2999,3001,3003,3005,3007,3009,3011],{"class":417,"line":418},[415,2998,2693],{"class":471},[415,3000,479],{"class":475},[415,3002,2698],{"class":421},[415,3004,2661],{"class":475},[415,3006,2703],{"class":421},[415,3008,1603],{"class":421},[415,3010,2708],{"class":421},[415,3012,2711],{"class":475},[415,3014,3015],{"class":417,"line":485},[415,3016,622],{"emptyLinePlaceholder":621},[415,3018,3019],{"class":417,"line":625},[415,3020,3021],{"class":615},"# 改为\n",[415,3023,3024,3026,3028,3030,3032,3034,3036,3038],{"class":417,"line":119},[415,3025,2693],{"class":471},[415,3027,479],{"class":475},[415,3029,2698],{"class":421},[415,3031,2661],{"class":475},[415,3033,2703],{"class":421},[415,3035,1603],{"class":421},[415,3037,2708],{"class":421},[415,3039,3040],{"class":475}," \"fastcdr rti-connext-dds-6.0.1 urdfdom_headers python3-flake8-docstrings\"\n",[15,3042,3043],{},[28,3044],{"alt":30,"src":3045},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage79.webp",[40,3047,3048],{"id":3048},"環境進階",[252,3050,3052],{"id":3051},"apt方式","Apt方式",[353,3054,3058],{"className":3055,"code":3056,"language":3057,"meta":30,"style":30},"language-javascript shiki shiki-themes github-light github-dark","\n# rosdep换源\nexport ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml\n\n# 加载ROS2环境\nsource \u002Fopt\u002Fros\u002Fjazzy\u002Fsetup.bash\n\n# 配置ROS2的分布式\nexport ROS_DOMAIN_ID=6\n\n# 配置新版Gazebo的资源（这里先注释，等你学到gazebo再打开）\n#export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FMySource\u002FROS_WS\u002Fgazebo_models:\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FMySource\u002FROS_WS\u002Fign_models\n","javascript",[360,3059,3060,3064,3069,3074,3078,3083,3088,3092,3097,3102,3106,3111],{"__ignoreMap":30},[415,3061,3062],{"class":417,"line":418},[415,3063,622],{"emptyLinePlaceholder":621},[415,3065,3066],{"class":417,"line":485},[415,3067,3068],{},"# rosdep换源\n",[415,3070,3071],{"class":417,"line":625},[415,3072,3073],{},"export ROSDISTRO_INDEX_URL=https:\u002F\u002Fmirrors.bfsu.edu.cn\u002Frosdistro\u002Findex-v4.yaml\n",[415,3075,3076],{"class":417,"line":119},[415,3077,622],{"emptyLinePlaceholder":621},[415,3079,3080],{"class":417,"line":639},[415,3081,3082],{},"# 加载ROS2环境\n",[415,3084,3085],{"class":417,"line":131},[415,3086,3087],{},"source \u002Fopt\u002Fros\u002Fjazzy\u002Fsetup.bash\n",[415,3089,3090],{"class":417,"line":699},[415,3091,622],{"emptyLinePlaceholder":621},[415,3093,3094],{"class":417,"line":143},[415,3095,3096],{},"# 配置ROS2的分布式\n",[415,3098,3099],{"class":417,"line":710},[415,3100,3101],{},"export ROS_DOMAIN_ID=6\n",[415,3103,3104],{"class":417,"line":716},[415,3105,622],{"emptyLinePlaceholder":621},[415,3107,3108],{"class":417,"line":161},[415,3109,3110],{},"# 配置新版Gazebo的资源（这里先注释，等你学到gazebo再打开）\n",[415,3112,3113],{"class":417,"line":727},[415,3114,3115],{},"#export GZ_SIM_RESOURCE_PATH=$GZ_SIM_RESOURCE_PATH:\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FMySource\u002FROS_WS\u002Fgazebo_models:\u002Fhome\u002Ftungchiahui\u002FUserFloder\u002FMySource\u002FROS_WS\u002Fign_models\n",[15,3117,3118],{},"注意，Gazebo資源包在不同ROS2版本可能宏的名稱不同，如在ROS2Humble裏是IGN_GAZEBO_RESOURCE_PATH，在ROS2Jazzy裏是GZ_SIM_RESOURCE_PATH。（往後的ROS2版本估計都是GZ_SIM_RESOURCE_PATH）（詳見下方Gazebo教程）",[252,3120,3121],{"id":3121},"源碼方式",[15,3123,3124],{},"與apt方式相同，但是需要把加載ROS2環境的那個setup.bash路徑設置為你的ros2安裝路徑。",[353,3126,3128],{"className":409,"code":3127,"language":411,"meta":30,"style":30},"\n# 加载ROS2环境\nsource ~\u002FUserFloder\u002FApplcations\u002Fros2_jazzy\u002Finstall\u002Fsetup.bash\n",[360,3129,3130,3134,3138],{"__ignoreMap":30},[415,3131,3132],{"class":417,"line":418},[415,3133,622],{"emptyLinePlaceholder":621},[415,3135,3136],{"class":417,"line":485},[415,3137,3082],{"class":615},[415,3139,3140,3142],{"class":417,"line":625},[415,3141,528],{"class":421},[415,3143,1979],{"class":475},[10,3145,539],{"id":3146},"測試ros2-1",[40,3148,3149],{"id":3149},"示例1",[15,3151,3152],{},"打開兩個終端，並分別輸入如下兩個紅框框裏的命令",[15,3154,3155],{},[28,3156],{"alt":30,"src":3157},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage80.webp",[15,3159,3160],{},"彈出如下程序，則測試成功。",[15,3162,3163],{},"對着終端按Ctrl+C可以終止程序。",[15,3165,3166],{},[28,3167],{"alt":30,"src":3168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage81.webp",[40,3170,3171],{"id":3171},"示例2",[15,3173,3174],{},"烏龜作為ROS老測試項目了，必須拉出來溜溜！",[15,3176,3177],{},"同樣開兩個終端，並分別輸入以下命令。",[353,3179,3181],{"className":409,"code":3180,"language":411,"meta":30,"style":30},"ros2 run turtlesim turtlesim_node\nros2 run turtlesim turtle_teleop_key\n",[360,3182,3183,3197],{"__ignoreMap":30},[415,3184,3185,3188,3191,3194],{"class":417,"line":418},[415,3186,3187],{"class":471},"ros2",[415,3189,3190],{"class":475}," run",[415,3192,3193],{"class":475}," turtlesim",[415,3195,3196],{"class":475}," turtlesim_node\n",[415,3198,3199,3201,3203,3205],{"class":417,"line":485},[415,3200,3187],{"class":471},[415,3202,3190],{"class":475},[415,3204,3193],{"class":475},[415,3206,3207],{"class":475}," turtle_teleop_key\n",[15,3209,3210],{},"鼠標點以下紅色部分，然後通過小鍵盤的方向鍵可以控制烏龜運行，如果沒有小鍵盤，可以嘗試GBVCDERT等按鍵操控小烏龜。",[15,3212,3213],{},"同樣地，對着終端按Ctrl+C可以終止程序。",[15,3215,3216],{},[28,3217],{"alt":30,"src":3218},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage82.webp",[10,3220,2842],{"id":3221},"常見問題-1",[40,3223,3225],{"id":3224},"rviz2閃爍","Rviz2閃爍",[15,3227,3228],{},"如果2K+的電腦安裝完rviz2有顯示問題，可以在.bashrc里加上下面的內容，用來讓qt不縮放。",[353,3230,3232],{"className":409,"code":3231,"language":411,"meta":30,"style":30},"export QT_AUTO_SCREEN_SCALE_FACTOR=0\nexport QT_SCREEN_SCALE_FACTORS=[1.0]\n",[360,3233,3234,3246],{"__ignoreMap":30},[415,3235,3236,3238,3241,3243],{"class":417,"line":418},[415,3237,633],{"class":520},[415,3239,3240],{"class":611}," QT_AUTO_SCREEN_SCALE_FACTOR",[415,3242,1105],{"class":520},[415,3244,3245],{"class":421},"0\n",[415,3247,3248,3250,3253,3255],{"class":417,"line":485},[415,3249,633],{"class":520},[415,3251,3252],{"class":611}," QT_SCREEN_SCALE_FACTORS",[415,3254,1105],{"class":520},[415,3256,3257],{"class":611},"[1.0]\n",[3259,3260,3261],"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":3263},[3264,3265,3266,3267,3268,3269,3270,3271],{"id":12,"depth":625,"text":13},{"id":23,"depth":625,"text":24},{"id":37,"depth":625,"text":38},{"id":90,"depth":625,"text":91},{"id":204,"depth":625,"text":205},{"id":2020,"depth":625,"text":2021},{"id":3146,"depth":625,"text":539},{"id":3221,"depth":625,"text":2842},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao",0,"0100","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","zh-hk:2023-12-30-ros2-tutorial","\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍",false,null,"zh-HK","zh-hk",{},{"title":5,"description":30},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","Pqz4jMZaJCjMCmZI0fOC205MmverHOhXcgBo30LhSv8",[3292,3293,3298,3303,3308,3313,3318,3323,3328,3333,3338,3343,3348,3353,3358,3363,3368,3373,3378,3383,3388,3393,3398,3403,3408,3413,3417,3422,3426,3431,3436,3441,3446,3451,3456,3461,3466,3471,3476,3481,3486,3491,3496,3501,3506,3511,3516,3521,3526,3531,3536,3541,3546,3551,3556,3561,3566,3571,3576,3581],{"path":3272,"stem":3289,"title":5,"date":3275,"chapterOrder":3274,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},{"path":3294,"stem":3295,"title":3296,"date":3275,"chapterOrder":3297,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入門操作","0200",{"path":3299,"stem":3300,"title":3301,"date":3275,"chapterOrder":3302,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空間與功能包","0300",{"path":3304,"stem":3305,"title":3306,"date":3275,"chapterOrder":3307,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信","0400",{"path":3309,"stem":3310,"title":3311,"date":3275,"chapterOrder":3312,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信機制","0500",{"path":3314,"stem":3315,"title":3316,"date":3275,"chapterOrder":3317,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":3319,"stem":3320,"title":3321,"date":3275,"chapterOrder":3322,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2","0700",{"path":3324,"stem":3325,"title":3326,"date":3275,"chapterOrder":3327,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","座標變換TF","0800",{"path":3329,"stem":3330,"title":3331,"date":3275,"chapterOrder":3332,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可視化平台RVIZ2與URDF建模語言","0900",{"path":3334,"stem":3335,"title":3336,"date":3275,"chapterOrder":3337,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台","1000",{"path":3339,"stem":3340,"title":3341,"date":3275,"chapterOrder":3342,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":3344,"stem":3345,"title":3346,"date":3275,"chapterOrder":3347,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":3349,"stem":3350,"title":3351,"date":3275,"chapterOrder":3352,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":3354,"stem":3355,"title":3356,"date":3275,"chapterOrder":3357,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","1100-0400",{"path":3359,"stem":3360,"title":3361,"date":3275,"chapterOrder":3362,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台","1100",{"path":3364,"stem":3365,"title":3366,"date":3275,"chapterOrder":3367,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble導航仿真","1200-0100",{"path":3369,"stem":3370,"title":3371,"date":3275,"chapterOrder":3372,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy導航仿真","1200-0200",{"path":3374,"stem":3375,"title":3376,"date":3275,"chapterOrder":3377,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble與Jazzy導航的差異","1200-0300",{"path":3379,"stem":3380,"title":3381,"date":3275,"chapterOrder":3382,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","1200",{"path":3384,"stem":3385,"title":3386,"date":3275,"chapterOrder":3387,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio庫","1300-0100-0100",{"path":3389,"stem":3390,"title":3391,"date":3275,"chapterOrder":3392,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver庫","1300-0100-0200",{"path":3394,"stem":3395,"title":3396,"date":3275,"chapterOrder":3397,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信","1300-0100",{"path":3399,"stem":3400,"title":3401,"date":3275,"chapterOrder":3402,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":3404,"stem":3405,"title":3406,"date":3275,"chapterOrder":3407,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":3409,"stem":3410,"title":3411,"date":3275,"chapterOrder":3412,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信","1300-0200",{"path":3414,"stem":3415,"title":3386,"date":3275,"chapterOrder":3416,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":3418,"stem":3419,"title":3420,"date":3275,"chapterOrder":3421,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信","1300-0300",{"path":3423,"stem":3424,"title":3386,"date":3275,"chapterOrder":3425,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":3427,"stem":3428,"title":3429,"date":3275,"chapterOrder":3430,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信","1300-0400",{"path":3432,"stem":3433,"title":3434,"date":3275,"chapterOrder":3435,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信","1300",{"path":3437,"stem":3438,"title":3439,"date":3275,"chapterOrder":3440,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","機器人組成","1400-0100",{"path":3442,"stem":3443,"title":3444,"date":3275,"chapterOrder":3445,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","遠程開發SSH","1400-0200-0100",{"path":3447,"stem":3448,"title":3449,"date":3275,"chapterOrder":3450,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","遠程訪問桌面","1400-0200-0200",{"path":3452,"stem":3453,"title":3454,"date":3275,"chapterOrder":3455,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控機之遠程開發環境","1400-0200",{"path":3457,"stem":3458,"title":3459,"date":3275,"chapterOrder":3460,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控機之外接USB設備","1400-0300",{"path":3462,"stem":3463,"title":3464,"date":3275,"chapterOrder":3465,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分佈式搭建","1400-0400",{"path":3467,"stem":3468,"title":3469,"date":3275,"chapterOrder":3470,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","優化日誌","1400-0500",{"path":3472,"stem":3473,"title":3474,"date":3275,"chapterOrder":3475,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程計Odom","1400-0600-0100",{"path":3477,"stem":3478,"title":3479,"date":3275,"chapterOrder":3480,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","慣性計IMU","1400-0600-0200",{"path":3482,"stem":3483,"title":3484,"date":3275,"chapterOrder":3485,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷達LiDAR","1400-0600-0300",{"path":3487,"stem":3488,"title":3489,"date":3275,"chapterOrder":3490,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相機Camera","1400-0600-0400",{"path":3492,"stem":3493,"title":3494,"date":3275,"chapterOrder":3495,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS","1400-0600-0500",{"path":3497,"stem":3498,"title":3499,"date":3275,"chapterOrder":3500,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY","1400-0600-0600",{"path":3502,"stem":3503,"title":3504,"date":3275,"chapterOrder":3505,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","鍵盤控制節點","1400-0600-0700",{"path":3507,"stem":3508,"title":3509,"date":3275,"chapterOrder":3510,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台","1400-0600",{"path":3512,"stem":3513,"title":3514,"date":3275,"chapterOrder":3515,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","座標系與話題關係","1400-0700",{"path":3517,"stem":3518,"title":3519,"date":3275,"chapterOrder":3520,"chapterDepth":625,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","輪式里程計標定","1400-0800-0100-0100",{"path":3522,"stem":3523,"title":3524,"date":3275,"chapterOrder":3525,"chapterDepth":625,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","輪式里程計與IMU融合","1400-0800-0100-0200",{"path":3527,"stem":3528,"title":3529,"date":3275,"chapterOrder":3530,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","輪式里程計標定與融合","1400-0800-0100",{"path":3532,"stem":3533,"title":3534,"date":3275,"chapterOrder":3535,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷達工具","1400-0800-0200",{"path":3537,"stem":3538,"title":3539,"date":3275,"chapterOrder":3540,"chapterDepth":485,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相機使用進階","1400-0800-0300",{"path":3542,"stem":3543,"title":3544,"date":3275,"chapterOrder":3545,"chapterDepth":418,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台進階","1400-0800",{"path":3547,"stem":3548,"title":3549,"date":3275,"chapterOrder":3550,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","機器人硬件","1400",{"path":3552,"stem":3553,"title":3554,"date":3275,"chapterOrder":3555,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":3557,"stem":3558,"title":3559,"date":3275,"chapterOrder":3560,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","1600",{"path":3562,"stem":3563,"title":3564,"date":3275,"chapterOrder":3565,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","1700",{"path":3567,"stem":3568,"title":3569,"date":3275,"chapterOrder":3570,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":3572,"stem":3573,"title":3574,"date":3275,"chapterOrder":3575,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台","1900",{"path":3577,"stem":3578,"title":3579,"date":3275,"chapterOrder":3580,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":3282},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":3278,"stem":3582,"title":3583,"date":3275,"chapterOrder":3283,"chapterDepth":3273,"docKey":3277,"docRoot":3278,"docTitle":3279,"isWikiDoc":621,"isWikiIndex":621},"_i18n\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2機器人操作系統教程",{"variants":3585},[3586,3589,3592,3593,3596],{"path":3587,"localeSlug":3588,"i18nKey":3281},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","en-us",{"path":3590,"localeSlug":3591,"i18nKey":3281},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","zh-hant",{"path":3272,"localeSlug":3285,"i18nKey":3281},{"path":3594,"localeSlug":3595,"i18nKey":3281},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","zh-tw",{"path":3597,"localeSlug":3598,"i18nKey":3281},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","zh-cn",[3587,3288,3590,3288,3272,3288,3594,3288,3597,3288],1784646822758]