[{"data":1,"prerenderedAt":2401},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch2-ru-men-cao-zuo":3,"wiki-doc-items-2023-12-30-ros2-tutorial":2256},{"id":4,"title":5,"body":6,"chapter":2243,"chapterSort":2244,"date":2245,"description":19,"docKey":2246,"docRoot":2247,"docTitle":2248,"extension":2249,"isWikiDoc":860,"isWikiIndex":2250,"meta":2251,"navigation":860,"path":2252,"seo":2253,"stem":2254,"wikiDepth":74,"__hash__":2255},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch2-入门操作.md","入门操作",{"type":7,"value":8,"toc":2230},"minimark",[9,13,21,26,31,36,41,44,49,57,62,106,109,114,134,139,144,147,152,169,177,205,210,213,218,221,224,227,230,233,235,240,245,248,253,258,261,266,271,274,279,281,286,291,296,299,304,334,339,344,368,373,378,383,413,416,419,424,427,430,434,439,444,449,452,457,462,465,468,504,509,514,517,522,525,530,535,540,543,546,549,554,557,560,563,566,569,572,577,582,585,588,591,596,599,604,619,624,639,642,647,650,655,663,668,673,678,683,687,692,722,725,730,735,740,743,748,751,756,761,766,769,772,777,780,785,790,793,798,810,813,828,833,835,840,944,949,954,959,963,968,973,976,981,986,989,993,998,1006,1014,1022,1025,1028,1033,1036,1041,1044,1052,1055,1060,1063,1068,1071,1076,1079,1081,1086,1091,1096,1099,1104,1109,1114,1119,1124,1164,1169,1172,1177,1182,1184,1187,1192,1197,1200,1205,1210,1215,1218,1223,1226,1231,1234,1239,1241,1246,1251,1256,1261,1263,1266,1271,1274,1277,1280,1285,1290,1293,1298,1303,1308,1313,1317,1322,1325,1330,1356,1361,1365,1370,1378,1381,1384,1387,1451,1476,1483,1488,1491,1513,1527,1534,1568,1571,1576,1579,1584,1587,1592,1597,1602,1605,1610,1613,1618,1621,1624,1643,1648,1796,1799,1822,1833,2141,2150,2153,2170,2175,2183,2187,2192,2197,2202,2207,2210,2213,2216,2221,2226],[10,11,12],"h3",{"id":12},"简介",[14,15,16],"p",{},[17,18],"img",{"alt":19,"src":20},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage83.webp",[14,22,23],{},[17,24],{"alt":19,"src":25},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage84.webp",[14,27,28],{},[17,29],{"alt":19,"src":30},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage85.webp",[14,32,33],{},[17,34],{"alt":19,"src":35},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage86.webp",[14,37,38],{},[17,39],{"alt":19,"src":40},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage87.webp",[10,42,43],{"id":43},"终端环境搭建",[14,45,46],{},[17,47],{"alt":19,"src":48},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage88.webp",[14,50,51,52,56],{},"如果在上方安装ROS2的时候，已经将该语句添加到",[53,54,55],"code",{},"~\u002F.bashrc","了，则不必再跟着这步操作了。",[14,58,59],{},[17,60],{"alt":19,"src":61},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage89.webp",[63,64,68],"pre",{"className":65,"code":66,"language":67,"meta":19,"style":19},"language-bash shiki shiki-themes github-light github-dark","source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash  #将ROS2环境变量配置到当前位置\necho \" source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash\" >> ~\u002F.bashrc    #每次启动终端都会运行该句\n","bash",[53,69,70,87],{"__ignoreMap":19},[71,72,75,79,83],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sj4cs","source",[71,80,82],{"class":81},"sZZnC"," \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash",[71,84,86],{"class":85},"sJ8bj","  #将ROS2环境变量配置到当前位置\n",[71,88,90,93,96,100,103],{"class":73,"line":89},2,[71,91,92],{"class":77},"echo",[71,94,95],{"class":81}," \" source \u002Fopt\u002Fros\u002Fhumble\u002Fsetup.bash\"",[71,97,99],{"class":98},"szBVR"," >>",[71,101,102],{"class":81}," ~\u002F.bashrc",[71,104,105],{"class":85},"    #每次启动终端都会运行该句\n",[107,108],"hr",{},[14,110,111],{},[17,112],{"alt":19,"src":113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage90.webp",[63,115,117],{"className":65,"code":116,"language":67,"meta":19,"style":19},"ros2 run demo_nodes_cpp talker\n",[53,118,119],{"__ignoreMap":19},[71,120,121,125,128,131],{"class":73,"line":74},[71,122,124],{"class":123},"sScJk","ros2",[71,126,127],{"class":81}," run",[71,129,130],{"class":81}," demo_nodes_cpp",[71,132,133],{"class":81}," talker\n",[14,135,136],{},[17,137],{"alt":19,"src":138},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage91.webp",[14,140,141],{},[17,142],{"alt":19,"src":143},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage92.webp",[14,145,146],{},"用ctrl+c来进行取消程序运行",[14,148,149],{},[17,150],{"alt":19,"src":151},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage93.webp",[63,153,155],{"className":65,"code":154,"language":67,"meta":19,"style":19},"ros2 run demo_nodes_py listener\n",[53,156,157],{"__ignoreMap":19},[71,158,159,161,163,166],{"class":73,"line":74},[71,160,124],{"class":123},[71,162,127],{"class":81},[71,164,165],{"class":81}," demo_nodes_py",[71,167,168],{"class":81}," listener\n",[14,170,171,174],{},[17,172],{"alt":19,"src":173},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage94.webp",[17,175],{"alt":19,"src":176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage95.webp",[63,178,180],{"className":65,"code":179,"language":67,"meta":19,"style":19},"ros2 run turtlesim turtlesim_node\nros2 run turtlesim turtle_teleop_key\n",[53,181,182,194],{"__ignoreMap":19},[71,183,184,186,188,191],{"class":73,"line":74},[71,185,124],{"class":123},[71,187,127],{"class":81},[71,189,190],{"class":81}," turtlesim",[71,192,193],{"class":81}," turtlesim_node\n",[71,195,196,198,200,202],{"class":73,"line":89},[71,197,124],{"class":123},[71,199,127],{"class":81},[71,201,190],{"class":81},[71,203,204],{"class":81}," turtle_teleop_key\n",[14,206,207],{},[17,208],{"alt":19,"src":209},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage96.webp",[10,211,212],{"id":212},"命令行操作",[14,214,215],{},[17,216],{"alt":19,"src":217},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage97.webp",[14,219,220],{},"mkdir -p 新建文件夹",[14,222,223],{},"rm -R 递归删除（删掉文件夹及里面包含的文件夹及文件）",[14,225,226],{},"touch 新建文件",[14,228,229],{},"rm 删除文件",[14,231,232],{},"cd ..退回上级目录（cd 点点）",[107,234],{},[14,236,237],{},[17,238],{"alt":19,"src":239},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage98.webp",[14,241,242],{},[17,243],{"alt":19,"src":244},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage99.webp",[14,246,247],{},"会弹提示信息，告诉我们后面要跟的参数",[14,249,250],{},[17,251],{"alt":19,"src":252},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage100.webp",[14,254,255],{},[17,256],{"alt":19,"src":257},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage101.webp",[14,259,260],{},"ros2 node list会把当前ROS2正在运行的节点列出来",[14,262,263],{},[17,264],{"alt":19,"src":265},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage102.webp",[14,267,268],{},[17,269],{"alt":19,"src":270},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage103.webp",[14,272,273],{},"ros2 node info + \u002F节点名 可以查看目标节点的详细情况",[14,275,276],{},[17,277],{"alt":19,"src":278},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage104.webp",[14,280,247],{},[14,282,283],{},[17,284],{"alt":19,"src":285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage105.webp",[14,287,288],{},[17,289],{"alt":19,"src":290},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage106.webp",[14,292,293],{},[17,294],{"alt":19,"src":295},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage107.webp",[14,297,298],{},"可以通过话题来显示机器人运动的状态",[14,300,301],{},[17,302],{"alt":19,"src":303},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage108.webp",[63,305,307],{"className":65,"code":306,"language":67,"meta":19,"style":19},"ros2 topic pub --rate 1 \u002Fturtle1\u002Fcmd_vel geometry_msgs\u002Fmsg\u002FTwist \"{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}\"\n",[53,308,309],{"__ignoreMap":19},[71,310,311,313,316,319,322,325,328,331],{"class":73,"line":74},[71,312,124],{"class":123},[71,314,315],{"class":81}," topic",[71,317,318],{"class":81}," pub",[71,320,321],{"class":77}," --rate",[71,323,324],{"class":77}," 1",[71,326,327],{"class":81}," \u002Fturtle1\u002Fcmd_vel",[71,329,330],{"class":81}," geometry_msgs\u002Fmsg\u002FTwist",[71,332,333],{"class":81}," \"{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}\"\n",[14,335,336],{},[17,337],{"alt":19,"src":338},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage109.webp",[14,340,341],{},[17,342],{"alt":19,"src":343},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage110.webp",[63,345,347],{"className":65,"code":346,"language":67,"meta":19,"style":19},"ros2 service call \u002Fspawn turtlesim\u002Fsrv\u002FSpawn \"{x: 2, y: 2, theta: 0.2, name: ''}\"\n",[53,348,349],{"__ignoreMap":19},[71,350,351,353,356,359,362,365],{"class":73,"line":74},[71,352,124],{"class":123},[71,354,355],{"class":81}," service",[71,357,358],{"class":81}," call",[71,360,361],{"class":81}," \u002Fspawn",[71,363,364],{"class":81}," turtlesim\u002Fsrv\u002FSpawn",[71,366,367],{"class":81}," \"{x: 2, y: 2, theta: 0.2, name: ''}\"\n",[14,369,370],{},[17,371],{"alt":19,"src":372},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage111.webp",[14,374,375],{},[17,376],{"alt":19,"src":377},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage112.webp",[14,379,380],{},[17,381],{"alt":19,"src":382},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage113.webp",[63,384,386],{"className":65,"code":385,"language":67,"meta":19,"style":19},"ros2 bag record \u002Fturtle1\u002Fcmd_vel\nros2 bag play rosbag2_2022_04_11-17_35_40\u002Frosbag2_2022_04_11-17_35_40_0.db3\n",[53,387,388,401],{"__ignoreMap":19},[71,389,390,392,395,398],{"class":73,"line":74},[71,391,124],{"class":123},[71,393,394],{"class":81}," bag",[71,396,397],{"class":81}," record",[71,399,400],{"class":81}," \u002Fturtle1\u002Fcmd_vel\n",[71,402,403,405,407,410],{"class":73,"line":89},[71,404,124],{"class":123},[71,406,394],{"class":81},[71,408,409],{"class":81}," play",[71,411,412],{"class":81}," rosbag2_2022_04_11-17_35_40\u002Frosbag2_2022_04_11-17_35_40_0.db3\n",[14,414,415],{},"ros2 bag record + 话题",[14,417,418],{},"按Ctrl+C结束，然后录制的数据在当前终端的目录下",[14,420,421],{},[17,422],{"alt":19,"src":423},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage114.webp",[14,425,426],{},"如何去复现呢？",[14,428,429],{},"ros2 bag play + 文件夹名称",[10,431,433],{"id":432},"ros2-helloworldc","ROS2 HelloWorld(C++)",[14,435,436],{},[17,437],{"alt":19,"src":438},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage115.webp",[14,440,441],{},[17,442],{"alt":19,"src":443},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage116.webp",[14,445,446],{},[17,447],{"alt":19,"src":448},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage117.webp",[14,450,451],{},"1.创建功能包",[14,453,454],{},[17,455],{"alt":19,"src":456},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage118.webp",[14,458,459],{},[17,460],{"alt":19,"src":461},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage119.webp",[14,463,464],{},"指令就是创建ros2的功能包",[14,466,467],{},"ros2 pkg create + 功能包名 + --build-type(构建类型) + ament_cmake \u002F ament_python + --dependencies（依赖） + rclcpp(ROS2的CPP客户端) + --node-name（节点名） + 节点名",[63,469,471],{"className":65,"code":470,"language":67,"meta":19,"style":19},"ros2 pkg create pkg01_helloworld_cpp --build-type ament_cmake --dependencies rclcpp --node-name helloworld\n",[53,472,473],{"__ignoreMap":19},[71,474,475,477,480,483,486,489,492,495,498,501],{"class":73,"line":74},[71,476,124],{"class":123},[71,478,479],{"class":81}," pkg",[71,481,482],{"class":81}," create",[71,484,485],{"class":81}," pkg01_helloworld_cpp",[71,487,488],{"class":77}," --build-type",[71,490,491],{"class":81}," ament_cmake",[71,493,494],{"class":77}," --dependencies",[71,496,497],{"class":81}," rclcpp",[71,499,500],{"class":77}," --node-name",[71,502,503],{"class":81}," helloworld\n",[14,505,506],{},[17,507],{"alt":19,"src":508},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage120.webp",[14,510,511],{},[17,512],{"alt":19,"src":513},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage121.webp",[14,515,516],{},"源文件自动生成了，文件名和我们指定的node name是一致的。",[14,518,519],{},[17,520],{"alt":19,"src":521},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage122.webp",[14,523,524],{},"这是自动生成的内容，但是和ROS2没有任何关系。",[14,526,527],{},[17,528],{"alt":19,"src":529},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage123.webp",[14,531,532],{},[17,533],{"alt":19,"src":534},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage124.webp",[14,536,537],{},[17,538],{"alt":19,"src":539},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage125.webp",[14,541,542],{},"如果依赖的库不止这一个，则再回车，",[14,544,545],{},"xxx",[14,547,548],{},"再添加下一个",[14,550,551],{},[17,552],{"alt":19,"src":553},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage126.webp",[14,555,556],{},"10行是查找包",[14,558,559],{},"12行是添加可执行的",[14,561,562],{},"add_executable 的第一个参数是 可执行文件的名字（默认和节点名一致，默认和源文件名一致） 第二个参数是源文件的名字",[14,564,565],{},"17行是为我们的可执行程序添加依赖 我们的可执行程序依赖于RCLCPP这个库",[14,567,568],{},"22行是要为我们的可执行程序设立一个安装目录，创建在了当前功能包下的lib目录，也就是 工作空间名\u002Finstall\u002F功能包名\u002Flib",[14,570,571],{},"编辑配置文件之后编译，用cd..返回ws目录",[14,573,574],{},[17,575],{"alt":19,"src":576},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage127.webp",[14,578,579],{},[17,580],{"alt":19,"src":581},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage128.webp",[14,583,584],{},"图标为绿色，是没有警告也没有错误",[14,586,587],{},"是黄色的则有警告",[14,589,590],{},"是红色的则有致命错误",[14,592,593],{},[17,594],{"alt":19,"src":595},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage129.webp",[14,597,598],{},"可执行二进制文件的路径",[14,600,601],{},[17,602],{"alt":19,"src":603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage130.webp",[63,605,607],{"className":65,"code":606,"language":67,"meta":19,"style":19},"source install\u002Fsetup.bash #刷新环境变量\n",[53,608,609],{"__ignoreMap":19},[71,610,611,613,616],{"class":73,"line":74},[71,612,78],{"class":77},[71,614,615],{"class":81}," install\u002Fsetup.bash",[71,617,618],{"class":85}," #刷新环境变量\n",[14,620,621],{},[17,622],{"alt":19,"src":623},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage131.webp",[63,625,627],{"className":65,"code":626,"language":67,"meta":19,"style":19},"ros2 run pkg01_helloworld_cpp helloworld\n",[53,628,629],{"__ignoreMap":19},[71,630,631,633,635,637],{"class":73,"line":74},[71,632,124],{"class":123},[71,634,127],{"class":81},[71,636,485],{"class":81},[71,638,503],{"class":81},[14,640,641],{},"ros2 run 功能包名称 可执行文件名(默认和节点名一致)",[14,643,644],{},[17,645],{"alt":19,"src":646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage132.webp",[14,648,649],{},"编辑ROS2 C++源文件：",[14,651,652],{},[17,653],{"alt":19,"src":654},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage133.webp",[63,656,661],{"className":657,"code":659,"language":660},[658],"language-text","#include \"rclcpp\u002Frclcpp.hpp\"\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = rclcpp::Node::make_shared(\"helloworld_node\");\n\n  RCLCPP_INFO(node->get_logger(),\"hello world!\");\n\n  rclcpp::shutdown();\n\n  return 0;\n}\n","text",[53,662,659],{"__ignoreMap":19},[14,664,665],{},[17,666],{"alt":19,"src":667},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage134.webp",[14,669,670],{},[17,671],{"alt":19,"src":672},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage135.webp",[14,674,675],{},[17,676],{"alt":19,"src":677},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage136.webp",[14,679,680],{},[17,681],{"alt":19,"src":682},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage137.webp",[10,684,686],{"id":685},"ros2-helloworldpython","ROS2 HelloWorld(Python)",[14,688,689],{},[17,690],{"alt":19,"src":691},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage138.webp",[63,693,695],{"className":65,"code":694,"language":67,"meta":19,"style":19},"ros2 pkg create pkg02_helloworld_py --build-type ament_python --dependencies rclpy --node-name helloworld\n",[53,696,697],{"__ignoreMap":19},[71,698,699,701,703,705,708,710,713,715,718,720],{"class":73,"line":74},[71,700,124],{"class":123},[71,702,479],{"class":81},[71,704,482],{"class":81},[71,706,707],{"class":81}," pkg02_helloworld_py",[71,709,488],{"class":77},[71,711,712],{"class":81}," ament_python",[71,714,494],{"class":77},[71,716,717],{"class":81}," rclpy",[71,719,500],{"class":77},[71,721,503],{"class":81},[14,723,724],{},"ros2 pkg create + 功能包名 + --build-type(构建类型) + ament_cmake \u002F ament_python + --dependencies（依赖） + rclpy(ROS2的Python客户端) + --node-name（节点名） + 节点名",[14,726,727],{},[17,728],{"alt":19,"src":729},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage139.webp",[14,731,732],{},[17,733],{"alt":19,"src":734},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage140.webp",[14,736,737],{},[17,738],{"alt":19,"src":739},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage141.webp",[14,741,742],{},"与node name和可执行二进制文件同名",[14,744,745],{},[17,746],{"alt":19,"src":747},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage142.webp",[14,749,750],{},"默认这里面已经有代码，但是和ROS2无关，这是标准的python代码",[14,752,753],{},[17,754],{"alt":19,"src":755},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage143.webp",[14,757,758],{},[17,759],{"alt":19,"src":760},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage144.webp",[14,762,763],{},[17,764],{"alt":19,"src":765},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage145.webp",[14,767,768],{},"二进制可执行文件 映射到 源文件的main函数",[14,770,771],{},"如何编译呢？",[14,773,774],{},[17,775],{"alt":19,"src":776},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage146.webp",[14,778,779],{},"先返回上一级，来到ws目录",[14,781,782],{},[17,783],{"alt":19,"src":784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage147.webp",[14,786,787],{},[17,788],{"alt":19,"src":789},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage148.webp",[14,791,792],{},"有个黄色警告，但是不影响我们使用。",[14,794,795],{},[17,796],{"alt":19,"src":797},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage149.webp",[63,799,801],{"className":65,"code":800,"language":67,"meta":19,"style":19},"source .\u002Finstall\u002Fsetup.bash\n",[53,802,803],{"__ignoreMap":19},[71,804,805,807],{"class":73,"line":74},[71,806,78],{"class":77},[71,808,809],{"class":81}," .\u002Finstall\u002Fsetup.bash\n",[14,811,812],{},"刷新环境变量",[63,814,816],{"className":65,"code":815,"language":67,"meta":19,"style":19},"ros2 run pkg02_helloworld_py helloworld\n",[53,817,818],{"__ignoreMap":19},[71,819,820,822,824,826],{"class":73,"line":74},[71,821,124],{"class":123},[71,823,127],{"class":81},[71,825,707],{"class":81},[71,827,503],{"class":81},[14,829,830],{},[17,831],{"alt":19,"src":832},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage150.webp",[107,834],{},[14,836,837],{},[17,838],{"alt":19,"src":839},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage151.webp",[63,841,845],{"className":842,"code":843,"language":844,"meta":19,"style":19},"language-python shiki shiki-themes github-light github-dark","import rclpy\n\ndef main():\n    rclpy.init()\n    node = rclpy.create_node(\"helloworld_py_node\")\n    node.get_logger().info(\"hello world by python!\")\n    rclpy.shutdown()\n\nif name == '__main__':\n    main()\n","python",[53,846,847,856,862,874,880,898,909,915,920,938],{"__ignoreMap":19},[71,848,849,852],{"class":73,"line":74},[71,850,851],{"class":98},"import",[71,853,855],{"class":854},"sVt8B"," rclpy\n",[71,857,858],{"class":73,"line":89},[71,859,861],{"emptyLinePlaceholder":860},true,"\n",[71,863,865,868,871],{"class":73,"line":864},3,[71,866,867],{"class":98},"def",[71,869,870],{"class":123}," main",[71,872,873],{"class":854},"():\n",[71,875,877],{"class":73,"line":876},4,[71,878,879],{"class":854},"    rclpy.init()\n",[71,881,883,886,889,892,895],{"class":73,"line":882},5,[71,884,885],{"class":854},"    node ",[71,887,888],{"class":98},"=",[71,890,891],{"class":854}," rclpy.create_node(",[71,893,894],{"class":81},"\"helloworld_py_node\"",[71,896,897],{"class":854},")\n",[71,899,901,904,907],{"class":73,"line":900},6,[71,902,903],{"class":854},"    node.get_logger().info(",[71,905,906],{"class":81},"\"hello world by python!\"",[71,908,897],{"class":854},[71,910,912],{"class":73,"line":911},7,[71,913,914],{"class":854},"    rclpy.shutdown()\n",[71,916,918],{"class":73,"line":917},8,[71,919,861],{"emptyLinePlaceholder":860},[71,921,923,926,929,932,935],{"class":73,"line":922},9,[71,924,925],{"class":98},"if",[71,927,928],{"class":854}," name ",[71,930,931],{"class":98},"==",[71,933,934],{"class":81}," '__main__'",[71,936,937],{"class":854},":\n",[71,939,941],{"class":73,"line":940},10,[71,942,943],{"class":854},"    main()\n",[14,945,946],{},[17,947],{"alt":19,"src":948},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage152.webp",[14,950,951],{},[17,952],{"alt":19,"src":953},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage153.webp",[14,955,956],{},[17,957],{"alt":19,"src":958},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage154.webp",[10,960,962],{"id":961},"运行优化bash终端环境","运行优化(bash终端环境)",[14,964,965],{},[17,966],{"alt":19,"src":967},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage155.webp",[14,969,970],{},[17,971],{"alt":19,"src":972},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage156.webp",[14,974,975],{},"要使用绝对路径",[14,977,978],{},[17,979],{"alt":19,"src":980},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage157.webp",[14,982,983],{},[17,984],{"alt":19,"src":985},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage158.webp",[14,987,988],{},"尽量不要这么干，ROS2有一个bug，就是不同工作空间的功能包可能会调用混乱，所以先不要搞全局的运行优化。",[10,990,992],{"id":991},"vscode环境搭建","VScode环境搭建",[14,994,995],{},[17,996],{"alt":19,"src":997},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage159.webp",[14,999,1000,1003],{},[17,1001],{"alt":19,"src":1002},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage160.webp",[17,1004],{"alt":19,"src":1005},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage161.webp",[14,1007,1008,1011],{},[17,1009],{"alt":19,"src":1010},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage162.webp",[17,1012],{"alt":19,"src":1013},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage163.webp",[14,1015,1016,1019],{},[17,1017],{"alt":19,"src":1018},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage164.webp",[17,1020],{"alt":19,"src":1021},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage165.webp",[14,1023,1024],{},"看C\u002FC++，Python，CMake，XML,YAML文件就可以代码高亮显示",[14,1026,1027],{},"在写一些ROS2消息的代码可以提供代码补齐等操作",[14,1029,1030],{},[17,1031],{"alt":19,"src":1032},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage166.webp",[14,1034,1035],{},"编写机器人模型所要用的插件，也可以进行代码补齐",[14,1037,1038],{},[17,1039],{"alt":19,"src":1040},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage167.webp",[14,1042,1043],{},"ROS2经常生成PDF文件，可以通过这个插件来查看",[14,1045,1046,1049],{},[17,1047],{"alt":19,"src":1048},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage168.webp",[17,1050],{"alt":19,"src":1051},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage169.webp",[14,1053,1054],{},"ROS2插件建议等成熟之后再进行安装",[14,1056,1057],{},[17,1058],{"alt":19,"src":1059},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage170.webp",[14,1061,1062],{},"这个官方插件可以尝试安装",[14,1064,1065],{},[17,1066],{"alt":19,"src":1067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage171.webp",[14,1069,1070],{},"人工智能代码补全",[14,1072,1073],{},[17,1074],{"alt":19,"src":1075},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage172.webp",[14,1077,1078],{},"MarkDown高亮",[107,1080],{},[14,1082,1083],{},[17,1084],{"alt":19,"src":1085},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage173.webp",[14,1087,1088],{},[17,1089],{"alt":19,"src":1090},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage174.webp",[14,1092,1093],{},[17,1094],{"alt":19,"src":1095},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage175.webp",[14,1097,1098],{},"虽然报错，但是程序是可以正常运行的。（主要是vscode找不到头文件）",[14,1100,1101],{},[17,1102],{"alt":19,"src":1103},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage176.webp",[14,1105,1106],{},[17,1107],{"alt":19,"src":1108},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage177.webp",[14,1110,1111],{},[17,1112],{"alt":19,"src":1113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage178.webp",[14,1115,1116],{},[17,1117],{"alt":19,"src":1118},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage179.webp",[14,1120,1121],{},[17,1122],{"alt":19,"src":1123},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage180.webp",[63,1125,1129],{"className":1126,"code":1127,"language":1128,"meta":19,"style":19},"language-JSON shiki shiki-themes github-light github-dark","            \"includePath\": [\n                \"${default}\",\n                \"${workspaceFolder}\u002F**\",\n                \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\"\n            ],\n","JSON",[53,1130,1131,1139,1147,1154,1159],{"__ignoreMap":19},[71,1132,1133,1136],{"class":73,"line":74},[71,1134,1135],{"class":81},"            \"includePath\"",[71,1137,1138],{"class":854},": [\n",[71,1140,1141,1144],{"class":73,"line":89},[71,1142,1143],{"class":81},"                \"${default}\"",[71,1145,1146],{"class":854},",\n",[71,1148,1149,1152],{"class":73,"line":864},[71,1150,1151],{"class":81},"                \"${workspaceFolder}\u002F**\"",[71,1153,1146],{"class":854},[71,1155,1156],{"class":73,"line":876},[71,1157,1158],{"class":81},"                \"\u002Fopt\u002Fros\u002Fhumble\u002Finclude\u002F**\"\n",[71,1160,1161],{"class":73,"line":882},[71,1162,1163],{"class":854},"            ],\n",[14,1165,1166],{},[17,1167],{"alt":19,"src":1168},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage181.webp",[14,1170,1171],{},"\u002F**代表要包含该文件夹下的所有的子集",[14,1173,1174],{},[17,1175],{"alt":19,"src":1176},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage182.webp",[14,1178,1179],{},[17,1180],{"alt":19,"src":1181},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage183.webp",[107,1183],{},[14,1185,1186],{},"按Ctrl + `（ESC底下的按键）把VSCODE终端打开",[14,1188,1189],{},[17,1190],{"alt":19,"src":1191},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage184.webp",[14,1193,1194],{},[17,1195],{"alt":19,"src":1196},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage185.webp",[14,1198,1199],{},"--node-name也是可选参数，如果不配置，则不会有源文件，也不会有可执行文件到源文件的映射",[14,1201,1202],{},[17,1203],{"alt":19,"src":1204},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage186.webp",[14,1206,1207],{},[17,1208],{"alt":19,"src":1209},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage187.webp",[14,1211,1212],{},[17,1213],{"alt":19,"src":1214},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage188.webp",[14,1216,1217],{},"不需要修改，已经默认生成好了",[14,1219,1220],{},[17,1221],{"alt":19,"src":1222},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage189.webp",[14,1224,1225],{},"再返回WS目录进行编译（但是此时编译是编译整个WS目录下的所有功能包）",[14,1227,1228],{},[17,1229],{"alt":19,"src":1230},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage190.webp",[14,1232,1233],{},"刷新环境变量并运行",[14,1235,1236],{},[17,1237],{"alt":19,"src":1238},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage191.webp",[107,1240],{},[14,1242,1243],{},[17,1244],{"alt":19,"src":1245},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage192.webp",[14,1247,1248],{},[17,1249],{"alt":19,"src":1250},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage193.webp",[14,1252,1253],{},[17,1254],{"alt":19,"src":1255},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage194.webp",[14,1257,1258],{},[17,1259],{"alt":19,"src":1260},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage195.webp",[107,1262],{},[14,1264,1265],{},"如何在一个功能包里添加多个源文件呢？",[14,1267,1268],{},[17,1269],{"alt":19,"src":1270},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage196.webp",[14,1272,1273],{},"新建一个新文件，比如hellovscode2.cpp",[14,1275,1276],{},"但是此时该文件是一个孤零零的文件，他没有做任何的配置，对应的，编译完之后也不会被执行。",[14,1278,1279],{},"我们想编译执行该文件，必须配置相关的配置文件。",[14,1281,1282],{},[17,1283],{"alt":19,"src":1284},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage197.webp",[14,1286,1287],{},[17,1288],{"alt":19,"src":1289},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage198.webp",[14,1291,1292],{},"选中的这些用不着，可以删掉",[14,1294,1295],{},[17,1296],{"alt":19,"src":1297},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage199.webp",[14,1299,1300],{},[17,1301],{"alt":19,"src":1302},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage200.webp",[14,1304,1305],{},[17,1306],{"alt":19,"src":1307},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage201.webp",[14,1309,1310],{},[17,1311],{"alt":19,"src":1312},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage202.webp",[10,1314,1316],{"id":1315},"运行优化colcon-build","运行优化(colcon build)",[14,1318,1319],{},[17,1320],{"alt":19,"src":1321},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage203.webp",[14,1323,1324],{},"平常会全编译WS目录下的文件",[14,1326,1327],{},[17,1328],{"alt":19,"src":1329},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage204.webp",[63,1331,1333],{"className":65,"code":1332,"language":67,"meta":19,"style":19},"colcon build --packages-select xxx xxx xxx #可以指向多个包\n",[53,1334,1335],{"__ignoreMap":19},[71,1336,1337,1340,1343,1346,1349,1351,1353],{"class":73,"line":74},[71,1338,1339],{"class":123},"colcon",[71,1341,1342],{"class":81}," build",[71,1344,1345],{"class":77}," --packages-select",[71,1347,1348],{"class":81}," xxx",[71,1350,1348],{"class":81},[71,1352,1348],{"class":81},[71,1354,1355],{"class":85}," #可以指向多个包\n",[14,1357,1358],{},[17,1359],{"alt":19,"src":1360},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage205.webp",[10,1362,1364],{"id":1363},"vscode环境进阶","VScode环境进阶",[1366,1367,1369],"h4",{"id":1368},"clangd插件代码提示可选但是建议","clangd插件代码提示(可选,但是建议)",[14,1371,1372],{},[1373,1374,1375],"a",{"href":1375,"rel":1376},"https:\u002F\u002Fcolcon.readthedocs.io\u002Fen\u002Freleased\u002Findex.html",[1377],"nofollow",[14,1379,1380],{},"由于C\u002FC++插件在大项目里的表现简直拉胯的一批，所以我们选择使用llvm里的clangd插件来进行代码提示。",[14,1382,1383],{},"但clangd依赖于cmake生成一个编译信息文件，我们需要一些步骤来生成该文件。",[14,1385,1386],{},"由于ROS2没有像ROS1那样的一个总的规范的CMakeLists，所以配置起来没有ROS1那么方便。",[1388,1389,1390],"ol",{},[1391,1392,1393,1394,1404,1421,1424,1425,1446],"li",{},"配置colcon build参数",[1388,1395,1396],{},[1391,1397,1398,1399,1403],{},"方法一：（不建议） ",[1400,1401,1402],"strong",{},"每次"," 编译要用该命令：",[63,1405,1407],{"className":65,"code":1406,"language":67,"meta":19,"style":19},"colcon build --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1408,1409],{"__ignoreMap":19},[71,1410,1411,1413,1415,1418],{"class":73,"line":74},[71,1412,1339],{"class":123},[71,1414,1342],{"class":81},[71,1416,1417],{"class":77}," --cmake-args",[71,1419,1420],{"class":77}," -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[1422,1423],"br",{},"  等同于在cmake文件里写上（一般不建议改cmakelists）",[63,1426,1428],{"className":65,"code":1427,"language":67,"meta":19,"style":19},"set(CMAKE_EXPORT_COMPILE_COMMANDS ON)\n",[53,1429,1430],{"__ignoreMap":19},[71,1431,1432,1435,1438,1441,1444],{"class":73,"line":74},[71,1433,1434],{"class":77},"set",[71,1436,1437],{"class":854},"(",[71,1439,1440],{"class":81},"CMAKE_EXPORT_COMPILE_COMMANDS",[71,1442,1443],{"class":81}," ON",[71,1445,897],{"class":854},[1388,1447,1448],{"start":882},[1391,1449,1450],{},"方法二：全局参数(更加推荐)",[63,1452,1454],{"className":65,"code":1453,"language":67,"meta":19,"style":19},"mkdir ~\u002F.colcon\n\nvim ~\u002F.colcon\u002Fdefaults.yaml\n",[53,1455,1456,1464,1468],{"__ignoreMap":19},[71,1457,1458,1461],{"class":73,"line":74},[71,1459,1460],{"class":123},"mkdir",[71,1462,1463],{"class":81}," ~\u002F.colcon\n",[71,1465,1466],{"class":73,"line":89},[71,1467,861],{"emptyLinePlaceholder":860},[71,1469,1470,1473],{"class":73,"line":864},[71,1471,1472],{"class":123},"vim",[71,1474,1475],{"class":81}," ~\u002F.colcon\u002Fdefaults.yaml\n",[14,1477,1478,1479,1482],{},"按下",[53,1480,1481],{},"insert（插入）","按键",[14,1484,1485],{},[17,1486],{"alt":19,"src":1487},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage206.webp",[14,1489,1490],{},"输入下方内容",[63,1492,1494],{"className":65,"code":1493,"language":67,"meta":19,"style":19},"build:\n  cmake-args:\n    - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON\n",[53,1495,1496,1501,1506],{"__ignoreMap":19},[71,1497,1498],{"class":73,"line":74},[71,1499,1500],{"class":123},"build:\n",[71,1502,1503],{"class":73,"line":89},[71,1504,1505],{"class":123},"  cmake-args:\n",[71,1507,1508,1511],{"class":73,"line":864},[71,1509,1510],{"class":123},"    -",[71,1512,1420],{"class":77},[14,1514,1478,1515,1518,1519,1522,1523,1526],{},[53,1516,1517],{},"ESC","，并按下",[53,1520,1521],{},":wq",",然后按下",[53,1524,1525],{},"Enter(回车)","即可成功保存。",[14,1528,1529,1530,1533],{},"在编译的时候正常用",[53,1531,1532],{},"colcon build","就可以自动启用CMAKE_EXPORT_COMPILE_COMMANDS=ON参数了。",[1388,1535,1536],{"start":89},[1391,1537,1538,1539,1552,1554,1555,1557,1558,1560,1563],{},"然后再来配置clangd插件",[1388,1540,1541,1549],{},[1391,1542,1543,1544,1546],{},"先下载clangd插件",[1422,1545],{},[17,1547],{"alt":19,"src":1548},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage207.webp",[1391,1550,1551],{},"下载clangd文件",[1422,1553],{},"  按住Ctrl shift P打开搜索框",[1422,1556],{},"  输入clangd 找到下载语言服务器这一项目，点击安装clangd（请保持良好的网络状况）",[1422,1559],{},[17,1561],{"alt":19,"src":1562},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage208.webp",[1388,1564,1565],{"start":900},[1391,1566,1567],{},"接着配置clangd：",[14,1569,1570],{},"禁用C\u002FC++的代码提示功能",[14,1572,1573],{},[17,1574],{"alt":19,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage209.webp",[14,1577,1578],{},"如果没有上图的弹窗，可以进行手动关闭，依然是ctrl shift P,输入settings然后找到如下图的选项",[14,1580,1581],{},[17,1582],{"alt":19,"src":1583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage210.webp",[14,1585,1586],{},"找到下图这个选项，改成disabled即可。",[14,1588,1589],{},[53,1590,1591],{},"\"C_Cpp.intelliSenseEngine\": \"disabled\"",[14,1593,1594],{},[17,1595],{"alt":19,"src":1596},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage211.webp",[1388,1598,1599],{"start":876},[1391,1600,1601],{},"重启clangd",[14,1603,1604],{},"然后ctrl shift P搜索clangd找到如下图的选项（重启clangd语言服务器前，要先colcon build）",[14,1606,1607],{},[17,1608],{"alt":19,"src":1609},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage212.webp",[14,1611,1612],{},"代码提示就正常啦",[14,1614,1615],{},[17,1616],{"alt":19,"src":1617},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage213.webp",[10,1619,1620],{"id":1620},"安装其他工具",[14,1622,1623],{},"安装terminator(建议装，选装,因人而异)",[63,1625,1627],{"className":65,"code":1626,"language":67,"meta":19,"style":19},"sudo apt install terminator\n",[53,1628,1629],{"__ignoreMap":19},[71,1630,1631,1634,1637,1640],{"class":73,"line":74},[71,1632,1633],{"class":123},"sudo",[71,1635,1636],{"class":81}," apt",[71,1638,1639],{"class":81}," install",[71,1641,1642],{"class":81}," terminator\n",[14,1644,1645],{},[17,1646],{"alt":19,"src":1647},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage214.webp",[1649,1650,1651,1667],"table",{},[1652,1653,1654],"thead",{},[1655,1656,1657,1661,1664],"tr",{},[1658,1659,1660],"th",{},"快捷键",[1658,1662,1663],{},"功能",[1658,1665,1666],{},"记忆方法",[1668,1669,1670,1687,1703,1719,1735,1748,1764,1780],"tbody",{},[1655,1671,1672,1678,1681],{},[1673,1674,1675],"td",{},[53,1676,1677],{},"Ctrl + Shift + E",[1673,1679,1680],{},"垂直分屏，左右分",[1673,1682,1683,1686],{},[1400,1684,1685],{},"E = East","，往东边开一个窗口，也就是左右分",[1655,1688,1689,1694,1697],{},[1673,1690,1691],{},[53,1692,1693],{},"Ctrl + Shift + O",[1673,1695,1696],{},"水平分屏，上下分",[1673,1698,1699,1702],{},[1400,1700,1701],{},"O = Over \u002F Under","，上下叠放",[1655,1704,1705,1710,1713],{},[1673,1706,1707],{},[53,1708,1709],{},"Ctrl + Shift + S",[1673,1711,1712],{},"隐藏\u002F显示滚动条",[1673,1714,1715,1718],{},[1400,1716,1717],{},"S = Scrollbar","，滚动条",[1655,1720,1721,1726,1729],{},[1673,1722,1723],{},[53,1724,1725],{},"F11",[1673,1727,1728],{},"全屏\u002F退出全屏",[1673,1730,1731,1734],{},[1400,1732,1733],{},"F = Fullscreen","，F11 本来就是很多软件的全屏键",[1655,1736,1737,1742,1745],{},[1673,1738,1739],{},[53,1740,1741],{},"Ctrl + Tab",[1673,1743,1744],{},"在不同 pane 之间切换",[1673,1746,1747],{},"跟浏览器切 Tab 类似，循环切换",[1655,1749,1750,1755,1758],{},[1673,1751,1752],{},[53,1753,1754],{},"Ctrl + L",[1673,1756,1757],{},"清屏",[1673,1759,1760,1763],{},[1400,1761,1762],{},"L = clear 里的 L","，也可以理解成“拉到新页面”",[1655,1765,1766,1771,1774],{},[1673,1767,1768],{},[53,1769,1770],{},"Ctrl + Shift + W",[1673,1772,1773],{},"关闭当前 pane",[1673,1775,1776,1779],{},[1400,1777,1778],{},"W = Window","，关当前小窗口",[1655,1781,1782,1787,1790],{},[1673,1783,1784],{},[53,1785,1786],{},"Ctrl + Shift + Q",[1673,1788,1789],{},"退出整个 Terminator",[1673,1791,1792,1795],{},[1400,1793,1794],{},"Q = Quit","，退出程序",[14,1797,1798],{},"因为他本身的字体非常暗,所以要设置一下.",[63,1800,1802],{"className":65,"code":1801,"language":67,"meta":19,"style":19},"cp ~\u002F.config\u002Fterminator\u002Fconfig ~\u002F.config\u002Fterminator\u002Fconfig.bak\nvim ~\u002F.config\u002Fterminator\u002Fconfig\n",[53,1803,1804,1815],{"__ignoreMap":19},[71,1805,1806,1809,1812],{"class":73,"line":74},[71,1807,1808],{"class":123},"cp",[71,1810,1811],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig",[71,1813,1814],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig.bak\n",[71,1816,1817,1819],{"class":73,"line":89},[71,1818,1472],{"class":123},[71,1820,1821],{"class":81}," ~\u002F.config\u002Fterminator\u002Fconfig\n",[14,1823,1824,1825,1828,1829,1832],{},"按一下",[53,1826,1827],{},"ggdG",",注意大小写.\n然后按下",[53,1830,1831],{},"insert","按键,\n然后让文件内容为:",[63,1834,1836],{"className":65,"code":1835,"language":67,"meta":19,"style":19},"[global_config]\n  title_transmit_bg_color = \"#31363b\"\n  title_transmit_fg_color = \"#fcfcfc\"\n  title_receive_bg_color = \"#232629\"\n  title_receive_fg_color = \"#fcfcfc\"\n  title_inactive_bg_color = \"#232629\"\n  title_inactive_fg_color = \"#bdc3c7\"\n\n[keybindings]\n\n[profiles]\n  [[default]]\n    use_theme_colors = False\n    use_system_font = False\n    font = Noto Sans Mono 11\n\n    background_type = solid\n    background_color = \"#232629\"\n    foreground_color = \"#fcfcfc\"\n    cursor_color = \"#fcfcfc\"\n\n    palette = \"#232629:#ed1515:#11d116:#f67400:#1d99f3:#9b59b6:#1abc9c:#fcfcfc:#7f8c8d:#ff5555:#50fa7b:#fdbc4b:#3daee9:#ff79c6:#8be9fd:#ffffff\"\n\n    scrollback_infinite = True\n\n[layouts]\n  [[default]]\n    [[[window0]]]\n      type = Window\n      parent = \"\"\n      size = 920, 660\n    [[[child1]]]\n      type = Terminal\n      parent = window0\n\n[plugins]\n",[53,1837,1838,1843,1854,1864,1874,1883,1892,1902,1906,1911,1915,1921,1927,1938,1948,1968,1973,1984,1994,2004,2014,2019,2030,2035,2046,2051,2057,2062,2068,2079,2090,2104,2110,2120,2130,2135],{"__ignoreMap":19},[71,1839,1840],{"class":73,"line":74},[71,1841,1842],{"class":854},"[global_config]\n",[71,1844,1845,1848,1851],{"class":73,"line":89},[71,1846,1847],{"class":123},"  title_transmit_bg_color",[71,1849,1850],{"class":81}," =",[71,1852,1853],{"class":81}," \"#31363b\"\n",[71,1855,1856,1859,1861],{"class":73,"line":864},[71,1857,1858],{"class":123},"  title_transmit_fg_color",[71,1860,1850],{"class":81},[71,1862,1863],{"class":81}," \"#fcfcfc\"\n",[71,1865,1866,1869,1871],{"class":73,"line":876},[71,1867,1868],{"class":123},"  title_receive_bg_color",[71,1870,1850],{"class":81},[71,1872,1873],{"class":81}," \"#232629\"\n",[71,1875,1876,1879,1881],{"class":73,"line":882},[71,1877,1878],{"class":123},"  title_receive_fg_color",[71,1880,1850],{"class":81},[71,1882,1863],{"class":81},[71,1884,1885,1888,1890],{"class":73,"line":900},[71,1886,1887],{"class":123},"  title_inactive_bg_color",[71,1889,1850],{"class":81},[71,1891,1873],{"class":81},[71,1893,1894,1897,1899],{"class":73,"line":911},[71,1895,1896],{"class":123},"  title_inactive_fg_color",[71,1898,1850],{"class":81},[71,1900,1901],{"class":81}," \"#bdc3c7\"\n",[71,1903,1904],{"class":73,"line":917},[71,1905,861],{"emptyLinePlaceholder":860},[71,1907,1908],{"class":73,"line":922},[71,1909,1910],{"class":854},"[keybindings]\n",[71,1912,1913],{"class":73,"line":940},[71,1914,861],{"emptyLinePlaceholder":860},[71,1916,1918],{"class":73,"line":1917},11,[71,1919,1920],{"class":854},"[profiles]\n",[71,1922,1924],{"class":73,"line":1923},12,[71,1925,1926],{"class":854},"  [[default]]\n",[71,1928,1930,1933,1935],{"class":73,"line":1929},13,[71,1931,1932],{"class":123},"    use_theme_colors",[71,1934,1850],{"class":81},[71,1936,1937],{"class":81}," False\n",[71,1939,1941,1944,1946],{"class":73,"line":1940},14,[71,1942,1943],{"class":123},"    use_system_font",[71,1945,1850],{"class":81},[71,1947,1937],{"class":81},[71,1949,1951,1954,1956,1959,1962,1965],{"class":73,"line":1950},15,[71,1952,1953],{"class":123},"    font",[71,1955,1850],{"class":81},[71,1957,1958],{"class":81}," Noto",[71,1960,1961],{"class":81}," Sans",[71,1963,1964],{"class":81}," Mono",[71,1966,1967],{"class":77}," 11\n",[71,1969,1971],{"class":73,"line":1970},16,[71,1972,861],{"emptyLinePlaceholder":860},[71,1974,1976,1979,1981],{"class":73,"line":1975},17,[71,1977,1978],{"class":123},"    background_type",[71,1980,1850],{"class":81},[71,1982,1983],{"class":81}," solid\n",[71,1985,1987,1990,1992],{"class":73,"line":1986},18,[71,1988,1989],{"class":123},"    background_color",[71,1991,1850],{"class":81},[71,1993,1873],{"class":81},[71,1995,1997,2000,2002],{"class":73,"line":1996},19,[71,1998,1999],{"class":123},"    foreground_color",[71,2001,1850],{"class":81},[71,2003,1863],{"class":81},[71,2005,2007,2010,2012],{"class":73,"line":2006},20,[71,2008,2009],{"class":123},"    cursor_color",[71,2011,1850],{"class":81},[71,2013,1863],{"class":81},[71,2015,2017],{"class":73,"line":2016},21,[71,2018,861],{"emptyLinePlaceholder":860},[71,2020,2022,2025,2027],{"class":73,"line":2021},22,[71,2023,2024],{"class":123},"    palette",[71,2026,1850],{"class":81},[71,2028,2029],{"class":81}," \"#232629:#ed1515:#11d116:#f67400:#1d99f3:#9b59b6:#1abc9c:#fcfcfc:#7f8c8d:#ff5555:#50fa7b:#fdbc4b:#3daee9:#ff79c6:#8be9fd:#ffffff\"\n",[71,2031,2033],{"class":73,"line":2032},23,[71,2034,861],{"emptyLinePlaceholder":860},[71,2036,2038,2041,2043],{"class":73,"line":2037},24,[71,2039,2040],{"class":123},"    scrollback_infinite",[71,2042,1850],{"class":81},[71,2044,2045],{"class":81}," True\n",[71,2047,2049],{"class":73,"line":2048},25,[71,2050,861],{"emptyLinePlaceholder":860},[71,2052,2054],{"class":73,"line":2053},26,[71,2055,2056],{"class":854},"[layouts]\n",[71,2058,2060],{"class":73,"line":2059},27,[71,2061,1926],{"class":854},[71,2063,2065],{"class":73,"line":2064},28,[71,2066,2067],{"class":854},"    [[[window0]]]\n",[71,2069,2071,2074,2076],{"class":73,"line":2070},29,[71,2072,2073],{"class":77},"      type",[71,2075,1850],{"class":81},[71,2077,2078],{"class":81}," Window\n",[71,2080,2082,2085,2087],{"class":73,"line":2081},30,[71,2083,2084],{"class":123},"      parent",[71,2086,1850],{"class":81},[71,2088,2089],{"class":81}," \"\"\n",[71,2091,2093,2096,2098,2101],{"class":73,"line":2092},31,[71,2094,2095],{"class":123},"      size",[71,2097,1850],{"class":81},[71,2099,2100],{"class":81}," 920,",[71,2102,2103],{"class":77}," 660\n",[71,2105,2107],{"class":73,"line":2106},32,[71,2108,2109],{"class":854},"    [[[child1]]]\n",[71,2111,2113,2115,2117],{"class":73,"line":2112},33,[71,2114,2073],{"class":77},[71,2116,1850],{"class":81},[71,2118,2119],{"class":81}," Terminal\n",[71,2121,2123,2125,2127],{"class":73,"line":2122},34,[71,2124,2084],{"class":123},[71,2126,1850],{"class":81},[71,2128,2129],{"class":81}," window0\n",[71,2131,2133],{"class":73,"line":2132},35,[71,2134,861],{"emptyLinePlaceholder":860},[71,2136,2138],{"class":73,"line":2137},36,[71,2139,2140],{"class":854},"[plugins]\n",[14,2142,2143,2144,2146,2147,2149],{},"最后,按下",[53,2145,1517],{},",输入",[53,2148,1521],{},"保存并退出.",[14,2151,2152],{},"然后完全关闭 Terminator，再重新打开。\n这个配置会做几件事：",[1388,2154,2155,2158,2161,2164,2167],{},[1391,2156,2157],{},"背景：接近 Konsole Breeze 的深灰，不是死黑",[1391,2159,2160],{},"字体：接近纯白，比以前亮很多",[1391,2162,2163],{},"蓝色：换成更亮的 KDE 蓝",[1391,2165,2166],{},"绿色\u002F黄色\u002F青色：也整体提亮",[1391,2168,2169],{},"顶部红色标题条：改成灰色，不再那么刺眼",[14,2171,2172],{},[17,2173],{"alt":19,"src":2174},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage215.webp",[14,2176,2177,2178],{},"咱们的Git入门教程：",[1373,2179,2182],{"href":2180,"rel":2181},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fdocx\u002FB7arde6u0ob5tsxk5QOcFLG7nYd",[1377],"Vinci机器人队Git入门教程",[10,2184,2186],{"id":2185},"ros2体系框架","ROS2体系框架",[14,2188,2189],{},[17,2190],{"alt":19,"src":2191},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage216.webp",[14,2193,2194],{},[17,2195],{"alt":19,"src":2196},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage217.webp",[14,2198,2199],{},[17,2200],{"alt":19,"src":2201},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage218.webp",[14,2203,2204],{},[17,2205],{"alt":19,"src":2206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage219.webp",[14,2208,2209],{},"Client Library就是ROS2的客户端，比如rclcpp，rclpy。",[14,2211,2212],{},"Abstract DDS Layer是DDS抽象层，这样DDS可以实现可插拔，可以随便替换DDS模块。",[14,2214,2215],{},"Intra-process API是进程内通讯API，可以提高通信效率的一类API。",[14,2217,2218],{},[17,2219],{"alt":19,"src":2220},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage220.webp",[14,2222,2223],{},[17,2224],{"alt":19,"src":2225},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage221.webp",[2227,2228,2229],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":19,"searchDepth":89,"depth":89,"links":2231},[2232,2233,2234,2235,2236,2237,2238,2239,2240,2241,2242],{"id":12,"depth":864,"text":12},{"id":43,"depth":864,"text":43},{"id":212,"depth":864,"text":212},{"id":432,"depth":864,"text":433},{"id":685,"depth":864,"text":686},{"id":961,"depth":864,"text":962},{"id":991,"depth":864,"text":992},{"id":1315,"depth":864,"text":1316},{"id":1363,"depth":864,"text":1364},{"id":1620,"depth":864,"text":1620},{"id":2185,"depth":864,"text":2186},"2",2000000,"2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch2-ru-men-cao-zuo",{"title":5,"description":19},"wiki\u002F2023-12-30-ros2-tutorial\u002Fch2-入门操作","OcV7dBuKW8B1nYycFYLfhJCFwCk5OmI9OaX-I7lTXsU",[2257,2263,2269,2275,2281,2287,2293,2299,2305,2311,2317,2323,2329,2335,2341,2347,2348,2354,2360,2366,2372,2378,2384,2390,2396],{"path":2258,"stem":2259,"title":2260,"date":2245,"chapter":2261,"chapterSort":2262,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ROS2介绍","ROS2介绍","1",1000000,{"path":2264,"stem":2265,"title":2266,"date":2245,"chapter":2267,"chapterSort":2268,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch10-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch10-Stage_Ros2仿真平台","Stage_Ros2仿真平台","10",10000000,{"path":2270,"stem":2271,"title":2272,"date":2245,"chapter":2273,"chapterSort":2274,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":2276,"stem":2277,"title":2278,"date":2245,"chapter":2279,"chapterSort":2280,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-2-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":2282,"stem":2283,"title":2284,"date":2245,"chapter":2285,"chapterSort":2286,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-3-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":2288,"stem":2289,"title":2290,"date":2245,"chapter":2291,"chapterSort":2292,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-4-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-4-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim","11.4",11040000,{"path":2294,"stem":2295,"title":2296,"date":2245,"chapter":2297,"chapterSort":2298,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-Gezebo仿真平台","Gezebo仿真平台","11",11000000,{"path":2300,"stem":2301,"title":2302,"date":2245,"chapter":2303,"chapterSort":2304,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch12-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)","12",12000000,{"path":2306,"stem":2307,"title":2308,"date":2245,"chapter":2309,"chapterSort":2310,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ros2serial","wiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ROS2Serial","ROS2 Serial","13",13000000,{"path":2312,"stem":2313,"title":2314,"date":2245,"chapter":2315,"chapterSort":2316,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch14-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch14-机器人硬件","机器人硬件","14",14000000,{"path":2318,"stem":2319,"title":2320,"date":2245,"chapter":2321,"chapterSort":2322,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ROS2_Control","ROS2_Control","15",15000000,{"path":2324,"stem":2325,"title":2326,"date":2245,"chapter":2327,"chapterSort":2328,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002Fch16-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂","16",16000000,{"path":2330,"stem":2331,"title":2332,"date":2245,"chapter":2333,"chapterSort":2334,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch17-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)","17",17000000,{"path":2336,"stem":2337,"title":2338,"date":2245,"chapter":2339,"chapterSort":2340,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch18-microros","wiki\u002F2023-12-30-ros2-tutorial\u002Fch18-MicroROS","MicroROS","18",18000000,{"path":2342,"stem":2343,"title":2344,"date":2245,"chapter":2345,"chapterSort":2346,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch19-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch19-Webots仿真平台","Webots仿真平台","19",19000000,{"path":2252,"stem":2254,"title":5,"date":2245,"chapter":2243,"chapterSort":2244,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},{"path":2349,"stem":2350,"title":2351,"date":2245,"chapter":2352,"chapterSort":2353,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch20-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002Fch20-OpenCV","OpenCV","20",20000000,{"path":2355,"stem":2356,"title":2357,"date":2245,"chapter":2358,"chapterSort":2359,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch3-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002Fch3-工作空间与功能包","工作空间与功能包","3",3000000,{"path":2361,"stem":2362,"title":2363,"date":2245,"chapter":2364,"chapterSort":2365,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch4-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002Fch4-四大通信","四大通信","4",4000000,{"path":2367,"stem":2368,"title":2369,"date":2245,"chapter":2370,"chapterSort":2371,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch5-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002Fch5-ROS2其他通信机制","ROS2其他通信机制","5",5000000,{"path":2373,"stem":2374,"title":2375,"date":2245,"chapter":2376,"chapterSort":2377,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch6-launch","wiki\u002F2023-12-30-ros2-tutorial\u002Fch6-Launch","Launch","6",6000000,{"path":2379,"stem":2380,"title":2381,"date":2245,"chapter":2382,"chapterSort":2383,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch7-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002Fch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":2385,"stem":2386,"title":2387,"date":2245,"chapter":2388,"chapterSort":2389,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch8-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002Fch8-坐标变换TF","坐标变换TF","8",8000000,{"path":2391,"stem":2392,"title":2393,"date":2245,"chapter":2394,"chapterSort":2395,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":2250},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","wiki\u002F2023-12-30-ros2-tutorial\u002Fch9-可视化平台RVIZ2与URDF建模语言","可视化平台RVIZ2与URDF建模语言","9",9000000,{"path":2247,"stem":2397,"title":2398,"date":2245,"chapter":2399,"chapterSort":2400,"docKey":2246,"docRoot":2247,"docTitle":2248,"isWikiDoc":860,"isWikiIndex":860},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",null,0,1778666544438]