[{"data":1,"prerenderedAt":5096},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi":3,"wiki-doc-items-2023-12-30-ros2-tutorial":4677,"wiki:author-members":5084},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":4664,"chapterOrder":4665,"date":4666,"description":21,"docKey":4667,"docRoot":4668,"docTitle":4669,"extension":4670,"isWikiDoc":265,"isWikiIndex":4671,"meta":4672,"navigation":265,"path":4673,"seo":4674,"stem":4675,"wikiDepth":128,"__hash__":4676},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制.md","ROS2其他通信机制",[7],"董佳辉",{"type":9,"value":10,"toc":4654},"minimark",[11,15,23,28,31,36,39,41,46,51,56,59,64,69,74,77,83,86,91,94,97,102,105,107,112,115,144,147,150,170,173,178,181,186,191,194,199,202,215,220,223,240,243,432,435,438,441,444,447,450,453,456,461,464,467,470,475,478,483,486,489,494,499,504,509,514,519,522,524,529,534,539,542,547,552,555,560,562,567,570,573,576,581,584,589,592,595,598,603,608,613,615,618,623,626,631,634,639,642,647,652,657,660,663,668,673,676,681,690,695,698,703,706,711,716,721,724,727,732,734,739,744,772,775,780,785,807,810,813,816,821,823,828,833,863,866,871,876,881,902,907,912,915,920,923,928,933,1031,1034,1037,1040,1045,1062,1067,1072,1074,1082,1085,1088,1093,1152,1157,1173,1175,1180,1183,1188,1239,1244,1260,1262,1267,1272,1277,1279,1282,1287,1429,1434,1542,1547,1658,1663,1665,1670,1675,1680,1685,1688,1693,1940,1945,1950,1955,1960,1963,1968,1973,1978,1980,1985,1990,2010,2012,2015,2020,2025,2030,2035,2040,2057,2060,2063,2068,2073,2076,2081,2084,2089,2092,2095,2098,2101,2106,2111,2113,2118,2121,2124,2129,2134,2139,2144,2149,2154,2159,2164,2167,2274,2279,2284,2287,2490,2495,2500,2502,2507,2512,2515,2520,2523,2526,2529,2534,2539,2544,2549,2827,2832,2837,2842,2845,2850,2855,2858,2863,2868,2871,2875,2880,2883,2886,2889,2892,2897,2899,2904,2909,2914,2919,2922,2927,2932,2937,3308,3310,3315,3320,3325,3330,3333,3338,3341,3346,3349,3354,3357,3360,3363,3366,3371,3376,3381,3386,3995,3997,4002,4007,4012,4015,4018,4023,4028,4033,4035,4040,4045,4050,4053,4056,4061,4066,4071,4076,4081,4086,4089,4093,4098,4103,4105,4110,4113,4118,4123,4126,4131,4136,4141,4146,4151,4154,4156,4161,4166,4169,4174,4179,4182,4184,4189,4194,4197,4202,4207,4212,4217,4222,4225,4230,4235,4238,4243,4246,4251,4254,4259,4264,4269,4274,4276,4281,4286,4289,4292,4295,4298,4303,4306,4311,4316,4319,4324,4327,4332,4337,4339,4344,4352,4357,4360,4368,4370,4375,4380,4385,4390,4395,4398,4403,4406,4409,4414,4417,4422,4427,4430,4435,4440,4443,4448,4453,4458,4463,4468,4471,4476,4481,4486,4489,4494,4498,4503,4508,4513,4518,4523,4528,4533,4535,4540,4545,4548,4550,4555,4560,4563,4568,4571,4576,4579,4584,4587,4592,4597,4599,4604,4609,4612,4617,4620,4625,4630,4632,4637,4640,4645,4647,4650],[12,13,14],"h3",{"id":14},"概述",[16,17,18],"p",{},[19,20],"img",{"alt":21,"src":22},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage846.webp",[16,24,25],{},[19,26],{"alt":21,"src":27},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage847.webp",[29,30],"hr",{},[16,32,33],{},[19,34],{"alt":21,"src":35},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage848.webp",[16,37,38],{},"不同设备之间的通信，是通过分布式来实现的。",[29,40],{},[16,42,43],{},[19,44],{"alt":21,"src":45},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage849.webp",[16,47,48],{},[19,49],{"alt":21,"src":50},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage850.webp",[16,52,53],{},[19,54],{"alt":21,"src":55},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage851.webp",[16,57,58],{},"镜像王八",[16,60,61],{},[19,62],{"alt":21,"src":63},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage852.webp",[16,65,66],{},[19,67],{"alt":21,"src":68},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage853.webp",[16,70,71],{},[19,72],{"alt":21,"src":73},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage854.webp",[12,75,76],{"id":76},"分布式搭建",[16,78,79],{},[80,81,82],"strong",{},"场景",[16,84,85],{},"在许多机器人相关的应用场景中都涉及到多台ROS2设备协作，比如：无人车编队、无人机编队、远程控制等等，那么不同的ROS2设备之间是如何实现通信的呢？",[16,87,88],{},[80,89,90],{},"概念",[16,92,93],{},"分布式通信是指可以通过网络在不同主机之间实现数据交互的一种通信策略。",[16,95,96],{},"ROS2本身是一个分布式通信框架，可以很方便的实现不同设备之间的通信，ROS2所基于的中间件是DDS，当处于同一网络中时，通过DDS的域ID机制(ROS_DOMAIN_ID)可以实现分布式通信，大致流程是：在启动节点之前，可以设置域ID的值，不同节点如果域ID相同，那么可以自由发现并通信，反之，如果域ID值不同，则不能实现。默认情况下，所有节点启动时所使用的域ID为0，换言之，只要保证在同一网络，你不需要做任何配置，不同ROS2设备上的不同节点即可实现分布式通信。",[16,98,99],{},[80,100,101],{},"作用",[16,103,104],{},"分布式通信的应用场景是较为广泛的，如上所述：机器人编队时，机器人可能需要获取周边机器人的速度、位置、运行轨迹的相关信息，远程控制时，则可能需要控制端获取机器人采集的环境信息并下发控制指令...... 这些数据的交互都依赖于分布式通信。",[29,106],{},[16,108,109],{},[80,110,111],{},"实现",[16,113,114],{},"多机通信时，可以通过域ID对节点进行分组，组内的节点之间可以自由通信，不同组之间的节点则不可通信。如果所有节点都属于同一组，那么直接使用默认域ID即可，如果要将不同节点划分为多个组，那么可以在终端中启动节点前设置该节点的域ID(比如设置为6)，具体执行命令为：",[116,117,121],"pre",{"className":118,"code":119,"language":120,"meta":21,"style":21},"language-bash shiki shiki-themes github-light github-dark","export ROS_DOMAIN_ID=6\n","bash",[122,123,124],"code",{"__ignoreMap":21},[125,126,129,133,137,140],"span",{"class":127,"line":128},"line",1,[125,130,132],{"class":131},"szBVR","export",[125,134,136],{"class":135},"sVt8B"," ROS_DOMAIN_ID",[125,138,139],{"class":131},"=",[125,141,143],{"class":142},"sj4cs","6\n",[16,145,146],{},"上述指令执行后，该节点将被划分到ID为6的域内。",[16,148,149],{},"如果要为当前设备下的所有节点设置统一的域ID，那么可以执行如下指令：",[116,151,153],{"className":118,"code":152,"language":120,"meta":21,"style":21},"echo \"export ROS_DOMAIN_ID=6\" >> ~\u002F.bashrc\n",[122,154,155],{"__ignoreMap":21},[125,156,157,160,164,167],{"class":127,"line":128},[125,158,159],{"class":142},"echo",[125,161,163],{"class":162},"sZZnC"," \"export ROS_DOMAIN_ID=6\"",[125,165,166],{"class":131}," >>",[125,168,169],{"class":162}," ~\u002F.bashrc\n",[16,171,172],{},"执行完毕后再重新启动终端，运行的所有节点将自动被划分到ID为6的域内。",[16,174,175],{},[19,176],{"alt":21,"src":177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage855.webp",[16,179,180],{},"默认域ID是0，域ID不一样，无法互相通信。",[16,182,183],{},[19,184],{"alt":21,"src":185},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage856.webp",[16,187,188],{},[19,189],{"alt":21,"src":190},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage857.webp",[16,192,193],{},"ID不一样就无法正常通信，和在ROS1内需要指定ROS Master一样。",[16,195,196],{},[80,197,198],{},"注意",[16,200,201],{},"在设置ROS_DOMAIN_ID的值时并不是随意的，也是有一定约束的：",[203,204,205,209,212],"ol",{},[206,207,208],"li",{},"建议ROS_DOMAIN_ID的取值在[0,101] 之间，包含0和101；",[206,210,211],{},"每个域ID内的节点总数是有限制的，需要小于等于120个；",[206,213,214],{},"如果域ID为101，那么该域的节点总数需要小于等于54个。",[16,216,217],{},[80,218,219],{},"DDS 域 ID 值的计算规则",[16,221,222],{},"域ID值的相关计算规则如下：",[203,224,225,228,231,234,237],{},[206,226,227],{},"DDS是基于TCP\u002FIP或UDP\u002FIP网络通信协议的，网络通信时需要指定端口号，端口号由2个字节的无符号整数表示，其取值范围在[0,65535]之间；",[206,229,230],{},"端口号的分配也是有其规则的，并非可以任意使用的，根据DDS协议规定以7400作为起始端口，也即可用端口为[7400,65535]，又已知按照DDS协议默认情况下，每个域ID占用250个端口，那么域ID的个数为：(65535-7400)\u002F250 = 232(个)，对应的其取值范围为[0,231]；",[206,232,233],{},"操作系统还会设置一些预留端口，在DDS中使用端口时，还需要避开这些预留端口，以免使用中产生冲突，不同的操作系统预留端口又有所差异，其最终结果是，在Linux下，可用的域ID为[0,101]与[215-231]，在Windows和Mac中可用的域ID为[0,166]，综上，为了兼容多平台，建议域ID在[0,101] 范围内取值。",[206,235,236],{},"每个域ID默认占用250个端口，且每个ROS2节点需要占用两个端口，另外，按照DDS协议每个域ID的端口段内，第1、2个端口是Discovery Multicast端口与User Multicast端口，从第11、12个端口开始是域内第一个节点的Discovery Unicast端口与User Unicast，后续节点所占用端口依次顺延，那么一个域ID中的最大节点个数为：(250-10)\u002F2 = 120(个)；",[206,238,239],{},"特殊情况：域ID值为101时，其后半段端口属于操作系统的预留端口，其节点最大个数为54个。",[16,241,242],{},"上述计算规则了解即可。",[116,244,246],{"className":118,"code":245,"language":120,"meta":21,"style":21},"域 ID 与节点所占用端口示意\n\nDomain ID:      0\nParticipant ID: 0\n\nDiscovery Multicast Port: 7400\nUser Multicast Port:      7401\nDiscovery Unicast Port:   7410\nUser Unicast Port:        7411\n\n---\n\nDomain ID:      1\nParticipant ID: 2\nDiscovery Multicast Port: 7650\nUser Multicast Port:      7651\nDiscovery Unicast Port:   7664\nUser Unicast Port:        7665\n",[122,247,248,260,267,279,290,295,310,323,336,348,353,359,364,374,384,396,408,420],{"__ignoreMap":21},[125,249,250,254,257],{"class":127,"line":128},[125,251,253],{"class":252},"sScJk","域",[125,255,256],{"class":162}," ID",[125,258,259],{"class":162}," 与节点所占用端口示意\n",[125,261,263],{"class":127,"line":262},2,[125,264,266],{"emptyLinePlaceholder":265},true,"\n",[125,268,270,273,276],{"class":127,"line":269},3,[125,271,272],{"class":252},"Domain",[125,274,275],{"class":162}," ID:",[125,277,278],{"class":142},"      0\n",[125,280,282,285,287],{"class":127,"line":281},4,[125,283,284],{"class":252},"Participant",[125,286,275],{"class":162},[125,288,289],{"class":142}," 0\n",[125,291,293],{"class":127,"line":292},5,[125,294,266],{"emptyLinePlaceholder":265},[125,296,298,301,304,307],{"class":127,"line":297},6,[125,299,300],{"class":252},"Discovery",[125,302,303],{"class":162}," Multicast",[125,305,306],{"class":162}," Port:",[125,308,309],{"class":142}," 7400\n",[125,311,313,316,318,320],{"class":127,"line":312},7,[125,314,315],{"class":252},"User",[125,317,303],{"class":162},[125,319,306],{"class":162},[125,321,322],{"class":142},"      7401\n",[125,324,326,328,331,333],{"class":127,"line":325},8,[125,327,300],{"class":252},[125,329,330],{"class":162}," Unicast",[125,332,306],{"class":162},[125,334,335],{"class":142},"   7410\n",[125,337,339,341,343,345],{"class":127,"line":338},9,[125,340,315],{"class":252},[125,342,330],{"class":162},[125,344,306],{"class":162},[125,346,347],{"class":142},"        7411\n",[125,349,351],{"class":127,"line":350},10,[125,352,266],{"emptyLinePlaceholder":265},[125,354,356],{"class":127,"line":355},11,[125,357,358],{"class":252},"---\n",[125,360,362],{"class":127,"line":361},12,[125,363,266],{"emptyLinePlaceholder":265},[125,365,367,369,371],{"class":127,"line":366},13,[125,368,272],{"class":252},[125,370,275],{"class":162},[125,372,373],{"class":142},"      1\n",[125,375,377,379,381],{"class":127,"line":376},14,[125,378,284],{"class":252},[125,380,275],{"class":162},[125,382,383],{"class":142}," 2\n",[125,385,387,389,391,393],{"class":127,"line":386},15,[125,388,300],{"class":252},[125,390,303],{"class":162},[125,392,306],{"class":162},[125,394,395],{"class":142}," 7650\n",[125,397,399,401,403,405],{"class":127,"line":398},16,[125,400,315],{"class":252},[125,402,303],{"class":162},[125,404,306],{"class":162},[125,406,407],{"class":142},"      7651\n",[125,409,411,413,415,417],{"class":127,"line":410},17,[125,412,300],{"class":252},[125,414,330],{"class":162},[125,416,306],{"class":162},[125,418,419],{"class":142},"   7664\n",[125,421,423,425,427,429],{"class":127,"line":422},18,[125,424,315],{"class":252},[125,426,330],{"class":162},[125,428,306],{"class":162},[125,430,431],{"class":142},"        7665\n",[16,433,434],{},"Domain ID是指域ID",[16,436,437],{},"Participant ID是参与组ID，是指该域内的第几个节点",[16,439,440],{},"Discovery Multicast Port主发现端口，DDS规定，端口应从7400开始",[16,442,443],{},"User Multicast Port用户广播端口，",[16,445,446],{},"Discovery Unicast Port单播发现端口，7410是第一个节点开始使用的Discovery Unicast端口，因为DDS规定的，第11个端口才是第一个节点的Discovery Unicast端口。",[16,448,449],{},"User Unicast Port单播用户端口，7411才是第一个节点开始使用的User Unicast端口，因为DDS规定的，第12个端口才是第一个节点的User Unicast端口。",[16,451,452],{},"Discovery Unicast Port和User Unicast Port是第一个节点所占用的端口，所以一共占用了俩端口。",[16,454,455],{},"如果Domain ID不变还为0，Participant ID变成1的话，那么下一个节点的Discovery Unicast Port为7412，User Unicast Port为7413。",[16,457,458],{},[19,459],{"alt":21,"src":460},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage858.webp",[16,462,463],{},"以此类推。",[16,465,466],{},"一个Domain ID占用250个端口，所以当Domain ID为1的时候，Discovery Unicast Port应该是7650。",[16,468,469],{},"这是第三个节点，所以是7664和7665。",[16,471,472],{},[19,473],{"alt":21,"src":474},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage859.webp",[16,476,477],{},"实践：在树莓派5上跑一个ROS2 Jazzy开启键盘控制节点，然后在电脑实体机Linux(或者在Docker里跑也行，但要设置好网络)里跑一个ROS2 Humble，并打开乌龟显示节点。",[16,479,480],{},[19,481],{"alt":21,"src":482},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage860.webp",[16,484,485],{},"会发现是可以正常通信的。",[12,487,488],{"id":488},"工作空间覆盖",[16,490,491],{},[19,492],{"alt":21,"src":493},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage861.webp",[16,495,496],{},[19,497],{"alt":21,"src":498},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage862.webp",[16,500,501],{},[80,502,503],{},"没什么用，建议不要使用",[16,505,506],{},[19,507],{"alt":21,"src":508},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage863.webp",[16,510,511],{},[19,512],{"alt":21,"src":513},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage864.webp",[16,515,516],{},[19,517],{"alt":21,"src":518},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage865.webp",[16,520,521],{},"这个是和你的bashrc文件里，加载bash文件的顺序有关，谁最后加载，谁就会运行，也就是最高优先级。除了ROS2本身自带的bash，这个bash是不论在哪加载，都是最低优先级。",[29,523],{},[16,525,526],{},[19,527],{"alt":21,"src":528},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage866.webp",[16,530,531],{},[19,532],{"alt":21,"src":533},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage867.webp",[16,535,536],{},[19,537],{"alt":21,"src":538},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage868.webp",[12,540,541],{"id":541},"元功能包",[16,543,544],{},[19,545],{"alt":21,"src":546},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage869.webp",[16,548,549],{},[19,550],{"alt":21,"src":551},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage870.webp",[16,553,554],{},"distro就是发行版的意思",[16,556,557],{},[19,558],{"alt":21,"src":559},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage871.webp",[29,561],{},[16,563,564],{},[19,565],{"alt":21,"src":566},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage872.webp",[16,568,569],{},"--build-type默认C++，",[16,571,572],{},"--dependent默认无，",[16,574,575],{},"--node-name本身是虚包，所以也无需设置。",[16,577,578],{},[19,579],{"alt":21,"src":580},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage873.webp",[16,582,583],{},"CmakeLists无需修改",[16,585,586],{},[19,587],{"alt":21,"src":588},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage874.webp",[16,590,591],{},"先把12，13行删除",[16,593,594],{},"\u003Cexec_depend>xxxxxx\u003C\u002Fexec_depend>",[16,596,597],{},"所要依赖的功能包名",[16,599,600],{},[19,601],{"alt":21,"src":602},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage875.webp",[16,604,605],{},[19,606],{"alt":21,"src":607},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage876.webp",[16,609,610],{},[19,611],{"alt":21,"src":612},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage877.webp",[29,614],{},[16,616,617],{},"以后可能需要的元功能包：",[16,619,620],{},[19,621],{"alt":21,"src":622},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage878.webp",[16,624,625],{},"这个功能包是导航相关的",[16,627,628],{},[19,629],{"alt":21,"src":630},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage879.webp",[16,632,633],{},"这个就是个元功能包",[16,635,636],{},[19,637],{"alt":21,"src":638},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage880.webp",[16,640,641],{},"只有配置文件，没有其他实质性实现",[16,643,644],{},[19,645],{"alt":21,"src":646},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage881.webp",[16,648,649],{},[19,650],{"alt":21,"src":651},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage882.webp",[16,653,654],{},[19,655],{"alt":21,"src":656},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage883.webp",[16,658,659],{},"元功能包的作用就是方便安装，把自己的东西打包，可以共享到ROS2社区。也方便安装别人的东西。",[12,661,662],{"id":662},"节点重名",[16,664,665],{},[19,666],{"alt":21,"src":667},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage884.webp",[16,669,670],{},[19,671],{"alt":21,"src":672},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage885.webp",[16,674,675],{},"而且节点名称都是一致的，图中有个\u003C2>，这是操作系统给的标号，其他的操作系统是没有这个标号的。",[16,677,678],{},[19,679],{"alt":21,"src":680},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage886.webp",[116,682,684],{"className":118,"code":683,"language":120,"meta":21,"style":21},"rqt_graph\n",[122,685,686],{"__ignoreMap":21},[125,687,688],{"class":127,"line":128},[125,689,683],{"class":252},[16,691,692],{},[19,693],{"alt":21,"src":694},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage887.webp",[16,696,697],{},"他只显示一个turtlesim，实际上我们是使用了两个turtlesim的。",[16,699,700],{},[19,701],{"alt":21,"src":702},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage888.webp",[16,704,705],{},"这样虽然都显示了，但是是一模一样的名字，容易混淆，而且上面也给重名警告了。",[16,707,708],{},[19,709],{"alt":21,"src":710},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage889.webp",[16,712,713],{},[19,714],{"alt":21,"src":715},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage890.webp",[16,717,718],{},[19,719],{"alt":21,"src":720},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage891.webp",[16,722,723],{},"要么起别名：王大宝，王小宝",[16,725,726],{},"要么加命名空间： 毛驴子家的王宝，李二狗家的王宝",[16,728,729],{},[19,730],{"alt":21,"src":731},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage892.webp",[29,733],{},[16,735,736],{},[19,737],{"alt":21,"src":738},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage893.webp",[16,740,741],{},[19,742],{"alt":21,"src":743},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage894.webp",[116,745,747],{"className":118,"code":746,"language":120,"meta":21,"style":21},"ros2 run turtlesim turtlesim_node --ros-args --remap __ns:=\u002Ft1\n",[122,748,749],{"__ignoreMap":21},[125,750,751,754,757,760,763,766,769],{"class":127,"line":128},[125,752,753],{"class":252},"ros2",[125,755,756],{"class":162}," run",[125,758,759],{"class":162}," turtlesim",[125,761,762],{"class":162}," turtlesim_node",[125,764,765],{"class":142}," --ros-args",[125,767,768],{"class":142}," --remap",[125,770,771],{"class":162}," __ns:=\u002Ft1\n",[16,773,774],{},"ros2 run 功能包名 节点名 --ros-args --remap __ns:=\u002F命名空间",[16,776,777],{},[19,778],{"alt":21,"src":779},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage895.webp",[16,781,782],{},[19,783],{"alt":21,"src":784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage896.webp",[116,786,788],{"className":118,"code":787,"language":120,"meta":21,"style":21},"ros2 run turtlesim turtlesim_node --ros-args --remap __name:=turtlesim2\n",[122,789,790],{"__ignoreMap":21},[125,791,792,794,796,798,800,802,804],{"class":127,"line":128},[125,793,753],{"class":252},[125,795,756],{"class":162},[125,797,759],{"class":162},[125,799,762],{"class":162},[125,801,765],{"class":142},[125,803,768],{"class":142},[125,805,806],{"class":162}," __name:=turtlesim2\n",[16,808,809],{},"ros2 run 功能包名 节点名 --ros-args --remap __name:=别名",[16,811,812],{},"or",[16,814,815],{},"ros2 run 功能包名 节点名 --ros-args --remap __node:=别名",[16,817,818],{},[19,819],{"alt":21,"src":820},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage897.webp",[29,822],{},[16,824,825],{},[19,826],{"alt":21,"src":827},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage898.webp",[16,829,830],{},[19,831],{"alt":21,"src":832},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage899.webp",[116,834,836],{"className":118,"code":835,"language":120,"meta":21,"style":21},"ros2 pkg create cpp05_names --build-type ament_cmake --node-name demo01_names\n",[122,837,838],{"__ignoreMap":21},[125,839,840,842,845,848,851,854,857,860],{"class":127,"line":128},[125,841,753],{"class":252},[125,843,844],{"class":162}," pkg",[125,846,847],{"class":162}," create",[125,849,850],{"class":162}," cpp05_names",[125,852,853],{"class":142}," --build-type",[125,855,856],{"class":162}," ament_cmake",[125,858,859],{"class":142}," --node-name",[125,861,862],{"class":162}," demo01_names\n",[16,864,865],{},"节点名可以不设置，这里设置主要是为以后学习做铺垫。",[16,867,868],{},[19,869],{"alt":21,"src":870},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage900.webp",[16,872,873],{},[19,874],{"alt":21,"src":875},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage901.webp",[16,877,878],{},[19,879],{"alt":21,"src":880},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage902.webp",[116,882,886],{"className":883,"code":884,"language":885,"meta":21,"style":21},"language-cmake shiki shiki-themes github-light github-dark","install(DIRECTORY launch DESTINATION share\u002F${PROJECT_NAME})\n","cmake",[122,887,888],{"__ignoreMap":21},[125,889,890,893,896,899],{"class":127,"line":128},[125,891,892],{"class":131},"install",[125,894,895],{"class":135},"(DIRECTORY launch DESTINATION share\u002F",[125,897,898],{"class":131},"${PROJECT_NAME}",[125,900,901],{"class":135},")\n",[16,903,904],{},[19,905],{"alt":21,"src":906},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage903.webp",[16,908,909],{},[19,910],{"alt":21,"src":911},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage904.webp",[16,913,914],{},"先导俩包",[16,916,917],{},[19,918],{"alt":21,"src":919},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage905.webp",[16,921,922],{},"这个LaunchDescription对象里面呢是个列表，这个列表就是存储要启动的若干个节点。",[16,924,925],{},[19,926],{"alt":21,"src":927},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage906.webp",[16,929,930],{},[19,931],{"alt":21,"src":932},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage907.webp",[116,934,938],{"className":935,"code":936,"language":937,"meta":21,"style":21},"language-python shiki shiki-themes github-light github-dark","from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\ndef generate_launch_description():\n    return LaunchDescription([\n        Node(package=\"turtlesim\",executable=\"turtlesim_node\",name=\"t1\")\n    ])\n","python",[122,939,940,954,966,970,981,989,1026],{"__ignoreMap":21},[125,941,942,945,948,951],{"class":127,"line":128},[125,943,944],{"class":131},"from",[125,946,947],{"class":135}," launch ",[125,949,950],{"class":131},"import",[125,952,953],{"class":135}," LaunchDescription\n",[125,955,956,958,961,963],{"class":127,"line":262},[125,957,944],{"class":131},[125,959,960],{"class":135}," launch_ros.actions ",[125,962,950],{"class":131},[125,964,965],{"class":135}," Node\n",[125,967,968],{"class":127,"line":269},[125,969,266],{"emptyLinePlaceholder":265},[125,971,972,975,978],{"class":127,"line":281},[125,973,974],{"class":131},"def",[125,976,977],{"class":252}," generate_launch_description",[125,979,980],{"class":135},"():\n",[125,982,983,986],{"class":127,"line":292},[125,984,985],{"class":131},"    return",[125,987,988],{"class":135}," LaunchDescription([\n",[125,990,991,994,998,1000,1003,1006,1009,1011,1014,1016,1019,1021,1024],{"class":127,"line":297},[125,992,993],{"class":135},"        Node(",[125,995,997],{"class":996},"s4XuR","package",[125,999,139],{"class":131},[125,1001,1002],{"class":162},"\"turtlesim\"",[125,1004,1005],{"class":135},",",[125,1007,1008],{"class":996},"executable",[125,1010,139],{"class":131},[125,1012,1013],{"class":162},"\"turtlesim_node\"",[125,1015,1005],{"class":135},[125,1017,1018],{"class":996},"name",[125,1020,139],{"class":131},[125,1022,1023],{"class":162},"\"t1\"",[125,1025,901],{"class":135},[125,1027,1028],{"class":127,"line":312},[125,1029,1030],{"class":135},"    ])\n",[16,1032,1033],{},"package功能包名",[16,1035,1036],{},"executable节点名",[16,1038,1039],{},"name别名",[16,1041,1042],{},[19,1043],{"alt":21,"src":1044},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage908.webp",[116,1046,1048],{"className":118,"code":1047,"language":120,"meta":21,"style":21},"ros2 launch cpp05_names demo01_names_launch.py\n",[122,1049,1050],{"__ignoreMap":21},[125,1051,1052,1054,1057,1059],{"class":127,"line":128},[125,1053,753],{"class":252},[125,1055,1056],{"class":162}," launch",[125,1058,850],{"class":162},[125,1060,1061],{"class":162}," demo01_names_launch.py\n",[16,1063,1064],{},[19,1065],{"alt":21,"src":1066},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage909.webp",[16,1068,1069],{},[19,1070],{"alt":21,"src":1071},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage910.webp",[29,1073],{},[16,1075,1076,1079],{},[19,1077],{"alt":21,"src":1078},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage911.webp",[19,1080],{"alt":21,"src":1081},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage912.webp",[16,1083,1084],{},"根标签是Launch",[16,1086,1087],{},"子集标签是node",[16,1089,1090],{},[19,1091],{"alt":21,"src":1092},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage913.webp",[116,1094,1098],{"className":1095,"code":1096,"language":1097,"meta":21,"style":21},"language-xml shiki shiki-themes github-light github-dark","\u003Claunch>\n    \u003Cnode pkg=\"turtlesim\" exec=\"turtlesim_node\" name=\"t1\" \u002F>\n\u003C\u002Flaunch>\n","xml",[122,1099,1100,1112,1143],{"__ignoreMap":21},[125,1101,1102,1105,1109],{"class":127,"line":128},[125,1103,1104],{"class":135},"\u003C",[125,1106,1108],{"class":1107},"s9eBZ","launch",[125,1110,1111],{"class":135},">\n",[125,1113,1114,1117,1120,1122,1124,1126,1129,1131,1133,1136,1138,1140],{"class":127,"line":262},[125,1115,1116],{"class":135},"    \u003C",[125,1118,1119],{"class":1107},"node",[125,1121,844],{"class":252},[125,1123,139],{"class":135},[125,1125,1002],{"class":162},[125,1127,1128],{"class":252}," exec",[125,1130,139],{"class":135},[125,1132,1013],{"class":162},[125,1134,1135],{"class":252}," name",[125,1137,139],{"class":135},[125,1139,1023],{"class":162},[125,1141,1142],{"class":135}," \u002F>\n",[125,1144,1145,1148,1150],{"class":127,"line":269},[125,1146,1147],{"class":135},"\u003C\u002F",[125,1149,1108],{"class":1107},[125,1151,1111],{"class":135},[16,1153,1154],{},[19,1155],{"alt":21,"src":1156},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage914.webp",[116,1158,1160],{"className":118,"code":1159,"language":120,"meta":21,"style":21},"ros2 launch cpp05_names demo02_names_launch.xml \n",[122,1161,1162],{"__ignoreMap":21},[125,1163,1164,1166,1168,1170],{"class":127,"line":128},[125,1165,753],{"class":252},[125,1167,1056],{"class":162},[125,1169,850],{"class":162},[125,1171,1172],{"class":162}," demo02_names_launch.xml\n",[29,1174],{},[16,1176,1177],{},[19,1178],{"alt":21,"src":1179},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage915.webp",[16,1181,1182],{},"yaml的根标签也是launch",[16,1184,1185],{},[19,1186],{"alt":21,"src":1187},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage916.webp",[116,1189,1193],{"className":1190,"code":1191,"language":1192,"meta":21,"style":21},"language-yaml shiki shiki-themes github-light github-dark","launch:\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  name: \"t1\"\n","yaml",[122,1194,1195,1202,1208,1219,1229],{"__ignoreMap":21},[125,1196,1197,1199],{"class":127,"line":128},[125,1198,1108],{"class":1107},[125,1200,1201],{"class":135},":\n",[125,1203,1204,1206],{"class":127,"line":262},[125,1205,1119],{"class":1107},[125,1207,1201],{"class":135},[125,1209,1210,1213,1216],{"class":127,"line":269},[125,1211,1212],{"class":1107},"  pkg",[125,1214,1215],{"class":135},": ",[125,1217,1218],{"class":162},"\"turtlesim\"\n",[125,1220,1221,1224,1226],{"class":127,"line":281},[125,1222,1223],{"class":1107},"  exec",[125,1225,1215],{"class":135},[125,1227,1228],{"class":162},"\"turtlesim_node\"\n",[125,1230,1231,1234,1236],{"class":127,"line":292},[125,1232,1233],{"class":1107},"  name",[125,1235,1215],{"class":135},[125,1237,1238],{"class":162},"\"t1\"\n",[16,1240,1241],{},[19,1242],{"alt":21,"src":1243},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage917.webp",[116,1245,1247],{"className":118,"code":1246,"language":120,"meta":21,"style":21},"ros2 launch cpp05_names demo03_names_launch.yaml \n",[122,1248,1249],{"__ignoreMap":21},[125,1250,1251,1253,1255,1257],{"class":127,"line":128},[125,1252,753],{"class":252},[125,1254,1056],{"class":162},[125,1256,850],{"class":162},[125,1258,1259],{"class":162}," demo03_names_launch.yaml\n",[29,1261],{},[16,1263,1264],{},[19,1265],{"alt":21,"src":1266},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage918.webp",[16,1268,1269],{},[19,1270],{"alt":21,"src":1271},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage919.webp",[16,1273,1274],{},[19,1275],{"alt":21,"src":1276},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage920.webp",[16,1278,1039],{},[16,1280,1281],{},"namespace命名空间",[16,1283,1284],{},[19,1285],{"alt":21,"src":1286},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage921.webp",[116,1288,1290],{"className":935,"code":1289,"language":937,"meta":21,"style":21},"from launch import LaunchDescription\nfrom launch_ros.actions import Node\n\ndef generate_launch_description():\n    return LaunchDescription([\n        Node(package=\"turtlesim\",executable=\"turtlesim_node\",name=\"turtle1\"),\n        Node(package=\"turtlesim\",executable=\"turtlesim_node\",namespace=\"t1\"),\n        Node(package=\"turtlesim\",executable=\"turtlesim_node\",namespace=\"t1\",name=\"turtle1\")\n    ])\n",[122,1291,1292,1302,1312,1316,1324,1330,1360,1389,1425],{"__ignoreMap":21},[125,1293,1294,1296,1298,1300],{"class":127,"line":128},[125,1295,944],{"class":131},[125,1297,947],{"class":135},[125,1299,950],{"class":131},[125,1301,953],{"class":135},[125,1303,1304,1306,1308,1310],{"class":127,"line":262},[125,1305,944],{"class":131},[125,1307,960],{"class":135},[125,1309,950],{"class":131},[125,1311,965],{"class":135},[125,1313,1314],{"class":127,"line":269},[125,1315,266],{"emptyLinePlaceholder":265},[125,1317,1318,1320,1322],{"class":127,"line":281},[125,1319,974],{"class":131},[125,1321,977],{"class":252},[125,1323,980],{"class":135},[125,1325,1326,1328],{"class":127,"line":292},[125,1327,985],{"class":131},[125,1329,988],{"class":135},[125,1331,1332,1334,1336,1338,1340,1342,1344,1346,1348,1350,1352,1354,1357],{"class":127,"line":297},[125,1333,993],{"class":135},[125,1335,997],{"class":996},[125,1337,139],{"class":131},[125,1339,1002],{"class":162},[125,1341,1005],{"class":135},[125,1343,1008],{"class":996},[125,1345,139],{"class":131},[125,1347,1013],{"class":162},[125,1349,1005],{"class":135},[125,1351,1018],{"class":996},[125,1353,139],{"class":131},[125,1355,1356],{"class":162},"\"turtle1\"",[125,1358,1359],{"class":135},"),\n",[125,1361,1362,1364,1366,1368,1370,1372,1374,1376,1378,1380,1383,1385,1387],{"class":127,"line":312},[125,1363,993],{"class":135},[125,1365,997],{"class":996},[125,1367,139],{"class":131},[125,1369,1002],{"class":162},[125,1371,1005],{"class":135},[125,1373,1008],{"class":996},[125,1375,139],{"class":131},[125,1377,1013],{"class":162},[125,1379,1005],{"class":135},[125,1381,1382],{"class":996},"namespace",[125,1384,139],{"class":131},[125,1386,1023],{"class":162},[125,1388,1359],{"class":135},[125,1390,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423],{"class":127,"line":325},[125,1392,993],{"class":135},[125,1394,997],{"class":996},[125,1396,139],{"class":131},[125,1398,1002],{"class":162},[125,1400,1005],{"class":135},[125,1402,1008],{"class":996},[125,1404,139],{"class":131},[125,1406,1013],{"class":162},[125,1408,1005],{"class":135},[125,1410,1382],{"class":996},[125,1412,139],{"class":131},[125,1414,1023],{"class":162},[125,1416,1005],{"class":135},[125,1418,1018],{"class":996},[125,1420,139],{"class":131},[125,1422,1356],{"class":162},[125,1424,901],{"class":135},[125,1426,1427],{"class":127,"line":338},[125,1428,1030],{"class":135},[16,1430,1431],{},[19,1432],{"alt":21,"src":1433},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage922.webp",[116,1435,1437],{"className":1095,"code":1436,"language":1097,"meta":21,"style":21},"\u003Claunch>\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" name =\"turtle1\" \u002F>\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" \u002F>\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" name= \"turtle1\" \u002F>\n\u003C\u002Flaunch>\n",[122,1438,1439,1447,1474,1501,1534],{"__ignoreMap":21},[125,1440,1441,1443,1445],{"class":127,"line":128},[125,1442,1104],{"class":135},[125,1444,1108],{"class":1107},[125,1446,1111],{"class":135},[125,1448,1449,1451,1453,1455,1458,1460,1462,1464,1466,1468,1470,1472],{"class":127,"line":262},[125,1450,1116],{"class":135},[125,1452,1119],{"class":1107},[125,1454,844],{"class":252},[125,1456,1457],{"class":135}," =",[125,1459,1002],{"class":162},[125,1461,1128],{"class":252},[125,1463,1457],{"class":135},[125,1465,1013],{"class":162},[125,1467,1135],{"class":252},[125,1469,1457],{"class":135},[125,1471,1356],{"class":162},[125,1473,1142],{"class":135},[125,1475,1476,1478,1480,1482,1484,1486,1488,1490,1492,1495,1497,1499],{"class":127,"line":269},[125,1477,1116],{"class":135},[125,1479,1119],{"class":1107},[125,1481,844],{"class":252},[125,1483,1457],{"class":135},[125,1485,1002],{"class":162},[125,1487,1128],{"class":252},[125,1489,1457],{"class":135},[125,1491,1013],{"class":162},[125,1493,1494],{"class":252}," namespace",[125,1496,1457],{"class":135},[125,1498,1023],{"class":162},[125,1500,1142],{"class":135},[125,1502,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1530,1532],{"class":127,"line":281},[125,1504,1116],{"class":135},[125,1506,1119],{"class":1107},[125,1508,844],{"class":252},[125,1510,1457],{"class":135},[125,1512,1002],{"class":162},[125,1514,1128],{"class":252},[125,1516,1457],{"class":135},[125,1518,1013],{"class":162},[125,1520,1494],{"class":252},[125,1522,1457],{"class":135},[125,1524,1023],{"class":162},[125,1526,1135],{"class":252},[125,1528,1529],{"class":135},"= ",[125,1531,1356],{"class":162},[125,1533,1142],{"class":135},[125,1535,1536,1538,1540],{"class":127,"line":292},[125,1537,1147],{"class":135},[125,1539,1108],{"class":1107},[125,1541,1111],{"class":135},[16,1543,1544],{},[19,1545],{"alt":21,"src":1546},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage923.webp",[116,1548,1550],{"className":1190,"code":1549,"language":1192,"meta":21,"style":21},"launch:\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  name: \"turtle\"\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  namespace: \"t1\"\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  namespace: \"t1\"\n  name: \"turtle\"\n",[122,1551,1552,1558,1564,1572,1580,1589,1595,1603,1611,1620,1626,1634,1642,1650],{"__ignoreMap":21},[125,1553,1554,1556],{"class":127,"line":128},[125,1555,1108],{"class":1107},[125,1557,1201],{"class":135},[125,1559,1560,1562],{"class":127,"line":262},[125,1561,1119],{"class":1107},[125,1563,1201],{"class":135},[125,1565,1566,1568,1570],{"class":127,"line":269},[125,1567,1212],{"class":1107},[125,1569,1215],{"class":135},[125,1571,1218],{"class":162},[125,1573,1574,1576,1578],{"class":127,"line":281},[125,1575,1223],{"class":1107},[125,1577,1215],{"class":135},[125,1579,1228],{"class":162},[125,1581,1582,1584,1586],{"class":127,"line":292},[125,1583,1233],{"class":1107},[125,1585,1215],{"class":135},[125,1587,1588],{"class":162},"\"turtle\"\n",[125,1590,1591,1593],{"class":127,"line":297},[125,1592,1119],{"class":1107},[125,1594,1201],{"class":135},[125,1596,1597,1599,1601],{"class":127,"line":312},[125,1598,1212],{"class":1107},[125,1600,1215],{"class":135},[125,1602,1218],{"class":162},[125,1604,1605,1607,1609],{"class":127,"line":325},[125,1606,1223],{"class":1107},[125,1608,1215],{"class":135},[125,1610,1228],{"class":162},[125,1612,1613,1616,1618],{"class":127,"line":338},[125,1614,1615],{"class":1107},"  namespace",[125,1617,1215],{"class":135},[125,1619,1238],{"class":162},[125,1621,1622,1624],{"class":127,"line":350},[125,1623,1119],{"class":1107},[125,1625,1201],{"class":135},[125,1627,1628,1630,1632],{"class":127,"line":355},[125,1629,1212],{"class":1107},[125,1631,1215],{"class":135},[125,1633,1218],{"class":162},[125,1635,1636,1638,1640],{"class":127,"line":361},[125,1637,1223],{"class":1107},[125,1639,1215],{"class":135},[125,1641,1228],{"class":162},[125,1643,1644,1646,1648],{"class":127,"line":366},[125,1645,1615],{"class":1107},[125,1647,1215],{"class":135},[125,1649,1238],{"class":162},[125,1651,1652,1654,1656],{"class":127,"line":376},[125,1653,1233],{"class":1107},[125,1655,1215],{"class":135},[125,1657,1588],{"class":162},[16,1659,1660],{},[19,1661],{"alt":21,"src":1662},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage924.webp",[29,1664],{},[16,1666,1667],{},[19,1668],{"alt":21,"src":1669},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage925.webp",[16,1671,1672],{},[19,1673],{"alt":21,"src":1674},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage926.webp",[16,1676,1677],{},[19,1678],{"alt":21,"src":1679},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage927.webp",[16,1681,1682],{},[19,1683],{"alt":21,"src":1684},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage928.webp",[16,1686,1687],{},"可指定命名空间",[16,1689,1690],{},[19,1691],{"alt":21,"src":1692},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage929.webp",[116,1694,1698],{"className":1695,"code":1696,"language":1697,"meta":21,"style":21},"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(\"mynode_node_cpp\",\"t1_ns\")\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\n  auto node = std::make_shared\u003CMyNode>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n","cpp",[122,1699,1700,1708,1712,1734,1739,1744,1768,1773,1798,1803,1808,1812,1841,1845,1858,1862,1888,1892,1904,1909,1922,1934],{"__ignoreMap":21},[125,1701,1702,1705],{"class":127,"line":128},[125,1703,1704],{"class":131},"#include",[125,1706,1707],{"class":162}," \"rclcpp\u002Frclcpp.hpp\"\n",[125,1709,1710],{"class":127,"line":262},[125,1711,266],{"emptyLinePlaceholder":265},[125,1713,1714,1717,1720,1722,1725,1728,1731],{"class":127,"line":269},[125,1715,1716],{"class":131},"class",[125,1718,1719],{"class":252}," MyNode",[125,1721,1215],{"class":135},[125,1723,1724],{"class":131},"public",[125,1726,1727],{"class":252}," rclcpp",[125,1729,1730],{"class":135},"::",[125,1732,1733],{"class":252},"Node\n",[125,1735,1736],{"class":127,"line":281},[125,1737,1738],{"class":135},"{\n",[125,1740,1741],{"class":127,"line":292},[125,1742,1743],{"class":131},"  public:\n",[125,1745,1746,1749,1752,1755,1758,1761,1763,1766],{"class":127,"line":297},[125,1747,1748],{"class":252},"    MyNode",[125,1750,1751],{"class":135},"():",[125,1753,1754],{"class":252},"Node",[125,1756,1757],{"class":135},"(",[125,1759,1760],{"class":162},"\"mynode_node_cpp\"",[125,1762,1005],{"class":135},[125,1764,1765],{"class":162},"\"t1_ns\"",[125,1767,901],{"class":135},[125,1769,1770],{"class":127,"line":312},[125,1771,1772],{"class":135},"    {\n",[125,1774,1775,1778,1780,1783,1786,1789,1792,1795],{"class":127,"line":325},[125,1776,1777],{"class":252},"      RCLCPP_INFO",[125,1779,1757],{"class":135},[125,1781,1782],{"class":142},"this",[125,1784,1785],{"class":135},"->",[125,1787,1788],{"class":252},"get_logger",[125,1790,1791],{"class":135},"(),",[125,1793,1794],{"class":162},"\"Hello World!\"",[125,1796,1797],{"class":135},");\n",[125,1799,1800],{"class":127,"line":338},[125,1801,1802],{"class":135},"    }\n",[125,1804,1805],{"class":127,"line":350},[125,1806,1807],{"class":135},"};\n",[125,1809,1810],{"class":127,"line":355},[125,1811,266],{"emptyLinePlaceholder":265},[125,1813,1814,1817,1820,1822,1824,1827,1830,1833,1836,1839],{"class":127,"line":361},[125,1815,1816],{"class":131},"int",[125,1818,1819],{"class":252}," main",[125,1821,1757],{"class":135},[125,1823,1816],{"class":131},[125,1825,1826],{"class":996}," argc",[125,1828,1829],{"class":135},", ",[125,1831,1832],{"class":131},"char",[125,1834,1835],{"class":131}," **",[125,1837,1838],{"class":996}," argv",[125,1840,901],{"class":135},[125,1842,1843],{"class":127,"line":366},[125,1844,1738],{"class":135},[125,1846,1847,1850,1852,1855],{"class":127,"line":376},[125,1848,1849],{"class":252},"  rclcpp",[125,1851,1730],{"class":135},[125,1853,1854],{"class":252},"init",[125,1856,1857],{"class":135},"(argc,argv);\n",[125,1859,1860],{"class":127,"line":386},[125,1861,266],{"emptyLinePlaceholder":265},[125,1863,1864,1867,1870,1872,1875,1877,1880,1882,1885],{"class":127,"line":398},[125,1865,1866],{"class":131},"  auto",[125,1868,1869],{"class":135}," node ",[125,1871,139],{"class":131},[125,1873,1874],{"class":252}," std",[125,1876,1730],{"class":135},[125,1878,1879],{"class":252},"make_shared",[125,1881,1104],{"class":135},[125,1883,1884],{"class":252},"MyNode",[125,1886,1887],{"class":135},">();\n",[125,1889,1890],{"class":127,"line":410},[125,1891,266],{"emptyLinePlaceholder":265},[125,1893,1894,1896,1898,1901],{"class":127,"line":422},[125,1895,1849],{"class":252},[125,1897,1730],{"class":135},[125,1899,1900],{"class":252},"spin",[125,1902,1903],{"class":135},"(node);\n",[125,1905,1907],{"class":127,"line":1906},19,[125,1908,266],{"emptyLinePlaceholder":265},[125,1910,1912,1914,1916,1919],{"class":127,"line":1911},20,[125,1913,1849],{"class":252},[125,1915,1730],{"class":135},[125,1917,1918],{"class":252},"shutdown",[125,1920,1921],{"class":135},"();\n",[125,1923,1925,1928,1931],{"class":127,"line":1924},21,[125,1926,1927],{"class":131},"  return",[125,1929,1930],{"class":142}," 0",[125,1932,1933],{"class":135},";\n",[125,1935,1937],{"class":127,"line":1936},22,[125,1938,1939],{"class":135},"}\n",[16,1941,1942],{},[19,1943],{"alt":21,"src":1944},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage930.webp",[16,1946,1947],{},[19,1948],{"alt":21,"src":1949},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage931.webp",[16,1951,1952],{},[19,1953],{"alt":21,"src":1954},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage932.webp",[16,1956,1957],{},[19,1958],{"alt":21,"src":1959},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage933.webp",[12,1961,1962],{"id":1962},"话题重名",[16,1964,1965],{},[19,1966],{"alt":21,"src":1967},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage934.webp",[16,1969,1970],{},[19,1971],{"alt":21,"src":1972},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage935.webp",[16,1974,1975],{},[19,1976],{"alt":21,"src":1977},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage936.webp",[29,1979],{},[16,1981,1982],{},[19,1983],{"alt":21,"src":1984},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage937.webp",[16,1986,1987],{},[19,1988],{"alt":21,"src":1989},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage938.webp",[116,1991,1992],{"className":118,"code":746,"language":120,"meta":21,"style":21},[122,1993,1994],{"__ignoreMap":21},[125,1995,1996,1998,2000,2002,2004,2006,2008],{"class":127,"line":128},[125,1997,753],{"class":252},[125,1999,756],{"class":162},[125,2001,759],{"class":162},[125,2003,762],{"class":162},[125,2005,765],{"class":142},[125,2007,768],{"class":142},[125,2009,771],{"class":162},[16,2011,774],{},[16,2013,2014],{},"这种加命名空间的方式，不仅对节点重名生效，当然对话题名称依然生效。",[16,2016,2017],{},[19,2018],{"alt":21,"src":2019},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage939.webp",[16,2021,2022],{},[19,2023],{"alt":21,"src":2024},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage940.webp",[16,2026,2027],{},[19,2028],{"alt":21,"src":2029},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage941.webp",[16,2031,2032],{},[19,2033],{"alt":21,"src":2034},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage942.webp",[16,2036,2037],{},[19,2038],{"alt":21,"src":2039},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage943.webp",[116,2041,2043],{"className":118,"code":2042,"language":120,"meta":21,"style":21},"ros2 run teleop_twist_keyboard teleop_twist_keyboard \n",[122,2044,2045],{"__ignoreMap":21},[125,2046,2047,2049,2051,2054],{"class":127,"line":128},[125,2048,753],{"class":252},[125,2050,756],{"class":162},[125,2052,2053],{"class":162}," teleop_twist_keyboard",[125,2055,2056],{"class":162}," teleop_twist_keyboard\n",[16,2058,2059],{},"这个是打开控制机器人运动的节点",[16,2061,2062],{},"ros2 run teleop_twist_keyboard teleop_twist_keyboard",[16,2064,2065],{},[19,2066],{"alt":21,"src":2067},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage944.webp",[16,2069,2070],{},[19,2071],{"alt":21,"src":2072},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage945.webp",[16,2074,2075],{},"其所对应的话题名称是这个。",[16,2077,2078],{},[19,2079],{"alt":21,"src":2080},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage946.webp",[16,2082,2083],{},"但此时控制乌龟运动无效，是因为话题命名空间不同。",[16,2085,2086],{},[19,2087],{"alt":21,"src":2088},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage947.webp",[16,2090,2091],{},"乌龟接收的话题是\u002Fturtle1\u002Fcmd_vel，命名空间是\u002Fturtle1",[16,2093,2094],{},"而控制乌龟运动的是\u002Fcmd_vel，命名空间不同，",[16,2096,2097],{},"所以我们要把两者命名空间弄成一样的。",[16,2099,2100],{},"随便改即可，只要改成一样的，就可以正常通信了。",[16,2102,2103],{},[19,2104],{"alt":21,"src":2105},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage948.webp",[16,2107,2108],{},[19,2109],{"alt":21,"src":2110},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage949.webp",[29,2112],{},[16,2114,2115],{},[19,2116],{"alt":21,"src":2117},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage950.webp",[16,2119,2120],{},"remappings可以实现话题的重映射，该参数是一个列表，然后里面是元组，每一个元组都可以对一个话题进行重映射，元组里第一个参数是原话题名称，第二个参数是重映射后的话题名称。",[16,2122,2123],{},"namespace可以实现命名空间。",[16,2125,2126],{},[19,2127],{"alt":21,"src":2128},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage951.webp",[16,2130,2131],{},[19,2132],{"alt":21,"src":2133},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage952.webp",[16,2135,2136],{},[19,2137],{"alt":21,"src":2138},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage953.webp",[16,2140,2141],{},[19,2142],{"alt":21,"src":2143},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage954.webp",[16,2145,2146],{},[19,2147],{"alt":21,"src":2148},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage955.webp",[16,2150,2151],{},[19,2152],{"alt":21,"src":2153},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage956.webp",[16,2155,2156],{},[19,2157],{"alt":21,"src":2158},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage957.webp",[16,2160,2161],{},[19,2162],{"alt":21,"src":2163},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage958.webp",[16,2165,2166],{},"remp也是可以设置重映射，from是原话题名称，to是重映射的名称。",[116,2168,2170],{"className":1095,"code":2169,"language":1097,"meta":21,"style":21},"\u003Claunch>\n\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" \u002F>\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" >\n        \u003Cremap from= \"\u002Fturtle1\u002Fcmd_vel\" to=\"\u002Fcmd_vel\" \u002F>\n    \u003C\u002Fnode>\n\u003C\u002Flaunch>\n",[122,2171,2172,2180,2184,2210,2231,2257,2266],{"__ignoreMap":21},[125,2173,2174,2176,2178],{"class":127,"line":128},[125,2175,1104],{"class":135},[125,2177,1108],{"class":1107},[125,2179,1111],{"class":135},[125,2181,2182],{"class":127,"line":262},[125,2183,266],{"emptyLinePlaceholder":265},[125,2185,2186,2188,2190,2192,2194,2196,2198,2200,2202,2204,2206,2208],{"class":127,"line":269},[125,2187,1116],{"class":135},[125,2189,1119],{"class":1107},[125,2191,844],{"class":252},[125,2193,1457],{"class":135},[125,2195,1002],{"class":162},[125,2197,1128],{"class":252},[125,2199,1457],{"class":135},[125,2201,1013],{"class":162},[125,2203,1494],{"class":252},[125,2205,1457],{"class":135},[125,2207,1023],{"class":162},[125,2209,1142],{"class":135},[125,2211,2212,2214,2216,2218,2220,2222,2224,2226,2228],{"class":127,"line":281},[125,2213,1116],{"class":135},[125,2215,1119],{"class":1107},[125,2217,844],{"class":252},[125,2219,1457],{"class":135},[125,2221,1002],{"class":162},[125,2223,1128],{"class":252},[125,2225,1457],{"class":135},[125,2227,1013],{"class":162},[125,2229,2230],{"class":135}," >\n",[125,2232,2233,2236,2239,2242,2244,2247,2250,2252,2255],{"class":127,"line":292},[125,2234,2235],{"class":135},"        \u003C",[125,2237,2238],{"class":1107},"remap",[125,2240,2241],{"class":252}," from",[125,2243,1529],{"class":135},[125,2245,2246],{"class":162},"\"\u002Fturtle1\u002Fcmd_vel\"",[125,2248,2249],{"class":252}," to",[125,2251,139],{"class":135},[125,2253,2254],{"class":162},"\"\u002Fcmd_vel\"",[125,2256,1142],{"class":135},[125,2258,2259,2262,2264],{"class":127,"line":297},[125,2260,2261],{"class":135},"    \u003C\u002F",[125,2263,1119],{"class":1107},[125,2265,1111],{"class":135},[125,2267,2268,2270,2272],{"class":127,"line":312},[125,2269,1147],{"class":135},[125,2271,1108],{"class":1107},[125,2273,1111],{"class":135},[16,2275,2276],{},[19,2277],{"alt":21,"src":2278},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage959.webp",[16,2280,2281],{},[19,2282],{"alt":21,"src":2283},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage960.webp",[16,2285,2286],{},"launch:",[116,2288,2290],{"className":1190,"code":2289,"language":1192,"meta":21,"style":21},"- node:\npkg: \"turtlesim\"\nexec: \"turtlesim_node\"\nname: \"turtle\"\n- node:\npkg: \"turtlesim\"\nexec: \"turtlesim_node\"\nnamespace: \"t1\"\n- node:\npkg: \"turtlesim\"\nexec: \"turtlesim_node\"\nnamespace: \"t1\"\nname: \"turtle\"\n\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  namespace: \"t1\"\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  remap:\n  -\n      from: \"\u002Fturtle1\u002Fcmd_vel\"\n      to: \"\u002Fcmd_vel\"\n",[122,2291,2292,2301,2310,2319,2327,2335,2343,2351,2359,2367,2375,2383,2391,2399,2403,2409,2417,2425,2433,2439,2447,2455,2462,2468,2479],{"__ignoreMap":21},[125,2293,2294,2297,2299],{"class":127,"line":128},[125,2295,2296],{"class":135},"- ",[125,2298,1119],{"class":1107},[125,2300,1201],{"class":135},[125,2302,2303,2306,2308],{"class":127,"line":262},[125,2304,2305],{"class":1107},"pkg",[125,2307,1215],{"class":135},[125,2309,1218],{"class":162},[125,2311,2312,2315,2317],{"class":127,"line":269},[125,2313,2314],{"class":1107},"exec",[125,2316,1215],{"class":135},[125,2318,1228],{"class":162},[125,2320,2321,2323,2325],{"class":127,"line":281},[125,2322,1018],{"class":1107},[125,2324,1215],{"class":135},[125,2326,1588],{"class":162},[125,2328,2329,2331,2333],{"class":127,"line":292},[125,2330,2296],{"class":135},[125,2332,1119],{"class":1107},[125,2334,1201],{"class":135},[125,2336,2337,2339,2341],{"class":127,"line":297},[125,2338,2305],{"class":1107},[125,2340,1215],{"class":135},[125,2342,1218],{"class":162},[125,2344,2345,2347,2349],{"class":127,"line":312},[125,2346,2314],{"class":1107},[125,2348,1215],{"class":135},[125,2350,1228],{"class":162},[125,2352,2353,2355,2357],{"class":127,"line":325},[125,2354,1382],{"class":1107},[125,2356,1215],{"class":135},[125,2358,1238],{"class":162},[125,2360,2361,2363,2365],{"class":127,"line":338},[125,2362,2296],{"class":135},[125,2364,1119],{"class":1107},[125,2366,1201],{"class":135},[125,2368,2369,2371,2373],{"class":127,"line":350},[125,2370,2305],{"class":1107},[125,2372,1215],{"class":135},[125,2374,1218],{"class":162},[125,2376,2377,2379,2381],{"class":127,"line":355},[125,2378,2314],{"class":1107},[125,2380,1215],{"class":135},[125,2382,1228],{"class":162},[125,2384,2385,2387,2389],{"class":127,"line":361},[125,2386,1382],{"class":1107},[125,2388,1215],{"class":135},[125,2390,1238],{"class":162},[125,2392,2393,2395,2397],{"class":127,"line":366},[125,2394,1018],{"class":1107},[125,2396,1215],{"class":135},[125,2398,1588],{"class":162},[125,2400,2401],{"class":127,"line":376},[125,2402,266],{"emptyLinePlaceholder":265},[125,2404,2405,2407],{"class":127,"line":386},[125,2406,1119],{"class":1107},[125,2408,1201],{"class":135},[125,2410,2411,2413,2415],{"class":127,"line":398},[125,2412,1212],{"class":1107},[125,2414,1215],{"class":135},[125,2416,1218],{"class":162},[125,2418,2419,2421,2423],{"class":127,"line":410},[125,2420,1223],{"class":1107},[125,2422,1215],{"class":135},[125,2424,1228],{"class":162},[125,2426,2427,2429,2431],{"class":127,"line":422},[125,2428,1615],{"class":1107},[125,2430,1215],{"class":135},[125,2432,1238],{"class":162},[125,2434,2435,2437],{"class":127,"line":1906},[125,2436,1119],{"class":1107},[125,2438,1201],{"class":135},[125,2440,2441,2443,2445],{"class":127,"line":1911},[125,2442,1212],{"class":1107},[125,2444,1215],{"class":135},[125,2446,1218],{"class":162},[125,2448,2449,2451,2453],{"class":127,"line":1924},[125,2450,1223],{"class":1107},[125,2452,1215],{"class":135},[125,2454,1228],{"class":162},[125,2456,2457,2460],{"class":127,"line":1936},[125,2458,2459],{"class":1107},"  remap",[125,2461,1201],{"class":135},[125,2463,2465],{"class":127,"line":2464},23,[125,2466,2467],{"class":135},"  -\n",[125,2469,2471,2474,2476],{"class":127,"line":2470},24,[125,2472,2473],{"class":1107},"      from",[125,2475,1215],{"class":135},[125,2477,2478],{"class":162},"\"\u002Fturtle1\u002Fcmd_vel\"\n",[125,2480,2482,2485,2487],{"class":127,"line":2481},25,[125,2483,2484],{"class":1107},"      to",[125,2486,1215],{"class":135},[125,2488,2489],{"class":162},"\"\u002Fcmd_vel\"\n",[16,2491,2492],{},[19,2493],{"alt":21,"src":2494},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage961.webp",[16,2496,2497],{},[19,2498],{"alt":21,"src":2499},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage962.webp",[29,2501],{},[16,2503,2504],{},[19,2505],{"alt":21,"src":2506},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage963.webp",[16,2508,2509],{},[19,2510],{"alt":21,"src":2511},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage964.webp",[16,2513,2514],{},"命名空间可以有好几级。",[16,2516,2517],{},[19,2518],{"alt":21,"src":2519},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage965.webp",[16,2521,2522],{},"全局话题是和节点命名空间平级，也就是挂载在根下的。",[16,2524,2525],{},"相对话题是挂载在命名空间下的。",[16,2527,2528],{},"私有话题是节点名称的子级。",[16,2530,2531],{},[19,2532],{"alt":21,"src":2533},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage966.webp",[16,2535,2536],{},[19,2537],{"alt":21,"src":2538},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage967.webp",[16,2540,2541],{},[19,2542],{"alt":21,"src":2543},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage968.webp",[16,2545,2546],{},[19,2547],{"alt":21,"src":2548},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage969.webp",[116,2550,2552],{"className":1695,"code":2551,"language":1697,"meta":21,"style":21},"#include \"rclcpp\u002Frclcpp.hpp\"\n#include \"std_msgs\u002Fmsg\u002Fstring.hpp\"\n\nusing std_msgs::msg::String;\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"mynode_node_name\",\"t1_namespace\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"Hello World!\");\n      publisher_ = this->create_publisher\u003CString>(\"\u002Fglobal_topics\",10);\n    }\n  private:\n    rclcpp::Publisher\u003CString>::SharedPtr publisher_;\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CMyNode>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[122,2553,2554,2560,2567,2571,2587,2591,2607,2611,2615,2635,2639,2657,2690,2694,2699,2716,2720,2724,2746,2750,2760,2764,2784,2788,2798,2802,2813,2822],{"__ignoreMap":21},[125,2555,2556,2558],{"class":127,"line":128},[125,2557,1704],{"class":131},[125,2559,1707],{"class":162},[125,2561,2562,2564],{"class":127,"line":262},[125,2563,1704],{"class":131},[125,2565,2566],{"class":162}," \"std_msgs\u002Fmsg\u002Fstring.hpp\"\n",[125,2568,2569],{"class":127,"line":269},[125,2570,266],{"emptyLinePlaceholder":265},[125,2572,2573,2576,2579,2581,2584],{"class":127,"line":281},[125,2574,2575],{"class":131},"using",[125,2577,2578],{"class":252}," std_msgs",[125,2580,1730],{"class":135},[125,2582,2583],{"class":252},"msg",[125,2585,2586],{"class":135},"::String;\n",[125,2588,2589],{"class":127,"line":292},[125,2590,266],{"emptyLinePlaceholder":265},[125,2592,2593,2595,2597,2599,2601,2603,2605],{"class":127,"line":297},[125,2594,1716],{"class":131},[125,2596,1719],{"class":252},[125,2598,1215],{"class":135},[125,2600,1724],{"class":131},[125,2602,1727],{"class":252},[125,2604,1730],{"class":135},[125,2606,1733],{"class":252},[125,2608,2609],{"class":127,"line":312},[125,2610,1738],{"class":135},[125,2612,2613],{"class":127,"line":325},[125,2614,1743],{"class":131},[125,2616,2617,2619,2621,2623,2625,2628,2630,2633],{"class":127,"line":338},[125,2618,1748],{"class":252},[125,2620,1751],{"class":135},[125,2622,1754],{"class":252},[125,2624,1757],{"class":135},[125,2626,2627],{"class":162},"\"mynode_node_name\"",[125,2629,1005],{"class":135},[125,2631,2632],{"class":162},"\"t1_namespace\"",[125,2634,901],{"class":135},[125,2636,2637],{"class":127,"line":350},[125,2638,1772],{"class":135},[125,2640,2641,2643,2645,2647,2649,2651,2653,2655],{"class":127,"line":355},[125,2642,1777],{"class":252},[125,2644,1757],{"class":135},[125,2646,1782],{"class":142},[125,2648,1785],{"class":135},[125,2650,1788],{"class":252},[125,2652,1791],{"class":135},[125,2654,1794],{"class":162},[125,2656,1797],{"class":135},[125,2658,2659,2662,2664,2667,2670,2672,2675,2678,2680,2683,2685,2688],{"class":127,"line":361},[125,2660,2661],{"class":135},"      publisher_ ",[125,2663,139],{"class":131},[125,2665,2666],{"class":142}," this",[125,2668,2669],{"class":135},"->create_publisher",[125,2671,1104],{"class":131},[125,2673,2674],{"class":135},"String",[125,2676,2677],{"class":131},">",[125,2679,1757],{"class":135},[125,2681,2682],{"class":162},"\"\u002Fglobal_topics\"",[125,2684,1005],{"class":135},[125,2686,2687],{"class":142},"10",[125,2689,1797],{"class":135},[125,2691,2692],{"class":127,"line":366},[125,2693,1802],{"class":135},[125,2695,2696],{"class":127,"line":376},[125,2697,2698],{"class":131},"  private:\n",[125,2700,2701,2704,2706,2709,2711,2713],{"class":127,"line":386},[125,2702,2703],{"class":252},"    rclcpp",[125,2705,1730],{"class":135},[125,2707,2708],{"class":252},"Publisher",[125,2710,1104],{"class":135},[125,2712,2674],{"class":252},[125,2714,2715],{"class":135},">::SharedPtr publisher_;\n",[125,2717,2718],{"class":127,"line":398},[125,2719,1807],{"class":135},[125,2721,2722],{"class":127,"line":410},[125,2723,266],{"emptyLinePlaceholder":265},[125,2725,2726,2728,2730,2732,2734,2736,2738,2740,2742,2744],{"class":127,"line":422},[125,2727,1816],{"class":131},[125,2729,1819],{"class":252},[125,2731,1757],{"class":135},[125,2733,1816],{"class":131},[125,2735,1826],{"class":996},[125,2737,1829],{"class":135},[125,2739,1832],{"class":131},[125,2741,1835],{"class":131},[125,2743,1838],{"class":996},[125,2745,901],{"class":135},[125,2747,2748],{"class":127,"line":1906},[125,2749,1738],{"class":135},[125,2751,2752,2754,2756,2758],{"class":127,"line":1911},[125,2753,1849],{"class":252},[125,2755,1730],{"class":135},[125,2757,1854],{"class":252},[125,2759,1857],{"class":135},[125,2761,2762],{"class":127,"line":1924},[125,2763,266],{"emptyLinePlaceholder":265},[125,2765,2766,2768,2770,2772,2774,2776,2778,2780,2782],{"class":127,"line":1936},[125,2767,1866],{"class":131},[125,2769,1869],{"class":135},[125,2771,139],{"class":131},[125,2773,1874],{"class":252},[125,2775,1730],{"class":135},[125,2777,1879],{"class":252},[125,2779,1104],{"class":135},[125,2781,1884],{"class":252},[125,2783,1887],{"class":135},[125,2785,2786],{"class":127,"line":2464},[125,2787,266],{"emptyLinePlaceholder":265},[125,2789,2790,2792,2794,2796],{"class":127,"line":2470},[125,2791,1849],{"class":252},[125,2793,1730],{"class":135},[125,2795,1900],{"class":252},[125,2797,1903],{"class":135},[125,2799,2800],{"class":127,"line":2481},[125,2801,266],{"emptyLinePlaceholder":265},[125,2803,2805,2807,2809,2811],{"class":127,"line":2804},26,[125,2806,1849],{"class":252},[125,2808,1730],{"class":135},[125,2810,1918],{"class":252},[125,2812,1921],{"class":135},[125,2814,2816,2818,2820],{"class":127,"line":2815},27,[125,2817,1927],{"class":131},[125,2819,1930],{"class":142},[125,2821,1933],{"class":135},[125,2823,2825],{"class":127,"line":2824},28,[125,2826,1939],{"class":135},[16,2828,2829],{},[19,2830],{"alt":21,"src":2831},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage970.webp",[16,2833,2834],{},[19,2835],{"alt":21,"src":2836},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage971.webp",[16,2838,2839],{},[19,2840],{"alt":21,"src":2841},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage972.webp",[16,2843,2844],{},"全局话题",[16,2846,2847],{},[19,2848],{"alt":21,"src":2849},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage973.webp",[16,2851,2852],{},[19,2853],{"alt":21,"src":2854},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage974.webp",[16,2856,2857],{},"相对话题",[16,2859,2860],{},[19,2861],{"alt":21,"src":2862},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage975.webp",[16,2864,2865],{},[19,2866],{"alt":21,"src":2867},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage976.webp",[16,2869,2870],{},"私有话题",[12,2872,2874],{"id":2873},"时间相关api","时间相关API",[16,2876,2877],{},[19,2878],{"alt":21,"src":2879},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage977.webp",[16,2881,2882],{},"发消息可以有消息头，消息头里有时间戳，接收方解析消息头，并把消息时间和当前时间进行比对，看是否延迟过高。",[16,2884,2885],{},"Rate是频率",[16,2887,2888],{},"Time是时刻",[16,2890,2891],{},"Duration是持续时间",[16,2893,2894],{},[19,2895],{"alt":21,"src":2896},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage978.webp",[29,2898],{},[16,2900,2901],{},[19,2902],{"alt":21,"src":2903},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage979.webp",[16,2905,2906],{},[19,2907],{"alt":21,"src":2908},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage980.webp",[16,2910,2911],{},[19,2912],{"alt":21,"src":2913},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage981.webp",[16,2915,2916],{},[19,2917],{"alt":21,"src":2918},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage982.webp",[16,2920,2921],{},"这个类的构造函数有两个重载，第一个是周期，第二个是频率。",[16,2923,2924],{},[19,2925],{"alt":21,"src":2926},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage983.webp",[16,2928,2929],{},[19,2930],{"alt":21,"src":2931},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage984.webp",[16,2933,2934],{},[19,2935],{"alt":21,"src":2936},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage985.webp",[116,2938,2940],{"className":1695,"code":2939,"language":1697,"meta":21,"style":21},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nusing namespace std::chrono_literals;\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"time_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"Hello World!\");\n      demo_rate();\n    }\n  private:\n    void demo_rate()\n    {\n      rclcpp::Rate rate1(500ms);\n      rclcpp::Rate rate2(1.0);\n      \u002F\u002F while(rclcpp::ok())\n      \u002F\u002F {\n      \u002F\u002F   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n      \u002F\u002F   rate1.sleep();\n      \u002F\u002F }\n      while(rclcpp::ok())\n      {\n        RCLCPP_INFO(this->get_logger(),\"休眠1000ms\");\n        rate2.sleep();\n      }\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CMyNode>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[122,2941,2942,2948,2952,2967,2971,2987,2991,2995,3010,3014,3032,3039,3043,3047,3058,3062,3083,3099,3105,3110,3115,3120,3125,3143,3148,3168,3178,3183,3187,3192,3197,3220,3225,3236,3241,3262,3267,3278,3283,3294,3303],{"__ignoreMap":21},[125,2943,2944,2946],{"class":127,"line":128},[125,2945,1704],{"class":131},[125,2947,1707],{"class":162},[125,2949,2950],{"class":127,"line":262},[125,2951,266],{"emptyLinePlaceholder":265},[125,2953,2954,2956,2958,2960,2962,2965],{"class":127,"line":269},[125,2955,2575],{"class":131},[125,2957,1494],{"class":131},[125,2959,1874],{"class":252},[125,2961,1730],{"class":135},[125,2963,2964],{"class":252},"chrono_literals",[125,2966,1933],{"class":135},[125,2968,2969],{"class":127,"line":281},[125,2970,266],{"emptyLinePlaceholder":265},[125,2972,2973,2975,2977,2979,2981,2983,2985],{"class":127,"line":292},[125,2974,1716],{"class":131},[125,2976,1719],{"class":252},[125,2978,1215],{"class":135},[125,2980,1724],{"class":131},[125,2982,1727],{"class":252},[125,2984,1730],{"class":135},[125,2986,1733],{"class":252},[125,2988,2989],{"class":127,"line":297},[125,2990,1738],{"class":135},[125,2992,2993],{"class":127,"line":312},[125,2994,1743],{"class":131},[125,2996,2997,2999,3001,3003,3005,3008],{"class":127,"line":325},[125,2998,1748],{"class":252},[125,3000,1751],{"class":135},[125,3002,1754],{"class":252},[125,3004,1757],{"class":135},[125,3006,3007],{"class":162},"\"time_node_cpp\"",[125,3009,901],{"class":135},[125,3011,3012],{"class":127,"line":338},[125,3013,1772],{"class":135},[125,3015,3016,3018,3020,3022,3024,3026,3028,3030],{"class":127,"line":350},[125,3017,1777],{"class":252},[125,3019,1757],{"class":135},[125,3021,1782],{"class":142},[125,3023,1785],{"class":135},[125,3025,1788],{"class":252},[125,3027,1791],{"class":135},[125,3029,1794],{"class":162},[125,3031,1797],{"class":135},[125,3033,3034,3037],{"class":127,"line":355},[125,3035,3036],{"class":252},"      demo_rate",[125,3038,1921],{"class":135},[125,3040,3041],{"class":127,"line":361},[125,3042,1802],{"class":135},[125,3044,3045],{"class":127,"line":366},[125,3046,2698],{"class":131},[125,3048,3049,3052,3055],{"class":127,"line":376},[125,3050,3051],{"class":131},"    void",[125,3053,3054],{"class":252}," demo_rate",[125,3056,3057],{"class":135},"()\n",[125,3059,3060],{"class":127,"line":386},[125,3061,1772],{"class":135},[125,3063,3064,3067,3070,3073,3075,3078,3081],{"class":127,"line":398},[125,3065,3066],{"class":252},"      rclcpp",[125,3068,3069],{"class":135},"::Rate ",[125,3071,3072],{"class":252},"rate1",[125,3074,1757],{"class":135},[125,3076,3077],{"class":142},"500",[125,3079,3080],{"class":131},"ms",[125,3082,1797],{"class":135},[125,3084,3085,3087,3089,3092,3094,3097],{"class":127,"line":410},[125,3086,3066],{"class":252},[125,3088,3069],{"class":135},[125,3090,3091],{"class":252},"rate2",[125,3093,1757],{"class":135},[125,3095,3096],{"class":142},"1.0",[125,3098,1797],{"class":135},[125,3100,3101],{"class":127,"line":422},[125,3102,3104],{"class":3103},"sJ8bj","      \u002F\u002F while(rclcpp::ok())\n",[125,3106,3107],{"class":127,"line":1906},[125,3108,3109],{"class":3103},"      \u002F\u002F {\n",[125,3111,3112],{"class":127,"line":1911},[125,3113,3114],{"class":3103},"      \u002F\u002F   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n",[125,3116,3117],{"class":127,"line":1924},[125,3118,3119],{"class":3103},"      \u002F\u002F   rate1.sleep();\n",[125,3121,3122],{"class":127,"line":1936},[125,3123,3124],{"class":3103},"      \u002F\u002F }\n",[125,3126,3127,3130,3132,3135,3137,3140],{"class":127,"line":2464},[125,3128,3129],{"class":131},"      while",[125,3131,1757],{"class":135},[125,3133,3134],{"class":252},"rclcpp",[125,3136,1730],{"class":135},[125,3138,3139],{"class":252},"ok",[125,3141,3142],{"class":135},"())\n",[125,3144,3145],{"class":127,"line":2470},[125,3146,3147],{"class":135},"      {\n",[125,3149,3150,3153,3155,3157,3159,3161,3163,3166],{"class":127,"line":2481},[125,3151,3152],{"class":252},"        RCLCPP_INFO",[125,3154,1757],{"class":135},[125,3156,1782],{"class":142},[125,3158,1785],{"class":135},[125,3160,1788],{"class":252},[125,3162,1791],{"class":135},[125,3164,3165],{"class":162},"\"休眠1000ms\"",[125,3167,1797],{"class":135},[125,3169,3170,3173,3176],{"class":127,"line":2804},[125,3171,3172],{"class":135},"        rate2.",[125,3174,3175],{"class":252},"sleep",[125,3177,1921],{"class":135},[125,3179,3180],{"class":127,"line":2815},[125,3181,3182],{"class":135},"      }\n",[125,3184,3185],{"class":127,"line":2824},[125,3186,1802],{"class":135},[125,3188,3190],{"class":127,"line":3189},29,[125,3191,1807],{"class":135},[125,3193,3195],{"class":127,"line":3194},30,[125,3196,266],{"emptyLinePlaceholder":265},[125,3198,3200,3202,3204,3206,3208,3210,3212,3214,3216,3218],{"class":127,"line":3199},31,[125,3201,1816],{"class":131},[125,3203,1819],{"class":252},[125,3205,1757],{"class":135},[125,3207,1816],{"class":131},[125,3209,1826],{"class":996},[125,3211,1829],{"class":135},[125,3213,1832],{"class":131},[125,3215,1835],{"class":131},[125,3217,1838],{"class":996},[125,3219,901],{"class":135},[125,3221,3223],{"class":127,"line":3222},32,[125,3224,1738],{"class":135},[125,3226,3228,3230,3232,3234],{"class":127,"line":3227},33,[125,3229,1849],{"class":252},[125,3231,1730],{"class":135},[125,3233,1854],{"class":252},[125,3235,1857],{"class":135},[125,3237,3239],{"class":127,"line":3238},34,[125,3240,266],{"emptyLinePlaceholder":265},[125,3242,3244,3246,3248,3250,3252,3254,3256,3258,3260],{"class":127,"line":3243},35,[125,3245,1866],{"class":131},[125,3247,1869],{"class":135},[125,3249,139],{"class":131},[125,3251,1874],{"class":252},[125,3253,1730],{"class":135},[125,3255,1879],{"class":252},[125,3257,1104],{"class":135},[125,3259,1884],{"class":252},[125,3261,1887],{"class":135},[125,3263,3265],{"class":127,"line":3264},36,[125,3266,266],{"emptyLinePlaceholder":265},[125,3268,3270,3272,3274,3276],{"class":127,"line":3269},37,[125,3271,1849],{"class":252},[125,3273,1730],{"class":135},[125,3275,1900],{"class":252},[125,3277,1903],{"class":135},[125,3279,3281],{"class":127,"line":3280},38,[125,3282,266],{"emptyLinePlaceholder":265},[125,3284,3286,3288,3290,3292],{"class":127,"line":3285},39,[125,3287,1849],{"class":252},[125,3289,1730],{"class":135},[125,3291,1918],{"class":252},[125,3293,1921],{"class":135},[125,3295,3297,3299,3301],{"class":127,"line":3296},40,[125,3298,1927],{"class":131},[125,3300,1930],{"class":142},[125,3302,1933],{"class":135},[125,3304,3306],{"class":127,"line":3305},41,[125,3307,1939],{"class":135},[29,3309],{},[16,3311,3312],{},[19,3313],{"alt":21,"src":3314},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage986.webp",[16,3316,3317],{},[19,3318],{"alt":21,"src":3319},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage987.webp",[16,3321,3322],{},[19,3323],{"alt":21,"src":3324},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage988.webp",[16,3326,3327],{},[19,3328],{"alt":21,"src":3329},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage989.webp",[16,3331,3332],{},"可以传入一个纳秒",[16,3334,3335],{},[19,3336],{"alt":21,"src":3337},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage990.webp",[16,3339,3340],{},"也可以传入一个秒和一个纳秒",[16,3342,3343],{},[19,3344],{"alt":21,"src":3345},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage991.webp",[16,3347,3348],{},"因为是int64_t类型的，所以我们后面加个L，这是5亿纳秒，也就是0.5秒。",[16,3350,3351],{},[19,3352],{"alt":21,"src":3353},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage992.webp",[16,3355,3356],{},"这样time2代表2.5秒。",[16,3358,3359],{},"获取当前时刻有两种方式，",[16,3361,3362],{},"一个是this->get_clock()->now()，",[16,3364,3365],{},"另一个是this->now();",[16,3367,3368],{},[19,3369],{"alt":21,"src":3370},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage993.webp",[16,3372,3373],{},[19,3374],{"alt":21,"src":3375},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage994.webp",[16,3377,3378],{},[19,3379],{"alt":21,"src":3380},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage995.webp",[16,3382,3383],{},[19,3384],{"alt":21,"src":3385},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage996.webp",[116,3387,3389],{"className":1695,"code":3388,"language":1697,"meta":21,"style":21},"#include \"rclcpp\u002Frclcpp.hpp\"\n\nusing namespace std::chrono_literals;\n\nclass MyNode: public rclcpp::Node\n{\n  public:\n    MyNode():Node(\"time_node_cpp\")\n    {\n      RCLCPP_INFO(this->get_logger(),\"Hello World!\");\n      \u002F\u002F demo_rate();\n      demo_time();\n    }\n  private:\n    void demo_rate()\n    {\n      rclcpp::Rate rate1(500ms);\n      rclcpp::Rate rate2(1.0);\n      \u002F\u002F while(rclcpp::ok())\n      \u002F\u002F {\n      \u002F\u002F   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n      \u002F\u002F   rate1.sleep();\n      \u002F\u002F }\n      while(rclcpp::ok())\n      {\n        RCLCPP_INFO(this->get_logger(),\"休眠1000ms\");\n        rate2.sleep();\n      }\n    }\n\n    void demo_time()\n    {\n      rclcpp::Time time1(500000000L);\n      rclcpp::Time time2(2,500000000L);\n      rclcpp::Time right_now_1 = this->get_clock()->now();\n      rclcpp::Time right_now_2 = this->now();\n\n      RCLCPP_INFO(this->get_logger(),\"s = %.2f , ns = %ld\",time1.seconds(),time1.nanoseconds());\n      RCLCPP_INFO(this->get_logger(),\"s = %.2f , ns = %ld\",time2.seconds(),time2.nanoseconds());\n      RCLCPP_INFO(this->get_logger(),\"s = %.2f , ns = %ld\",right_now_1.seconds(),right_now_1.nanoseconds());\n      RCLCPP_INFO(this->get_logger(),\"s = %.2f , ns = %ld\",right_now_2.seconds(),right_now_2.nanoseconds());\n    }\n};\n\nint main(int argc, char ** argv)\n{\n  rclcpp::init(argc,argv);\n\n  auto node = std::make_shared\u003CMyNode>();\n\n  rclcpp::spin(node);\n\n  rclcpp::shutdown();\n  return 0;\n}\n",[122,3390,3391,3397,3401,3415,3419,3435,3439,3443,3457,3461,3479,3484,3491,3495,3499,3507,3511,3527,3541,3545,3549,3553,3557,3561,3575,3579,3597,3605,3609,3613,3617,3626,3630,3650,3672,3696,3713,3717,3761,3797,3833,3869,3874,3879,3884,3907,3912,3923,3928,3949,3954,3965,3970,3981,3990],{"__ignoreMap":21},[125,3392,3393,3395],{"class":127,"line":128},[125,3394,1704],{"class":131},[125,3396,1707],{"class":162},[125,3398,3399],{"class":127,"line":262},[125,3400,266],{"emptyLinePlaceholder":265},[125,3402,3403,3405,3407,3409,3411,3413],{"class":127,"line":269},[125,3404,2575],{"class":131},[125,3406,1494],{"class":131},[125,3408,1874],{"class":252},[125,3410,1730],{"class":135},[125,3412,2964],{"class":252},[125,3414,1933],{"class":135},[125,3416,3417],{"class":127,"line":281},[125,3418,266],{"emptyLinePlaceholder":265},[125,3420,3421,3423,3425,3427,3429,3431,3433],{"class":127,"line":292},[125,3422,1716],{"class":131},[125,3424,1719],{"class":252},[125,3426,1215],{"class":135},[125,3428,1724],{"class":131},[125,3430,1727],{"class":252},[125,3432,1730],{"class":135},[125,3434,1733],{"class":252},[125,3436,3437],{"class":127,"line":297},[125,3438,1738],{"class":135},[125,3440,3441],{"class":127,"line":312},[125,3442,1743],{"class":131},[125,3444,3445,3447,3449,3451,3453,3455],{"class":127,"line":325},[125,3446,1748],{"class":252},[125,3448,1751],{"class":135},[125,3450,1754],{"class":252},[125,3452,1757],{"class":135},[125,3454,3007],{"class":162},[125,3456,901],{"class":135},[125,3458,3459],{"class":127,"line":338},[125,3460,1772],{"class":135},[125,3462,3463,3465,3467,3469,3471,3473,3475,3477],{"class":127,"line":350},[125,3464,1777],{"class":252},[125,3466,1757],{"class":135},[125,3468,1782],{"class":142},[125,3470,1785],{"class":135},[125,3472,1788],{"class":252},[125,3474,1791],{"class":135},[125,3476,1794],{"class":162},[125,3478,1797],{"class":135},[125,3480,3481],{"class":127,"line":355},[125,3482,3483],{"class":3103},"      \u002F\u002F demo_rate();\n",[125,3485,3486,3489],{"class":127,"line":361},[125,3487,3488],{"class":252},"      demo_time",[125,3490,1921],{"class":135},[125,3492,3493],{"class":127,"line":366},[125,3494,1802],{"class":135},[125,3496,3497],{"class":127,"line":376},[125,3498,2698],{"class":131},[125,3500,3501,3503,3505],{"class":127,"line":386},[125,3502,3051],{"class":131},[125,3504,3054],{"class":252},[125,3506,3057],{"class":135},[125,3508,3509],{"class":127,"line":398},[125,3510,1772],{"class":135},[125,3512,3513,3515,3517,3519,3521,3523,3525],{"class":127,"line":410},[125,3514,3066],{"class":252},[125,3516,3069],{"class":135},[125,3518,3072],{"class":252},[125,3520,1757],{"class":135},[125,3522,3077],{"class":142},[125,3524,3080],{"class":131},[125,3526,1797],{"class":135},[125,3528,3529,3531,3533,3535,3537,3539],{"class":127,"line":422},[125,3530,3066],{"class":252},[125,3532,3069],{"class":135},[125,3534,3091],{"class":252},[125,3536,1757],{"class":135},[125,3538,3096],{"class":142},[125,3540,1797],{"class":135},[125,3542,3543],{"class":127,"line":1906},[125,3544,3104],{"class":3103},[125,3546,3547],{"class":127,"line":1911},[125,3548,3109],{"class":3103},[125,3550,3551],{"class":127,"line":1924},[125,3552,3114],{"class":3103},[125,3554,3555],{"class":127,"line":1936},[125,3556,3119],{"class":3103},[125,3558,3559],{"class":127,"line":2464},[125,3560,3124],{"class":3103},[125,3562,3563,3565,3567,3569,3571,3573],{"class":127,"line":2470},[125,3564,3129],{"class":131},[125,3566,1757],{"class":135},[125,3568,3134],{"class":252},[125,3570,1730],{"class":135},[125,3572,3139],{"class":252},[125,3574,3142],{"class":135},[125,3576,3577],{"class":127,"line":2481},[125,3578,3147],{"class":135},[125,3580,3581,3583,3585,3587,3589,3591,3593,3595],{"class":127,"line":2804},[125,3582,3152],{"class":252},[125,3584,1757],{"class":135},[125,3586,1782],{"class":142},[125,3588,1785],{"class":135},[125,3590,1788],{"class":252},[125,3592,1791],{"class":135},[125,3594,3165],{"class":162},[125,3596,1797],{"class":135},[125,3598,3599,3601,3603],{"class":127,"line":2815},[125,3600,3172],{"class":135},[125,3602,3175],{"class":252},[125,3604,1921],{"class":135},[125,3606,3607],{"class":127,"line":2824},[125,3608,3182],{"class":135},[125,3610,3611],{"class":127,"line":3189},[125,3612,1802],{"class":135},[125,3614,3615],{"class":127,"line":3194},[125,3616,266],{"emptyLinePlaceholder":265},[125,3618,3619,3621,3624],{"class":127,"line":3199},[125,3620,3051],{"class":131},[125,3622,3623],{"class":252}," demo_time",[125,3625,3057],{"class":135},[125,3627,3628],{"class":127,"line":3222},[125,3629,1772],{"class":135},[125,3631,3632,3634,3637,3640,3642,3645,3648],{"class":127,"line":3227},[125,3633,3066],{"class":252},[125,3635,3636],{"class":135},"::Time ",[125,3638,3639],{"class":252},"time1",[125,3641,1757],{"class":135},[125,3643,3644],{"class":142},"500000000",[125,3646,3647],{"class":131},"L",[125,3649,1797],{"class":135},[125,3651,3652,3654,3656,3659,3661,3664,3666,3668,3670],{"class":127,"line":3238},[125,3653,3066],{"class":252},[125,3655,3636],{"class":135},[125,3657,3658],{"class":252},"time2",[125,3660,1757],{"class":135},[125,3662,3663],{"class":142},"2",[125,3665,1005],{"class":135},[125,3667,3644],{"class":142},[125,3669,3647],{"class":131},[125,3671,1797],{"class":135},[125,3673,3674,3676,3679,3681,3683,3685,3688,3691,3694],{"class":127,"line":3243},[125,3675,3066],{"class":252},[125,3677,3678],{"class":135},"::Time right_now_1 ",[125,3680,139],{"class":131},[125,3682,2666],{"class":142},[125,3684,1785],{"class":135},[125,3686,3687],{"class":252},"get_clock",[125,3689,3690],{"class":135},"()->",[125,3692,3693],{"class":252},"now",[125,3695,1921],{"class":135},[125,3697,3698,3700,3703,3705,3707,3709,3711],{"class":127,"line":3264},[125,3699,3066],{"class":252},[125,3701,3702],{"class":135},"::Time right_now_2 ",[125,3704,139],{"class":131},[125,3706,2666],{"class":142},[125,3708,1785],{"class":135},[125,3710,3693],{"class":252},[125,3712,1921],{"class":135},[125,3714,3715],{"class":127,"line":3269},[125,3716,266],{"emptyLinePlaceholder":265},[125,3718,3719,3721,3723,3725,3727,3729,3731,3734,3737,3740,3743,3746,3749,3752,3755,3758],{"class":127,"line":3280},[125,3720,1777],{"class":252},[125,3722,1757],{"class":135},[125,3724,1782],{"class":142},[125,3726,1785],{"class":135},[125,3728,1788],{"class":252},[125,3730,1791],{"class":135},[125,3732,3733],{"class":162},"\"s = ",[125,3735,3736],{"class":142},"%.2f",[125,3738,3739],{"class":162}," , ns = ",[125,3741,3742],{"class":142},"%ld",[125,3744,3745],{"class":162},"\"",[125,3747,3748],{"class":135},",time1.",[125,3750,3751],{"class":252},"seconds",[125,3753,3754],{"class":135},"(),time1.",[125,3756,3757],{"class":252},"nanoseconds",[125,3759,3760],{"class":135},"());\n",[125,3762,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3788,3790,3793,3795],{"class":127,"line":3285},[125,3764,1777],{"class":252},[125,3766,1757],{"class":135},[125,3768,1782],{"class":142},[125,3770,1785],{"class":135},[125,3772,1788],{"class":252},[125,3774,1791],{"class":135},[125,3776,3733],{"class":162},[125,3778,3736],{"class":142},[125,3780,3739],{"class":162},[125,3782,3742],{"class":142},[125,3784,3745],{"class":162},[125,3786,3787],{"class":135},",time2.",[125,3789,3751],{"class":252},[125,3791,3792],{"class":135},"(),time2.",[125,3794,3757],{"class":252},[125,3796,3760],{"class":135},[125,3798,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3824,3826,3829,3831],{"class":127,"line":3296},[125,3800,1777],{"class":252},[125,3802,1757],{"class":135},[125,3804,1782],{"class":142},[125,3806,1785],{"class":135},[125,3808,1788],{"class":252},[125,3810,1791],{"class":135},[125,3812,3733],{"class":162},[125,3814,3736],{"class":142},[125,3816,3739],{"class":162},[125,3818,3742],{"class":142},[125,3820,3745],{"class":162},[125,3822,3823],{"class":135},",right_now_1.",[125,3825,3751],{"class":252},[125,3827,3828],{"class":135},"(),right_now_1.",[125,3830,3757],{"class":252},[125,3832,3760],{"class":135},[125,3834,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3860,3862,3865,3867],{"class":127,"line":3305},[125,3836,1777],{"class":252},[125,3838,1757],{"class":135},[125,3840,1782],{"class":142},[125,3842,1785],{"class":135},[125,3844,1788],{"class":252},[125,3846,1791],{"class":135},[125,3848,3733],{"class":162},[125,3850,3736],{"class":142},[125,3852,3739],{"class":162},[125,3854,3742],{"class":142},[125,3856,3745],{"class":162},[125,3858,3859],{"class":135},",right_now_2.",[125,3861,3751],{"class":252},[125,3863,3864],{"class":135},"(),right_now_2.",[125,3866,3757],{"class":252},[125,3868,3760],{"class":135},[125,3870,3872],{"class":127,"line":3871},42,[125,3873,1802],{"class":135},[125,3875,3877],{"class":127,"line":3876},43,[125,3878,1807],{"class":135},[125,3880,3882],{"class":127,"line":3881},44,[125,3883,266],{"emptyLinePlaceholder":265},[125,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905],{"class":127,"line":3886},45,[125,3888,1816],{"class":131},[125,3890,1819],{"class":252},[125,3892,1757],{"class":135},[125,3894,1816],{"class":131},[125,3896,1826],{"class":996},[125,3898,1829],{"class":135},[125,3900,1832],{"class":131},[125,3902,1835],{"class":131},[125,3904,1838],{"class":996},[125,3906,901],{"class":135},[125,3908,3910],{"class":127,"line":3909},46,[125,3911,1738],{"class":135},[125,3913,3915,3917,3919,3921],{"class":127,"line":3914},47,[125,3916,1849],{"class":252},[125,3918,1730],{"class":135},[125,3920,1854],{"class":252},[125,3922,1857],{"class":135},[125,3924,3926],{"class":127,"line":3925},48,[125,3927,266],{"emptyLinePlaceholder":265},[125,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947],{"class":127,"line":3930},49,[125,3932,1866],{"class":131},[125,3934,1869],{"class":135},[125,3936,139],{"class":131},[125,3938,1874],{"class":252},[125,3940,1730],{"class":135},[125,3942,1879],{"class":252},[125,3944,1104],{"class":135},[125,3946,1884],{"class":252},[125,3948,1887],{"class":135},[125,3950,3952],{"class":127,"line":3951},50,[125,3953,266],{"emptyLinePlaceholder":265},[125,3955,3957,3959,3961,3963],{"class":127,"line":3956},51,[125,3958,1849],{"class":252},[125,3960,1730],{"class":135},[125,3962,1900],{"class":252},[125,3964,1903],{"class":135},[125,3966,3968],{"class":127,"line":3967},52,[125,3969,266],{"emptyLinePlaceholder":265},[125,3971,3973,3975,3977,3979],{"class":127,"line":3972},53,[125,3974,1849],{"class":252},[125,3976,1730],{"class":135},[125,3978,1918],{"class":252},[125,3980,1921],{"class":135},[125,3982,3984,3986,3988],{"class":127,"line":3983},54,[125,3985,1927],{"class":131},[125,3987,1930],{"class":142},[125,3989,1933],{"class":135},[125,3991,3993],{"class":127,"line":3992},55,[125,3994,1939],{"class":135},[29,3996],{},[16,3998,3999],{},[19,4000],{"alt":21,"src":4001},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage997.webp",[16,4003,4004],{},[19,4005],{"alt":21,"src":4006},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage998.webp",[16,4008,4009],{},[19,4010],{"alt":21,"src":4011},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage999.webp",[16,4013,4014],{},"和Time类似",[16,4016,4017],{},"但是不完全相同，这个duration用到了chrono。",[16,4019,4020],{},[19,4021],{"alt":21,"src":4022},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1000.webp",[16,4024,4025],{},[19,4026],{"alt":21,"src":4027},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1001.webp",[16,4029,4030],{},[19,4031],{"alt":21,"src":4032},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1002.webp",[29,4034],{},[16,4036,4037],{},[19,4038],{"alt":21,"src":4039},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1003.webp",[16,4041,4042],{},[19,4043],{"alt":21,"src":4044},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1004.webp",[16,4046,4047],{},[19,4048],{"alt":21,"src":4049},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1005.webp",[16,4051,4052],{},"t2和t1可以进行相减，结果是一个duration类型的，但是不能相加。",[16,4054,4055],{},"time也可以和duration相加相减，结果是一个time。",[16,4057,4058],{},[19,4059],{"alt":21,"src":4060},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1006.webp",[16,4062,4063],{},[19,4064],{"alt":21,"src":4065},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1007.webp",[16,4067,4068],{},[19,4069],{"alt":21,"src":4070},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1008.webp",[16,4072,4073],{},[19,4074],{"alt":21,"src":4075},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1009.webp",[16,4077,4078],{},[19,4079],{"alt":21,"src":4080},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1010.webp",[16,4082,4083],{},[19,4084],{"alt":21,"src":4085},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1011.webp",[12,4087,4088],{"id":4088},"通信机制工具",[4090,4091,4092],"h4",{"id":4092},"命令行",[16,4094,4095],{},[19,4096],{"alt":21,"src":4097},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1012.webp",[16,4099,4100],{},[19,4101],{"alt":21,"src":4102},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1013.webp",[29,4104],{},[16,4106,4107],{},[19,4108],{"alt":21,"src":4109},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1014.webp",[16,4111,4112],{},"ros2 doctor是来检测系统网络状态、版本兼容性等状态的。",[16,4114,4115],{},[19,4116],{"alt":21,"src":4117},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1015.webp",[16,4119,4120],{},[19,4121],{"alt":21,"src":4122},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1016.webp",[16,4124,4125],{},"是通过了的，但是有几个警告：版本过低，不影响正常使用。",[16,4127,4128],{},[19,4129],{"alt":21,"src":4130},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1017.webp",[16,4132,4133],{},[19,4134],{"alt":21,"src":4135},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1018.webp",[16,4137,4138],{},[19,4139],{"alt":21,"src":4140},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1019.webp",[16,4142,4143],{},[19,4144],{"alt":21,"src":4145},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1020.webp",[16,4147,4148],{},[19,4149],{"alt":21,"src":4150},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1021.webp",[16,4152,4153],{},"参数服务端的本质还是服务端，所以也会列在Service Servers里。",[29,4155],{},[16,4157,4158],{},[19,4159],{"alt":21,"src":4160},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1022.webp",[16,4162,4163],{},[19,4164],{"alt":21,"src":4165},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1023.webp",[16,4167,4168],{},"如果查看list发现有一些接口文件没显示，那说明你的这个终端的环境变量没刷新。",[16,4170,4171],{},[19,4172],{"alt":21,"src":4173},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1024.webp",[16,4175,4176],{},[19,4177],{"alt":21,"src":4178},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1025.webp",[16,4180,4181],{},"proto比show更精简一些。",[29,4183],{},[16,4185,4186],{},[19,4187],{"alt":21,"src":4188},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1026.webp",[16,4190,4191],{},[19,4192],{"alt":21,"src":4193},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1027.webp",[16,4195,4196],{},"pose是发送位姿的，会一直发数据。",[16,4198,4199],{},[19,4200],{"alt":21,"src":4201},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1028.webp",[16,4203,4204],{},[19,4205],{"alt":21,"src":4206},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1029.webp",[16,4208,4209],{},[19,4210],{"alt":21,"src":4211},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1030.webp",[16,4213,4214],{},[80,4215,4216],{},"想输出延时，消息必须有消息头。",[16,4218,4219],{},[19,4220],{"alt":21,"src":4221},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1031.webp",[16,4223,4224],{},"输出实时位姿",[16,4226,4227],{},[19,4228],{"alt":21,"src":4229},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1032.webp",[16,4231,4232],{},[19,4233],{"alt":21,"src":4234},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1033.webp",[16,4236,4237],{},"find和type是相反着来的。",[16,4239,4240],{},[19,4241],{"alt":21,"src":4242},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1034.webp",[16,4244,4245],{},"消息发布频率是不断变动的，消息频率是可以通过定时器来控制，但是定时器是有误差的，并不是特别特别精准。当然还有网络也是一大影响因素。",[16,4247,4248],{},[19,4249],{"alt":21,"src":4250},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1035.webp",[16,4252,4253],{},"ros2 topic pub -r 发布消息的频率 话题名称 消息 具体的指令（要用json格式）",[16,4255,4256],{},[19,4257],{"alt":21,"src":4258},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1036.webp",[16,4260,4261],{},[19,4262],{"alt":21,"src":4263},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1037.webp",[16,4265,4266],{},[19,4267],{"alt":21,"src":4268},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1038.webp",[16,4270,4271],{},[19,4272],{"alt":21,"src":4273},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1039.webp",[29,4275],{},[16,4277,4278],{},[19,4279],{"alt":21,"src":4280},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1040.webp",[16,4282,4283],{},[19,4284],{"alt":21,"src":4285},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1041.webp",[16,4287,4288],{},"clear是清除乌龟轨迹",[16,4290,4291],{},"kill是杀乌龟",[16,4293,4294],{},"reset是将乌龟位置重置",[16,4296,4297],{},"spawn是产卵，生成新乌龟",[16,4299,4300],{},[19,4301],{"alt":21,"src":4302},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1042.webp",[16,4304,4305],{},"可以按Tab补齐",[16,4307,4308],{},[19,4309],{"alt":21,"src":4310},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1043.webp",[16,4312,4313],{},[19,4314],{"alt":21,"src":4315},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1044.webp",[16,4317,4318],{},"type和find是相反的",[16,4320,4321],{},[19,4322],{"alt":21,"src":4323},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1045.webp",[16,4325,4326],{},"empty就是空，所以我们后面内容啥都不用写。",[16,4328,4329],{},[19,4330],{"alt":21,"src":4331},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1046.webp",[16,4333,4334],{},[19,4335],{"alt":21,"src":4336},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1047.webp",[29,4338],{},[16,4340,4341],{},[19,4342],{"alt":21,"src":4343},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1048.webp",[16,4345,4346,4349],{},[19,4347],{"alt":21,"src":4348},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1049.webp",[19,4350],{"alt":21,"src":4351},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1050.webp",[16,4353,4354],{},[19,4355],{"alt":21,"src":4356},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1051.webp",[16,4358,4359],{},"可以加上-f或者-feedback打开连续反馈，这个连续反馈是航向角弧度",[16,4361,4362,4365],{},[19,4363],{"alt":21,"src":4364},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1052.webp",[19,4366],{"alt":21,"src":4367},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1053.webp",[29,4369],{},[16,4371,4372],{},[19,4373],{"alt":21,"src":4374},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1054.webp",[16,4376,4377],{},[19,4378],{"alt":21,"src":4379},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1055.webp",[16,4381,4382],{},[19,4383],{"alt":21,"src":4384},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1056.webp",[16,4386,4387],{},[19,4388],{"alt":21,"src":4389},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1057.webp",[16,4391,4392],{},[19,4393],{"alt":21,"src":4394},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1058.webp",[16,4396,4397],{},"删除不是所有参数都能删除，这里提示不能删除静态类型参数。",[16,4399,4400],{},[19,4401],{"alt":21,"src":4402},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1059.webp",[16,4404,4405],{},"最大值255，最小取值0",[16,4407,4408],{},"步长1",[16,4410,4411],{},[19,4412],{"alt":21,"src":4413},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1060.webp",[16,4415,4416],{},"可以显示在终端上，",[16,4418,4419],{},[19,4420],{"alt":21,"src":4421},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1061.webp",[16,4423,4424],{},[19,4425],{"alt":21,"src":4426},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1062.webp",[16,4428,4429],{},"也可以写入磁盘",[16,4431,4432],{},[19,4433],{"alt":21,"src":4434},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1063.webp",[16,4436,4437],{},[19,4438],{"alt":21,"src":4439},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1064.webp",[16,4441,4442],{},"当然也可以修改",[16,4444,4445],{},[19,4446],{"alt":21,"src":4447},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1065.webp",[16,4449,4450],{},[19,4451],{"alt":21,"src":4452},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1066.webp",[16,4454,4455],{},[19,4456],{"alt":21,"src":4457},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1067.webp",[16,4459,4460],{},[19,4461],{"alt":21,"src":4462},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1068.webp",[16,4464,4465],{},[19,4466],{"alt":21,"src":4467},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1069.webp",[16,4469,4470],{},"也可以用ROS2 RUN来修改，--ros-args -p 后面跟 键:=值",[16,4472,4473],{},[19,4474],{"alt":21,"src":4475},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1070.webp",[16,4477,4478],{},[19,4479],{"alt":21,"src":4480},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1071.webp",[16,4482,4483],{},[19,4484],{"alt":21,"src":4485},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1072.webp",[16,4487,4488],{},"ROS2 RUN也可以直接读取磁盘文件",[16,4490,4491],{},[19,4492],{"alt":21,"src":4493},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1073.webp",[4090,4495,4497],{"id":4496},"rqt工具箱","Rqt工具箱",[16,4499,4500],{},[19,4501],{"alt":21,"src":4502},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1074.webp",[16,4504,4505],{},[19,4506],{"alt":21,"src":4507},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1075.webp",[16,4509,4510],{},[19,4511],{"alt":21,"src":4512},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1076.webp",[16,4514,4515],{},[19,4516],{"alt":21,"src":4517},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1077.webp",[16,4519,4520],{},[19,4521],{"alt":21,"src":4522},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1078.webp",[16,4524,4525],{},[19,4526],{"alt":21,"src":4527},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1079.webp",[16,4529,4530],{},[19,4531],{"alt":21,"src":4532},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1080.webp",[29,4534],{},[16,4536,4537],{},[19,4538],{"alt":21,"src":4539},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1081.webp",[16,4541,4542],{},[19,4543],{"alt":21,"src":4544},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1082.webp",[16,4546,4547],{},"这个是显示两个节点之间关系的。",[29,4549],{},[16,4551,4552],{},[19,4553],{"alt":21,"src":4554},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1083.webp",[16,4556,4557],{},[19,4558],{"alt":21,"src":4559},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1084.webp",[16,4561,4562],{},"这个是用来发布消息的。",[16,4564,4565],{},[19,4566],{"alt":21,"src":4567},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1085.webp",[16,4569,4570],{},"点击添加按钮",[16,4572,4573],{},[19,4574],{"alt":21,"src":4575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1086.webp",[16,4577,4578],{},"可以设置线速度和角速度，频率等",[16,4580,4581],{},[19,4582],{"alt":21,"src":4583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1087.webp",[16,4585,4586],{},"设置好参数后勾选",[16,4588,4589],{},[19,4590],{"alt":21,"src":4591},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1088.webp",[16,4593,4594],{},[19,4595],{"alt":21,"src":4596},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1089.webp",[29,4598],{},[16,4600,4601],{},[19,4602],{"alt":21,"src":4603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1090.webp",[16,4605,4606],{},[19,4607],{"alt":21,"src":4608},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1091.webp",[16,4610,4611],{},"call \u002Fclear这个是清除轨迹的。",[16,4613,4614],{},[19,4615],{"alt":21,"src":4616},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1092.webp",[16,4618,4619],{},"也可以产卵，设置好参数",[16,4621,4622],{},[19,4623],{"alt":21,"src":4624},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1093.webp",[16,4626,4627],{},[19,4628],{"alt":21,"src":4629},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1094.webp",[29,4631],{},[16,4633,4634],{},[19,4635],{"alt":21,"src":4636},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1095.webp",[16,4638,4639],{},"这个可以直接修改参数",[16,4641,4642],{},[19,4643],{"alt":21,"src":4644},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F30\u002Fimage1096.webp",[29,4646],{},[16,4648,4649],{},"我们不能用rqt代替命令行，虽然rqt更方便，但是因为我们在工作中是远程控制机器人的，我们是通过terminal来远程控制机器人，所以，命令行很重要，这样不能使用rqt。",[4651,4652,4653],"style",{},"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 .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}",{"title":21,"searchDepth":262,"depth":262,"links":4655},[4656,4657,4658,4659,4660,4661,4662,4663],{"id":14,"depth":269,"text":14},{"id":76,"depth":269,"text":76},{"id":488,"depth":269,"text":488},{"id":541,"depth":269,"text":541},{"id":662,"depth":269,"text":662},{"id":1962,"depth":269,"text":1962},{"id":2873,"depth":269,"text":2874},{"id":4088,"depth":269,"text":4088},0,"0500","2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi",{"title":5,"description":21},"wiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","u_4_w4771wT7LyksJ0Z9AEncHqqLL4ei4gY5JxLGcvo",[4678,4684,4690,4696,4702,4704,4710,4716,4722,4728,4734,4740,4746,4752,4758,4764,4770,4776,4782,4788,4794,4800,4806,4812,4818,4824,4830,4836,4842,4848,4854,4860,4866,4872,4878,4883,4889,4894,4900,4906,4912,4918,4924,4930,4936,4941,4947,4953,4959,4965,4971,4977,4983,4989,4995,5001,5007,5013,5019,5025,5031,5037,5043,5049,5055,5061,5067,5073,5079],{"path":4679,"stem":4680,"title":4681,"authors":4682,"date":4666,"chapterOrder":4683,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介绍",[7],"0100",{"path":4685,"stem":4686,"title":4687,"authors":4688,"date":4666,"chapterOrder":4689,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入门操作",[7],"0200",{"path":4691,"stem":4692,"title":4693,"authors":4694,"date":4666,"chapterOrder":4695,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空间与功能包",[7],"0300",{"path":4697,"stem":4698,"title":4699,"authors":4700,"date":4666,"chapterOrder":4701,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信",[7],"0400",{"path":4673,"stem":4675,"title":5,"authors":4703,"date":4666,"chapterOrder":4665,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},[7],{"path":4705,"stem":4706,"title":4707,"authors":4708,"date":4666,"chapterOrder":4709,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","wiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch",[7],"0600",{"path":4711,"stem":4712,"title":4713,"authors":4714,"date":4666,"chapterOrder":4715,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2",[7],"0700",{"path":4717,"stem":4718,"title":4719,"authors":4720,"date":4666,"chapterOrder":4721,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","坐标变换TF",[7],"0800",{"path":4723,"stem":4724,"title":4725,"authors":4726,"date":4666,"chapterOrder":4727,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","wiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可视化平台RVIZ2与URDF建模语言",[7],"0900",{"path":4729,"stem":4730,"title":4731,"authors":4732,"date":4666,"chapterOrder":4733,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台",[7],"1000",{"path":4735,"stem":4736,"title":4737,"authors":4738,"date":4666,"chapterOrder":4739,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic",[7],"1100-0100",{"path":4741,"stem":4742,"title":4743,"authors":4744,"date":4666,"chapterOrder":4745,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）",[7],"1100-0200",{"path":4747,"stem":4748,"title":4749,"authors":4750,"date":4666,"chapterOrder":4751,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）",[7],"1100-0300",{"path":4753,"stem":4754,"title":4755,"authors":4756,"date":4666,"chapterOrder":4757,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim",[7],"1100-0400",{"path":4759,"stem":4760,"title":4761,"authors":4762,"date":4666,"chapterOrder":4763,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台",[7],"1100",{"path":4765,"stem":4766,"title":4767,"authors":4768,"date":4666,"chapterOrder":4769,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble导航仿真",[7],"1200-0100",{"path":4771,"stem":4772,"title":4773,"authors":4774,"date":4666,"chapterOrder":4775,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy导航仿真",[7],"1200-0200",{"path":4777,"stem":4778,"title":4779,"authors":4780,"date":4666,"chapterOrder":4781,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble与Jazzy导航的差异",[7],"1200-0300",{"path":4783,"stem":4784,"title":4785,"authors":4786,"date":4666,"chapterOrder":4787,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-you-xian-zhuang-tai-ji-fsm","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0100-有限状态机FSM","有限状态机（Finite State Machine）",[7],"1200-0400-0100",{"path":4789,"stem":4790,"title":4791,"authors":4792,"date":4666,"chapterOrder":4793,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-ji-ben-gai-nian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0100-基本概念","基本概念",[7],"1200-0400-0200-0100",{"path":4795,"stem":4796,"title":4797,"authors":4798,"date":4666,"chapterOrder":4799,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-kong-zhi-yu-zhuang-shi-gui-ze","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0200-控制与装饰规则","控制与装饰规则",[7],"1200-0400-0200-0200",{"path":4801,"stem":4802,"title":4803,"authors":4804,"date":4666,"chapterOrder":4805,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-di-yi-ge-wan-zheng-cheng-xu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0300-第一个完整程序","第一个完整程序",[7],"1200-0400-0200-0300",{"path":4807,"stem":4808,"title":4809,"authors":4810,"date":4666,"chapterOrder":4811,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-jie-dian-zhi-jian-chuan-shu-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0400-节点之间传数据","节点之间传数据",[7],"1200-0400-0200-0400",{"path":4813,"stem":4814,"title":4815,"authors":4816,"date":4666,"chapterOrder":4817,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-chi-xu-ren-wu-yu-zhong-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0500-持续任务与中止","持续任务与中止",[7],"1200-0400-0200-0500",{"path":4819,"stem":4820,"title":4821,"authors":4822,"date":4666,"chapterOrder":4823,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-zu-he-shi-ji-ren-wu","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-0600-组合实际任务","组合实际任务",[7],"1200-0400-0200-0600",{"path":4825,"stem":4826,"title":4827,"authors":4828,"date":4666,"chapterOrder":4829,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-xing-wei-shu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-0200-行为树BT","行为树（BehaviorTree.CPP）",[7],"1200-0400-0200",{"path":4831,"stem":4832,"title":4833,"authors":4834,"date":4666,"chapterOrder":4835,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-fsm-yu-bt","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0400-FSM与BT","有限状态机FSM与行为树BT",[7],"1200-0400",{"path":4837,"stem":4838,"title":4839,"authors":4840,"date":4666,"chapterOrder":4841,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)",[7],"1200",{"path":4843,"stem":4844,"title":4845,"authors":4846,"date":4666,"chapterOrder":4847,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库",[7],"1300-0100-0100",{"path":4849,"stem":4850,"title":4851,"authors":4852,"date":4666,"chapterOrder":4853,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver库",[7],"1300-0100-0200",{"path":4855,"stem":4856,"title":4857,"authors":4858,"date":4666,"chapterOrder":4859,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信",[7],"1300-0100",{"path":4861,"stem":4862,"title":4863,"authors":4864,"date":4666,"chapterOrder":4865,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN",[7],"1300-0200-0100",{"path":4867,"stem":4868,"title":4869,"authors":4870,"date":4666,"chapterOrder":4871,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN",[7],"1300-0200-0200",{"path":4873,"stem":4874,"title":4875,"authors":4876,"date":4666,"chapterOrder":4877,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信",[7],"1300-0200",{"path":4879,"stem":4880,"title":4845,"authors":4881,"date":4666,"chapterOrder":4882,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso",[7],"1300-0300-0100",{"path":4884,"stem":4885,"title":4886,"authors":4887,"date":4666,"chapterOrder":4888,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信",[7],"1300-0300",{"path":4890,"stem":4891,"title":4845,"authors":4892,"date":4666,"chapterOrder":4893,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso",[7],"1300-0400-0100",{"path":4895,"stem":4896,"title":4897,"authors":4898,"date":4666,"chapterOrder":4899,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信",[7],"1300-0400",{"path":4901,"stem":4902,"title":4903,"authors":4904,"date":4666,"chapterOrder":4905,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信",[7],"1300",{"path":4907,"stem":4908,"title":4909,"authors":4910,"date":4666,"chapterOrder":4911,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","机器人组成",[7],"1400-0100",{"path":4913,"stem":4914,"title":4915,"authors":4916,"date":4666,"chapterOrder":4917,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","远程开发SSH",[7],"1400-0200-0100",{"path":4919,"stem":4920,"title":4921,"authors":4922,"date":4666,"chapterOrder":4923,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","远程访问桌面",[7],"1400-0200-0200",{"path":4925,"stem":4926,"title":4927,"authors":4928,"date":4666,"chapterOrder":4929,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控机之远程开发环境",[7],"1400-0200",{"path":4931,"stem":4932,"title":4933,"authors":4934,"date":4666,"chapterOrder":4935,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控机之外接USB设备",[7],"1400-0300",{"path":4937,"stem":4938,"title":76,"authors":4939,"date":4666,"chapterOrder":4940,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建",[7],"1400-0400",{"path":4942,"stem":4943,"title":4944,"authors":4945,"date":4666,"chapterOrder":4946,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","优化日志",[7],"1400-0500",{"path":4948,"stem":4949,"title":4950,"authors":4951,"date":4666,"chapterOrder":4952,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程计Odom",[7],"1400-0600-0100",{"path":4954,"stem":4955,"title":4956,"authors":4957,"date":4666,"chapterOrder":4958,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","惯性计IMU",[7],"1400-0600-0200",{"path":4960,"stem":4961,"title":4962,"authors":4963,"date":4666,"chapterOrder":4964,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷达LiDAR",[7],"1400-0600-0300",{"path":4966,"stem":4967,"title":4968,"authors":4969,"date":4666,"chapterOrder":4970,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相机Camera",[7],"1400-0600-0400",{"path":4972,"stem":4973,"title":4974,"authors":4975,"date":4666,"chapterOrder":4976,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS",[7],"1400-0600-0500",{"path":4978,"stem":4979,"title":4980,"authors":4981,"date":4666,"chapterOrder":4982,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY",[7],"1400-0600-0600",{"path":4984,"stem":4985,"title":4986,"authors":4987,"date":4666,"chapterOrder":4988,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","键盘控制节点",[7],"1400-0600-0700",{"path":4990,"stem":4991,"title":4992,"authors":4993,"date":4666,"chapterOrder":4994,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台",[7],"1400-0600",{"path":4996,"stem":4997,"title":4998,"authors":4999,"date":4666,"chapterOrder":5000,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","坐标系与话题关系",[7],"1400-0700",{"path":5002,"stem":5003,"title":5004,"authors":5005,"date":4666,"chapterOrder":5006,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","轮式里程计标定",[7],"1400-0800-0100-0100",{"path":5008,"stem":5009,"title":5010,"authors":5011,"date":4666,"chapterOrder":5012,"chapterDepth":269,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","轮式里程计与IMU融合",[7],"1400-0800-0100-0200",{"path":5014,"stem":5015,"title":5016,"authors":5017,"date":4666,"chapterOrder":5018,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","轮式里程计标定与融合",[7],"1400-0800-0100",{"path":5020,"stem":5021,"title":5022,"authors":5023,"date":4666,"chapterOrder":5024,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷达工具",[7],"1400-0800-0200",{"path":5026,"stem":5027,"title":5028,"authors":5029,"date":4666,"chapterOrder":5030,"chapterDepth":262,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相机使用进阶",[7],"1400-0800-0300",{"path":5032,"stem":5033,"title":5034,"authors":5035,"date":4666,"chapterOrder":5036,"chapterDepth":128,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台进阶",[7],"1400-0800",{"path":5038,"stem":5039,"title":5040,"authors":5041,"date":4666,"chapterOrder":5042,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","机器人硬件",[7],"1400",{"path":5044,"stem":5045,"title":5046,"authors":5047,"date":4666,"chapterOrder":5048,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control",[7],"1500",{"path":5050,"stem":5051,"title":5052,"authors":5053,"date":4666,"chapterOrder":5054,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂",[7],"1600",{"path":5056,"stem":5057,"title":5058,"authors":5059,"date":4666,"chapterOrder":5060,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)",[7],"1700",{"path":5062,"stem":5063,"title":5064,"authors":5065,"date":4666,"chapterOrder":5066,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","wiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS",[7],"1800",{"path":5068,"stem":5069,"title":5070,"authors":5071,"date":4666,"chapterOrder":5072,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台",[7],"1900",{"path":5074,"stem":5075,"title":5076,"authors":5077,"date":4666,"chapterOrder":5078,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":4671},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV",[7],"2000",{"path":4668,"stem":5080,"title":5081,"authors":5082,"date":4666,"chapterOrder":5083,"chapterDepth":4664,"docKey":4667,"docRoot":4668,"docTitle":4669,"isWikiDoc":265,"isWikiIndex":265},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",[7],null,[5085,5087,5090,5093],{"name":7,"image":5086},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":5088,"image":5089},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":5091,"image":5092},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":5094,"image":5095},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431901303]