[{"data":1,"prerenderedAt":1686},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch3-gong-zuo-kong-jian-yu-gong-neng-bao":3,"wiki-doc-items-2023-12-30-ros2-tutorial":1543},{"id":4,"title":5,"body":6,"chapter":1530,"chapterSort":1531,"date":1532,"description":19,"docKey":1533,"docRoot":1534,"docTitle":1535,"extension":1536,"isWikiDoc":210,"isWikiIndex":1537,"meta":1538,"navigation":210,"path":1539,"seo":1540,"stem":1541,"wikiDepth":86,"__hash__":1542},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch3-工作空间与功能包.md","工作空间与功能包",{"type":7,"value":8,"toc":1519},"minimark",[9,13,21,24,27,30,33,36,39,42,47,52,55,60,65,70,73,147,149,154,157,162,167,170,175,180,185,190,428,433,438,441,444,449,454,456,461,466,469,472,477,480,482,487,492,495,500,510,513,516,519,662,667,670,673,678,681,686,689,694,699,704,707,710,713,716,719,724,729,734,739,744,749,754,759,764,767,770,775,780,783,788,793,798,801,806,825,833,852,857,874,879,901,906,911,932,937,940,945,950,953,958,963,966,971,976,979,984,989,994,999,1004,1007,1012,1017,1020,1023,1028,1033,1038,1043,1046,1051,1054,1059,1064,1069,1077,1082,1085,1090,1095,1098,1103,1106,1109,1114,1119,1124,1129,1132,1137,1142,1147,1152,1157,1162,1167,1172,1175,1179,1182,1188,1191,1197,1200,1206,1209,1215,1220,1225,1230,1235,1240,1245,1250,1255,1260,1265,1269,1272,1275,1281,1286,1288,1296,1299,1302,1308,1313,1315,1321,1324,1327,1333,1341,1346,1348,1354,1357,1363,1368,1370,1376,1379,1382,1388,1393,1395,1401,1404,1407,1413,1418,1420,1426,1429,1432,1438,1443,1445,1451,1454,1457,1463,1468,1470,1476,1479,1482,1488,1493,1495,1501,1504,1510,1515],[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\u002Fimage222.webp",[14,22,23],{},"工作空间里有4个子空间",[14,25,26],{},"未来编写的代码和脚本都需要人为的放入src空间里，",[14,28,29],{},"编译所形成的中间文件会存放到build空间里，",[14,31,32],{},"可执行文件会存放到install空间里，",[14,34,35],{},"编译过程以及运行之后各种警告，错误信息等会存放到log空间里。",[37,38],"hr",{},[14,40,41],{},"用pip工具可以很方便的安装各种python的包",[14,43,44],{},[17,45],{"alt":19,"src":46},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage223.webp",[14,48,49],{},[17,50],{"alt":19,"src":51},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage224.webp",[14,53,54],{},"国内开发者@鱼香ROS 开发的一个专门处理ROS2依赖的工具",[14,56,57],{},[17,58],{"alt":19,"src":59},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage225.webp",[14,61,62],{},[17,63],{"alt":19,"src":64},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage226.webp",[14,66,67],{},[17,68],{"alt":19,"src":69},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage227.webp",[14,71,72],{},"实际上就是扫描了各个功能包里的package.xml里的depend，然后查找本机是否含有该依赖，再决定是否安装。",[74,75,79],"pre",{"className":76,"code":77,"language":78,"meta":19,"style":19},"language-bash shiki shiki-themes github-light github-dark","sudo rosdepc init\nrosdepc update\ncd ..\nrosdepc install -i --from-path src --rosdistro humble -y  #在src文件里看功能包所需依赖并查找安装\n","bash",[80,81,82,98,107,117],"code",{"__ignoreMap":19},[83,84,87,91,95],"span",{"class":85,"line":86},"line",1,[83,88,90],{"class":89},"sScJk","sudo",[83,92,94],{"class":93},"sZZnC"," rosdepc",[83,96,97],{"class":93}," init\n",[83,99,101,104],{"class":85,"line":100},2,[83,102,103],{"class":89},"rosdepc",[83,105,106],{"class":93}," update\n",[83,108,110,114],{"class":85,"line":109},3,[83,111,113],{"class":112},"sj4cs","cd",[83,115,116],{"class":93}," ..\n",[83,118,120,122,125,128,131,134,137,140,143],{"class":85,"line":119},4,[83,121,103],{"class":89},[83,123,124],{"class":93}," install",[83,126,127],{"class":112}," -i",[83,129,130],{"class":112}," --from-path",[83,132,133],{"class":93}," src",[83,135,136],{"class":112}," --rosdistro",[83,138,139],{"class":93}," humble",[83,141,142],{"class":112}," -y",[83,144,146],{"class":145},"sJ8bj","  #在src文件里看功能包所需依赖并查找安装\n",[37,148],{},[14,150,151],{},[17,152],{"alt":19,"src":153},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage228.webp",[14,155,156],{},"后面还需要创建好几个目录，这些目录大多都是和接口文件相关的。",[14,158,159],{},[17,160],{"alt":19,"src":161},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage229.webp",[14,163,164],{},[17,165],{"alt":19,"src":166},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage230.webp",[10,168,169],{"id":169},"源文件编译",[14,171,172],{},[17,173],{"alt":19,"src":174},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage231.webp",[14,176,177],{},[17,178],{"alt":19,"src":179},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage232.webp",[14,181,182],{},[17,183],{"alt":19,"src":184},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage233.webp",[14,186,187],{},[17,188],{"alt":19,"src":189},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage234.webp",[74,191,195],{"className":192,"code":193,"language":194,"meta":19,"style":19},"language-cpp shiki shiki-themes github-light github-dark","#include \"rclcpp\u002Frclcpp.hpp\"\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"node_name\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"hello world!\");\n    }\n};\n\nint main(int argc,char *argv[])\n{\n  rclcpp::init(argc,argv);\n  auto node = std::make_shared\u003CMyNode>();\n  rclcpp::shutdown();\n  return 0;\n}\n","cpp",[80,196,197,206,212,236,241,247,268,274,300,306,312,317,349,354,368,397,410,422],{"__ignoreMap":19},[83,198,199,203],{"class":85,"line":86},[83,200,202],{"class":201},"szBVR","#include",[83,204,205],{"class":93}," \"rclcpp\u002Frclcpp.hpp\"\n",[83,207,208],{"class":85,"line":100},[83,209,211],{"emptyLinePlaceholder":210},true,"\n",[83,213,214,217,220,224,227,230,233],{"class":85,"line":109},[83,215,216],{"class":201},"class",[83,218,219],{"class":89}," MyNode",[83,221,223],{"class":222},"sVt8B",": ",[83,225,226],{"class":201},"public",[83,228,229],{"class":89}," rclcpp",[83,231,232],{"class":222},"::",[83,234,235],{"class":89},"Node\n",[83,237,238],{"class":85,"line":119},[83,239,240],{"class":222},"{\n",[83,242,244],{"class":85,"line":243},5,[83,245,246],{"class":201},"  public:\n",[83,248,250,253,256,259,262,265],{"class":85,"line":249},6,[83,251,252],{"class":89},"    MyNode",[83,254,255],{"class":222},"():",[83,257,258],{"class":89},"Node",[83,260,261],{"class":222},"(",[83,263,264],{"class":93},"\"node_name\"",[83,266,267],{"class":222},")\n",[83,269,271],{"class":85,"line":270},7,[83,272,273],{"class":222},"    {\n",[83,275,277,280,282,285,288,291,294,297],{"class":85,"line":276},8,[83,278,279],{"class":89},"      RCLCPP_INFO",[83,281,261],{"class":222},[83,283,284],{"class":112},"this",[83,286,287],{"class":222},"->",[83,289,290],{"class":89},"get_logger",[83,292,293],{"class":222},"(),",[83,295,296],{"class":93},"\"hello world!\"",[83,298,299],{"class":222},");\n",[83,301,303],{"class":85,"line":302},9,[83,304,305],{"class":222},"    }\n",[83,307,309],{"class":85,"line":308},10,[83,310,311],{"class":222},"};\n",[83,313,315],{"class":85,"line":314},11,[83,316,211],{"emptyLinePlaceholder":210},[83,318,320,323,326,328,330,334,337,340,343,346],{"class":85,"line":319},12,[83,321,322],{"class":201},"int",[83,324,325],{"class":89}," main",[83,327,261],{"class":222},[83,329,322],{"class":201},[83,331,333],{"class":332},"s4XuR"," argc",[83,335,336],{"class":222},",",[83,338,339],{"class":201},"char",[83,341,342],{"class":201}," *",[83,344,345],{"class":332},"argv",[83,347,348],{"class":222},"[])\n",[83,350,352],{"class":85,"line":351},13,[83,353,240],{"class":222},[83,355,357,360,362,365],{"class":85,"line":356},14,[83,358,359],{"class":89},"  rclcpp",[83,361,232],{"class":222},[83,363,364],{"class":89},"init",[83,366,367],{"class":222},"(argc,argv);\n",[83,369,371,374,377,380,383,385,388,391,394],{"class":85,"line":370},15,[83,372,373],{"class":201},"  auto",[83,375,376],{"class":222}," node ",[83,378,379],{"class":201},"=",[83,381,382],{"class":89}," std",[83,384,232],{"class":222},[83,386,387],{"class":89},"make_shared",[83,389,390],{"class":222},"\u003C",[83,392,393],{"class":89},"MyNode",[83,395,396],{"class":222},">();\n",[83,398,400,402,404,407],{"class":85,"line":399},16,[83,401,359],{"class":89},[83,403,232],{"class":222},[83,405,406],{"class":89},"shutdown",[83,408,409],{"class":222},"();\n",[83,411,413,416,419],{"class":85,"line":412},17,[83,414,415],{"class":201},"  return",[83,417,418],{"class":112}," 0",[83,420,421],{"class":222},";\n",[83,423,425],{"class":85,"line":424},18,[83,426,427],{"class":222},"}\n",[14,429,430],{},[17,431],{"alt":19,"src":432},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage235.webp",[14,434,435],{},[17,436],{"alt":19,"src":437},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage236.webp",[14,439,440],{},"实例化只能一个进程组织一个节点，",[14,442,443],{},"而继承可以组织多个节点。",[14,445,446],{},[17,447],{"alt":19,"src":448},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage237.webp",[14,450,451],{},[17,452],{"alt":19,"src":453},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage238.webp",[37,455],{},[14,457,458],{},[17,459],{"alt":19,"src":460},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage239.webp",[14,462,463],{},[17,464],{"alt":19,"src":465},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage240.webp",[14,467,468],{},"初始化和资源释放的作用是什么？",[14,470,471],{},"可以往context对象里放数据，也可以取数据，类似于FreeRTOS里的消息队列，但也不完全类似，它可以存储之前的数据。",[14,473,474],{},[17,475],{"alt":19,"src":476},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage241.webp",[14,478,479],{},"初始化不是仅仅只创建context对象，这是它的其中一个功能，它还有其他比较重要的功能。",[37,481],{},[14,483,484],{},[17,485],{"alt":19,"src":486},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage242.webp",[14,488,489],{},[17,490],{"alt":19,"src":491},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage243.webp",[14,493,494],{},"先初始化父类构造，并传入一个节点名称。",[14,496,497],{},[17,498],{"alt":19,"src":499},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage244.webp",[14,501,502,503],{},"智能指针忘记的可以看",[504,505,509],"a",{"href":506,"rel":507},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fdocx\u002FN0GAdx6IDoqnRnx1q0TcX1Wfnvc",[508],"nofollow","Vinci机器人队C\u002FC++资料",[14,511,512],{},"智能指针是一种自动管理内存的指针，它会在不需要对象时自动释放内存。使用智能指针可以避免内存泄漏和空悬指针等问题。",[14,514,515],{},"最安全的分配和使用动态内存的方法是调用一个名为 make_shared 的标准库函数。 此函数在动态内存中分配一个对象并初始化它，返回指向此对象的 shared_ptr。与智能指针一样，make_shared 也定义在头文件 memory 中。",[14,517,518],{},"当要用 make_shared 时，必须指定想要创建的对象的类型。定义方式与模板类相同， 在函数名之后跟一个尖括号，在其中给出类型：",[74,520,522],{"className":192,"code":521,"language":194,"meta":19,"style":19},"\u002F\u002F 指向一个值为42的int的shared_ptr\nshared_ptr\u003Cint> p3 = make_shared\u003Cint>(42);\n\n\u002F\u002F p4 指向一个值为\"9999999999\"的string\nshared_ptr\u003Cstring> p4 = make_shared\u003Cstring>(10,'9');\n\n\u002F\u002F p5指向一个未初始化的int\nshared_ptr\u003Cint> p5 = make_shared\u003Cint>();\n\u002F\u002F当然，我们通常用 auto 定义一个对象来保存 make_shared 的结果，这种方式较为简单：\n\n\u002F\u002F p6指向一个动态分配的空vector\u003Cstring>\nauto p6 = make_shared\u003Cvector>();\n",[80,523,524,529,557,561,566,601,605,610,629,634,638,643],{"__ignoreMap":19},[83,525,526],{"class":85,"line":86},[83,527,528],{"class":145},"\u002F\u002F 指向一个值为42的int的shared_ptr\n",[83,530,531,534,537,540,542,545,547,549,552,555],{"class":85,"line":100},[83,532,533],{"class":222},"shared_ptr",[83,535,536],{"class":201},"\u003Cint>",[83,538,539],{"class":222}," p3 ",[83,541,379],{"class":201},[83,543,544],{"class":89}," make_shared",[83,546,390],{"class":222},[83,548,322],{"class":201},[83,550,551],{"class":222},">(",[83,553,554],{"class":112},"42",[83,556,299],{"class":222},[83,558,559],{"class":85,"line":109},[83,560,211],{"emptyLinePlaceholder":210},[83,562,563],{"class":85,"line":119},[83,564,565],{"class":145},"\u002F\u002F p4 指向一个值为\"9999999999\"的string\n",[83,567,568,570,572,575,578,581,583,585,587,589,591,594,596,599],{"class":85,"line":243},[83,569,533],{"class":222},[83,571,390],{"class":201},[83,573,574],{"class":222},"string",[83,576,577],{"class":201},">",[83,579,580],{"class":222}," p4 ",[83,582,379],{"class":201},[83,584,544],{"class":89},[83,586,390],{"class":222},[83,588,574],{"class":89},[83,590,551],{"class":222},[83,592,593],{"class":112},"10",[83,595,336],{"class":222},[83,597,598],{"class":93},"'9'",[83,600,299],{"class":222},[83,602,603],{"class":85,"line":249},[83,604,211],{"emptyLinePlaceholder":210},[83,606,607],{"class":85,"line":270},[83,608,609],{"class":145},"\u002F\u002F p5指向一个未初始化的int\n",[83,611,612,614,616,619,621,623,625,627],{"class":85,"line":276},[83,613,533],{"class":222},[83,615,536],{"class":201},[83,617,618],{"class":222}," p5 ",[83,620,379],{"class":201},[83,622,544],{"class":89},[83,624,390],{"class":222},[83,626,322],{"class":201},[83,628,396],{"class":222},[83,630,631],{"class":85,"line":302},[83,632,633],{"class":145},"\u002F\u002F当然，我们通常用 auto 定义一个对象来保存 make_shared 的结果，这种方式较为简单：\n",[83,635,636],{"class":85,"line":308},[83,637,211],{"emptyLinePlaceholder":210},[83,639,640],{"class":85,"line":314},[83,641,642],{"class":145},"\u002F\u002F p6指向一个动态分配的空vector\u003Cstring>\n",[83,644,645,648,651,653,655,657,660],{"class":85,"line":319},[83,646,647],{"class":201},"auto",[83,649,650],{"class":222}," p6 ",[83,652,379],{"class":201},[83,654,544],{"class":89},[83,656,390],{"class":222},[83,658,659],{"class":89},"vector",[83,661,396],{"class":222},[14,663,664],{},[17,665],{"alt":19,"src":666},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage245.webp",[14,668,669],{},"用make_shared可以分配堆区内存。",[10,671,672],{"id":672},"配置文件",[14,674,675],{},[17,676],{"alt":19,"src":677},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage246.webp",[14,679,680],{},"C++",[14,682,683],{},[17,684],{"alt":19,"src":685},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage247.webp",[14,687,688],{},"Python",[14,690,691],{},[17,692],{"alt":19,"src":693},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage248.webp",[14,695,696],{},[17,697],{"alt":19,"src":698},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage249.webp",[14,700,701],{},[17,702],{"alt":19,"src":703},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage250.webp",[14,705,706],{},"name是功能包名称",[14,708,709],{},"version是包的版本",[14,711,712],{},"description是描述包的信息，也就是包是干嘛的",[14,714,715],{},"email是维护者的邮箱地址",[14,717,718],{},"license是我们的功能包使用的软件协议",[14,720,721],{},[17,722],{"alt":19,"src":723},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage251.webp",[14,725,726],{},[17,727],{"alt":19,"src":728},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage252.webp",[14,730,731],{},[17,732],{"alt":19,"src":733},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage253.webp",[14,735,736],{},[17,737],{"alt":19,"src":738},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage254.webp",[14,740,741],{},[17,742],{"alt":19,"src":743},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage255.webp",[14,745,746],{},[17,747],{"alt":19,"src":748},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage256.webp",[14,750,751],{},[17,752],{"alt":19,"src":753},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage257.webp",[14,755,756],{},[17,757],{"alt":19,"src":758},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage258.webp",[14,760,761],{},[17,762],{"alt":19,"src":763},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage259.webp",[14,765,766],{},"不建议直接重命名功能包的名字，当修改了文件夹名称，则里面很多文件里的配置内容也需要被修改。建议重新建。",[10,768,769],{"id":769},"常用操作命令",[14,771,772],{},[17,773],{"alt":19,"src":774},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage260.webp",[14,776,777],{},[17,778],{"alt":19,"src":779},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage261.webp",[14,781,782],{},"ament_cmake是cmake的增强版",[14,784,785],{},[17,786],{"alt":19,"src":787},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage262.webp",[14,789,790],{},[17,791],{"alt":19,"src":792},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage263.webp",[14,794,795],{},[17,796],{"alt":19,"src":797},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage264.webp",[14,799,800],{},"-h 是查看帮助信息",[14,802,803],{},[17,804],{"alt":19,"src":805},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage265.webp",[74,807,809],{"className":76,"code":808,"language":78,"meta":19,"style":19},"ros2 pkg executables #输出当前系统可执行的功能包和节点\n",[80,810,811],{"__ignoreMap":19},[83,812,813,816,819,822],{"class":85,"line":86},[83,814,815],{"class":89},"ros2",[83,817,818],{"class":93}," pkg",[83,820,821],{"class":93}," executables",[83,823,824],{"class":145}," #输出当前系统可执行的功能包和节点\n",[14,826,827,830],{},[17,828],{"alt":19,"src":829},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage266.webp",[17,831],{"alt":19,"src":832},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage267.webp",[74,834,836],{"className":76,"code":835,"language":78,"meta":19,"style":19},"ros2 pkg executables 功能包名         #是输出当前包下可执行的功能包和节点\n",[80,837,838],{"__ignoreMap":19},[83,839,840,842,844,846,849],{"class":85,"line":86},[83,841,815],{"class":89},[83,843,818],{"class":93},[83,845,821],{"class":93},[83,847,848],{"class":93}," 功能包名",[83,850,851],{"class":145},"         #是输出当前包下可执行的功能包和节点\n",[14,853,854],{},[17,855],{"alt":19,"src":856},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage268.webp",[74,858,860],{"className":76,"code":859,"language":78,"meta":19,"style":19},"ros2 pkg list #是输出当前系统可执行的功能包\n",[80,861,862],{"__ignoreMap":19},[83,863,864,866,868,871],{"class":85,"line":86},[83,865,815],{"class":89},[83,867,818],{"class":93},[83,869,870],{"class":93}," list",[83,872,873],{"class":145}," #是输出当前系统可执行的功能包\n",[14,875,876],{},[17,877],{"alt":19,"src":878},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage269.webp",[74,880,882],{"className":76,"code":881,"language":78,"meta":19,"style":19},"ros2 pkg prefix + 功能包名   #是输出该功能包的路径(重要，后面经常要用)\n",[80,883,884],{"__ignoreMap":19},[83,885,886,888,890,893,896,898],{"class":85,"line":86},[83,887,815],{"class":89},[83,889,818],{"class":93},[83,891,892],{"class":93}," prefix",[83,894,895],{"class":93}," +",[83,897,848],{"class":93},[83,899,900],{"class":145},"   #是输出该功能包的路径(重要，后面经常要用)\n",[14,902,903],{},[17,904],{"alt":19,"src":905},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage270.webp",[14,907,908],{},[17,909],{"alt":19,"src":910},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage271.webp",[74,912,914],{"className":76,"code":913,"language":78,"meta":19,"style":19},"ros2 pkg xml + 功能包名   #是输出该功能包里的packages.xml的内容\n",[80,915,916],{"__ignoreMap":19},[83,917,918,920,922,925,927,929],{"class":85,"line":86},[83,919,815],{"class":89},[83,921,818],{"class":93},[83,923,924],{"class":93}," xml",[83,926,895],{"class":93},[83,928,848],{"class":93},[83,930,931],{"class":145},"   #是输出该功能包里的packages.xml的内容\n",[14,933,934],{},[17,935],{"alt":19,"src":936},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage272.webp",[10,938,939],{"id":939},"核心模块_通信相关",[14,941,942],{},[17,943],{"alt":19,"src":944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage273.webp",[14,946,947],{},[17,948],{"alt":19,"src":949},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage274.webp",[14,951,952],{},"通信模块被封装进了功能包",[14,954,955],{},[17,956],{"alt":19,"src":957},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage275.webp",[14,959,960],{},[17,961],{"alt":19,"src":962},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage276.webp",[14,964,965],{},"比如（例子）",[14,967,968],{},[17,969],{"alt":19,"src":970},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage277.webp",[14,972,973],{},[17,974],{"alt":19,"src":975},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage278.webp",[14,977,978],{},"会搜到巨多的内容，可以用grep进一步搜索",[14,980,981],{},[17,982],{"alt":19,"src":983},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage279.webp",[14,985,986],{},[17,987],{"alt":19,"src":988},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage280.webp",[14,990,991],{},[17,992],{"alt":19,"src":993},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage281.webp",[14,995,996],{},[17,997],{"alt":19,"src":998},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage282.webp",[14,1000,1001],{},[17,1002],{"alt":19,"src":1003},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage283.webp",[14,1005,1006],{},"下载分支用 -b",[14,1008,1009],{},[17,1010],{"alt":19,"src":1011},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage284.webp",[14,1013,1014],{},[17,1015],{"alt":19,"src":1016},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage285.webp",[14,1018,1019],{},"有个警告，因为有两个功能包都叫humble了",[14,1021,1022],{},"如果允许覆盖需要加参数 --allow-overriding",[14,1024,1025],{},[17,1026],{"alt":19,"src":1027},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage286.webp",[14,1029,1030],{},[17,1031],{"alt":19,"src":1032},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage287.webp",[14,1034,1035],{},[17,1036],{"alt":19,"src":1037},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage288.webp",[14,1039,1040],{},[17,1041],{"alt":19,"src":1042},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage289.webp",[14,1044,1045],{},"也就是helloworld那样的",[14,1047,1048],{},[17,1049],{"alt":19,"src":1050},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage290.webp",[10,1052,1053],{"id":1053},"核心模块_工具相关",[14,1055,1056],{},[17,1057],{"alt":19,"src":1058},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage291.webp",[14,1060,1061],{},[17,1062],{"alt":19,"src":1063},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage292.webp",[14,1065,1066],{},[17,1067],{"alt":19,"src":1068},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage293.webp",[14,1070,1071,1074],{},[17,1072],{"alt":19,"src":1073},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage294.webp",[17,1075],{"alt":19,"src":1076},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage295.webp",[14,1078,1079],{},[17,1080],{"alt":19,"src":1081},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage296.webp",[14,1083,1084],{},"命令行在某些地方比图形化工具比较好用，在远程登录时只能用命令行",[14,1086,1087],{},[17,1088],{"alt":19,"src":1089},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage297.webp",[14,1091,1092],{},[17,1093],{"alt":19,"src":1094},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage298.webp",[14,1096,1097],{},"Lanuch文件现在在ROS2里是一个Python文件了。",[14,1099,1100],{},[17,1101],{"alt":19,"src":1102},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage299.webp",[14,1104,1105],{},"Camera是摄像头位置，Base_Link是车体的位置，Laser是激光雷达的位置。",[14,1107,1108],{},"雷达检测的距离信息，会转化成车体的位置信息。",[14,1110,1111],{},[17,1112],{"alt":19,"src":1113},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage300.webp",[14,1115,1116],{},[17,1117],{"alt":19,"src":1118},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage301.webp",[14,1120,1121],{},[17,1122],{"alt":19,"src":1123},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage302.webp",[14,1125,1126],{},[17,1127],{"alt":19,"src":1128},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage303.webp",[10,1130,1131],{"id":1131},"功能包",[14,1133,1134],{},[17,1135],{"alt":19,"src":1136},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage304.webp",[14,1138,1139],{},[17,1140],{"alt":19,"src":1141},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage305.webp",[14,1143,1144],{},[17,1145],{"alt":19,"src":1146},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage306.webp",[14,1148,1149],{},[17,1150],{"alt":19,"src":1151},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage307.webp",[14,1153,1154],{},[17,1155],{"alt":19,"src":1156},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage308.webp",[14,1158,1159],{},[17,1160],{"alt":19,"src":1161},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage309.webp",[14,1163,1164],{},[17,1165],{"alt":19,"src":1166},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage310.webp",[14,1168,1169],{},[17,1170],{"alt":19,"src":1171},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage311.webp",[14,1173,1174],{},"python是解析型语言，不用编译，但是需要setup.py文件，setup.py主要功能是把可执行文件移动到install的。",[10,1176,1178],{"id":1177},"ros2技术支持","ROS2技术支持",[14,1180,1181],{},"ROS2_Wiki官网:",[14,1183,1184],{},[504,1185,1186],{"href":1186,"rel":1187},"http:\u002F\u002Fwiki.ros.org\u002F",[508],[14,1189,1190],{},"ROS2_Wiki中文官网(ROS2维基百科现已支持简体中文):",[14,1192,1193],{},[504,1194,1195],{"href":1195,"rel":1196},"http:\u002F\u002Fwiki.ros.org\u002Fcn",[508],[14,1198,1199],{},"ROS2简体中文社区：",[14,1201,1202],{},[504,1203,1204],{"href":1204,"rel":1205},"http:\u002F\u002Fwiki.ros.org\u002Fcn\u002Fcommunity",[508],[14,1207,1208],{},"ROS2插件索引网址:",[14,1210,1211],{},[504,1212,1213],{"href":1213,"rel":1214},"https:\u002F\u002Findex.ros.org\u002Fpackages\u002F",[508],[14,1216,1217],{},[17,1218],{"alt":19,"src":1219},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage312.webp",[14,1221,1222],{},[17,1223],{"alt":19,"src":1224},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage313.webp",[14,1226,1227],{},[17,1228],{"alt":19,"src":1229},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage314.webp",[14,1231,1232],{},[17,1233],{"alt":19,"src":1234},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage315.webp",[14,1236,1237],{},[17,1238],{"alt":19,"src":1239},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage316.webp",[14,1241,1242],{},[17,1243],{"alt":19,"src":1244},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage317.webp",[14,1246,1247],{},[17,1248],{"alt":19,"src":1249},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage318.webp",[14,1251,1252],{},[17,1253],{"alt":19,"src":1254},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage319.webp",[14,1256,1257],{},[17,1258],{"alt":19,"src":1259},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage320.webp",[14,1261,1262],{},[17,1263],{"alt":19,"src":1264},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage321.webp",[10,1266,1268],{"id":1267},"ros2应用方向","ROS2应用方向",[14,1270,1271],{},"许多ROS团队伴随ROS成长到今日，其规模已经发展到足以被认为是独立组织的程度了。在导航、机械臂、无人驾驶、无人机等诸多领域大放异彩，下面列出了其中的一些团队项目，这些项目对我们以后的进阶发展，也提供了指导。",[14,1273,1274],{},"ROS2社区：",[14,1276,1277],{},[504,1278,1279],{"href":1279,"rel":1280},"https:\u002F\u002Fwww.ros.org\u002Fblog\u002Fcommunity\u002F",[508],[14,1282,1283],{},[17,1284],{"alt":19,"src":1285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage322.webp",[37,1287],{},[1289,1290,1292],"h4",{"id":1291},"nav2",[1293,1294,1295],"strong",{},"NAV2",[14,1297,1298],{},"Nav2项目继承自ROS Navigation Stack。该项目旨在可以让移动机器人从A点安全的移动到B点。它也可以应用于涉及机器人导航的其他应用，例如跟随动态点。Nav2将用于实现路径规划、运动控制、动态避障和恢复行为等一系列功能。",[14,1300,1301],{},"NAV2官网：",[14,1303,1304],{},[504,1305,1306],{"href":1306,"rel":1307},"https:\u002F\u002Fnavigation.ros.org\u002F",[508],[14,1309,1310],{},[17,1311],{"alt":19,"src":1312},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage323.webp",[37,1314],{},[1289,1316,1318],{"id":1317},"opencv",[1293,1319,1320],{},"OpenCV",[14,1322,1323],{},"OpenCV（Open Source Computer Vision Library）是一个开源的计算机视觉和机器学习软件库。OpenCV旨在为计算机视觉应用程序提供通用基础架构，并加速机器感知在商业产品中的使用。OpenCV允许企业轻松地使用和修改代码。",[14,1325,1326],{},"OpenCV官网：",[14,1328,1329],{},[504,1330,1331],{"href":1331,"rel":1332},"https:\u002F\u002Fopencv.org\u002F",[508],[14,1334,1335,1336],{},"教程：",[504,1337,1340],{"href":1338,"rel":1339},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fdocx\u002FK7gxdJjSFoAjerxTzaNcH3ufnpb",[508],"OpenCV教程",[14,1342,1343],{},[17,1344],{"alt":19,"src":1345},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage324.webp",[37,1347],{},[1289,1349,1351],{"id":1350},"moveit",[1293,1352,1353],{},"MoveIt",[14,1355,1356],{},"MoveIt是一组ROS软件包， 主要包含运动规划、碰撞检测、运动学、3D感知、操作控制等功能。它可以用于构建机械臂的高级行为。MoveIt现在可以用于市面上的大多数机械臂，并被许多大公司使用。",[14,1358,1359],{},[504,1360,1361],{"href":1361,"rel":1362},"https:\u002F\u002Fmoveit.ros.org\u002F",[508],[14,1364,1365],{},[17,1366],{"alt":19,"src":1367},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage325.webp",[37,1369],{},[1289,1371,1373],{"id":1372},"the-autoware-foundation",[1293,1374,1375],{},"The Autoware Foundation",[14,1377,1378],{},"Autoware Foundation是ROS下属的非营利组织，支持实现自动驾驶的开源项目。Autoware基金会在企业发展和学术研究之间创造协同效应，为每个人提供自动驾驶技术。",[14,1380,1381],{},"TAF官网:",[14,1383,1384],{},[504,1385,1386],{"href":1386,"rel":1387},"https:\u002F\u002Fwww.autoware.org\u002F",[508],[14,1389,1390],{},[17,1391],{"alt":19,"src":1392},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage326.webp",[37,1394],{},[1289,1396,1398],{"id":1397},"f1-tenth",[1293,1399,1400],{},"F1 Tenth",[14,1402,1403],{},"F1 Tenth是将模型车改为无人车的竞速赛事，是一个由研究人员、工程师和自主系统爱好者组成的国际社区。它最初于 2016 年在宾夕法尼亚大学成立，但后来扩展到全球许多其他机构。",[14,1405,1406],{},"F1 Tenth官网:",[14,1408,1409],{},[504,1410,1411],{"href":1411,"rel":1412},"https:\u002F\u002Ff1tenth.org\u002F",[508],[14,1414,1415],{},[17,1416],{"alt":19,"src":1417},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage327.webp",[37,1419],{},[1289,1421,1423],{"id":1422},"microros",[1293,1424,1425],{},"microROS",[14,1427,1428],{},"在基于ROS的机器人应用中，micro-ROS正在弥合性能有限的微控制器和一般处理器之间的差距。micro-ROS在各种嵌入式硬件上运行，使ROS能直接应用于机器人硬件。",[14,1430,1431],{},"MicroROS官网:",[14,1433,1434],{},[504,1435,1436],{"href":1436,"rel":1437},"https:\u002F\u002Fmicro.ros.org\u002F",[508],[14,1439,1440],{},[17,1441],{"alt":19,"src":1442},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage328.webp",[37,1444],{},[1289,1446,1448],{"id":1447},"open-robotics",[1293,1449,1450],{},"Open Robotics",[14,1452,1453],{},"Open Robotics与全球ROS社区合作，为机器人创建开放的软件和硬件平台，包括 ROS1、ROS2、Gazebo模拟器和Ignition模拟器。Open Robotics使用这些平台解决一些重要问题，并通过为各种客户组织提供软件和硬件开发服务来帮助其他人做同样的事情。",[14,1455,1456],{},"Open Robotics官网:",[14,1458,1459],{},[504,1460,1461],{"href":1461,"rel":1462},"https:\u002F\u002Fwww.openrobotics.org\u002F",[508],[14,1464,1465],{},[17,1466],{"alt":19,"src":1467},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage329.webp",[37,1469],{},[1289,1471,1473],{"id":1472},"px4",[1293,1474,1475],{},"PX4",[14,1477,1478],{},"PX4是一款用于无人机和其他无人驾驶车辆的开源飞行控制软件。该项目为无人机开发人员提供了一套灵活的工具，用于共享技术并为无人机应用程序创建量身定制解决方案。",[14,1480,1481],{},"PX4官网:",[14,1483,1484],{},[504,1485,1486],{"href":1486,"rel":1487},"https:\u002F\u002Fpx4.io\u002F",[508],[14,1489,1490],{},[17,1491],{"alt":19,"src":1492},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage330.webp",[37,1494],{},[1289,1496,1498],{"id":1497},"ros-industrial",[1293,1499,1500],{},"ROS-Industrial",[14,1502,1503],{},"ROS-Industrial是一个开源项目，将 ROS 软件的高级功能扩展到工业相关硬件和应用程序。",[14,1505,1506],{},[504,1507,1508],{"href":1508,"rel":1509},"https:\u002F\u002Frosindustrial.org\u002F",[508],[14,1511,1512],{},[17,1513],{"alt":19,"src":1514},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage331.webp",[1516,1517,1518],"style",{},"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .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 .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":19,"searchDepth":100,"depth":100,"links":1520},[1521,1522,1523,1524,1525,1526,1527,1528,1529],{"id":12,"depth":109,"text":12},{"id":169,"depth":109,"text":169},{"id":672,"depth":109,"text":672},{"id":769,"depth":109,"text":769},{"id":939,"depth":109,"text":939},{"id":1053,"depth":109,"text":1053},{"id":1131,"depth":109,"text":1131},{"id":1177,"depth":109,"text":1178},{"id":1267,"depth":109,"text":1268},"3",3000000,"2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch3-gong-zuo-kong-jian-yu-gong-neng-bao",{"title":5,"description":19},"wiki\u002F2023-12-30-ros2-tutorial\u002Fch3-工作空间与功能包","4kkgCjQriE4s7QV3ffiyCVVS2ldG0BZyo7wxCT1ig1k",[1544,1550,1555,1561,1567,1573,1579,1585,1591,1597,1603,1609,1615,1621,1627,1633,1639,1644,1645,1651,1657,1663,1669,1675,1681],{"path":1545,"stem":1546,"title":1547,"date":1532,"chapter":1548,"chapterSort":1549,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002Fch1-ROS2介绍","ROS2介绍","1",1000000,{"path":1551,"stem":1552,"title":1553,"date":1532,"chapter":593,"chapterSort":1554,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch10-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch10-Stage_Ros2仿真平台","Stage_Ros2仿真平台",10000000,{"path":1556,"stem":1557,"title":1558,"date":1532,"chapter":1559,"chapterSort":1560,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":1562,"stem":1563,"title":1564,"date":1532,"chapter":1565,"chapterSort":1566,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1568,"stem":1569,"title":1570,"date":1532,"chapter":1571,"chapterSort":1572,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1574,"stem":1575,"title":1576,"date":1532,"chapter":1577,"chapterSort":1578,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1580,"stem":1581,"title":1582,"date":1532,"chapter":1583,"chapterSort":1584,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch11-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch11-Gezebo仿真平台","Gezebo仿真平台","11",11000000,{"path":1586,"stem":1587,"title":1588,"date":1532,"chapter":1589,"chapterSort":1590,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1592,"stem":1593,"title":1594,"date":1532,"chapter":1595,"chapterSort":1596,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ros2serial","wiki\u002F2023-12-30-ros2-tutorial\u002Fch13-ROS2Serial","ROS2 Serial","13",13000000,{"path":1598,"stem":1599,"title":1600,"date":1532,"chapter":1601,"chapterSort":1602,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch14-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002Fch14-机器人硬件","机器人硬件","14",14000000,{"path":1604,"stem":1605,"title":1606,"date":1532,"chapter":1607,"chapterSort":1608,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002Fch15-ROS2_Control","ROS2_Control","15",15000000,{"path":1610,"stem":1611,"title":1612,"date":1532,"chapter":1613,"chapterSort":1614,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1616,"stem":1617,"title":1618,"date":1532,"chapter":1619,"chapterSort":1620,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1622,"stem":1623,"title":1624,"date":1532,"chapter":1625,"chapterSort":1626,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch18-microros","wiki\u002F2023-12-30-ros2-tutorial\u002Fch18-MicroROS","MicroROS","18",18000000,{"path":1628,"stem":1629,"title":1630,"date":1532,"chapter":1631,"chapterSort":1632,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch19-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002Fch19-Webots仿真平台","Webots仿真平台","19",19000000,{"path":1634,"stem":1635,"title":1636,"date":1532,"chapter":1637,"chapterSort":1638,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch2-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002Fch2-入门操作","入门操作","2",2000000,{"path":1640,"stem":1641,"title":1320,"date":1532,"chapter":1642,"chapterSort":1643,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch20-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002Fch20-OpenCV","20",20000000,{"path":1539,"stem":1541,"title":5,"date":1532,"chapter":1530,"chapterSort":1531,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},{"path":1646,"stem":1647,"title":1648,"date":1532,"chapter":1649,"chapterSort":1650,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch4-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002Fch4-四大通信","四大通信","4",4000000,{"path":1652,"stem":1653,"title":1654,"date":1532,"chapter":1655,"chapterSort":1656,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1658,"stem":1659,"title":1660,"date":1532,"chapter":1661,"chapterSort":1662,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch6-launch","wiki\u002F2023-12-30-ros2-tutorial\u002Fch6-Launch","Launch","6",6000000,{"path":1664,"stem":1665,"title":1666,"date":1532,"chapter":1667,"chapterSort":1668,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch7-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002Fch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":1670,"stem":1671,"title":1672,"date":1532,"chapter":1673,"chapterSort":1674,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Fch8-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002Fch8-坐标变换TF","坐标变换TF","8",8000000,{"path":1676,"stem":1677,"title":1678,"date":1532,"chapter":1679,"chapterSort":1680,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":1537},"\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":1534,"stem":1682,"title":1683,"date":1532,"chapter":1684,"chapterSort":1685,"docKey":1533,"docRoot":1534,"docTitle":1535,"isWikiDoc":210,"isWikiIndex":210},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",null,0,1778666544449]