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