[{"data":1,"prerenderedAt":5152},["ShallowReactive",2],{"wiki-page-/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi":3,"wiki-doc-items-/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi":4787,"language-switcher-data-/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi":5136,"wiki-i18n-paths-/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi":5151},{"id":4,"title":5,"body":6,"canonicalPath":4768,"chapter":4769,"chapterSort":4770,"date":4771,"description":20,"docI18nKey":4772,"docKey":4773,"docRoot":4774,"docTitle":4775,"extension":4776,"i18nKey":4777,"isBlogPost":4778,"isWikiDoc":293,"isWikiIndex":4778,"layout":4779,"legacyPath":4779,"locale":4780,"localeSlug":4781,"meta":4782,"navigation":293,"path":4768,"seo":4783,"sourcePath":4784,"sourceStem":4777,"stem":4785,"wikiDepth":128,"__hash__":4786},"content/_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制.md","ROS2 Other Communication Mechanisms",{"type":7,"value":8,"toc":4758},"minimark",[9,14,22,27,30,35,38,40,45,50,55,58,63,68,73,77,83,86,91,94,97,102,105,107,112,115,144,147,150,170,173,178,181,186,191,194,199,202,219,224,227,268,271,460,463,466,469,472,475,478,481,484,489,492,495,498,503,506,511,514,518,523,528,533,538,543,548,555,557,562,567,572,576,581,586,589,594,596,601,604,607,614,619,622,627,630,633,636,641,646,651,653,656,661,664,669,672,677,680,685,690,695,698,702,707,712,715,720,729,734,737,742,745,750,755,760,763,766,771,773,778,783,811,814,819,824,846,849,852,855,860,862,867,872,902,905,910,915,920,941,946,951,954,959,966,971,976,1074,1077,1080,1083,1088,1105,1110,1115,1117,1125,1128,1131,1136,1195,1200,1216,1218,1223,1228,1233,1284,1289,1305,1307,1312,1317,1322,1324,1327,1332,1473,1478,1586,1591,1702,1707,1709,1714,1719,1724,1729,1732,1737,1984,1989,1994,1999,2004,2008,2013,2018,2023,2025,2030,2035,2055,2057,2060,2065,2070,2075,2080,2085,2102,2105,2108,2113,2118,2121,2126,2129,2134,2144,2151,2154,2157,2162,2167,2169,2174,2180,2183,2188,2193,2198,2203,2208,2213,2218,2223,2233,2340,2345,2350,2353,2556,2561,2566,2568,2573,2578,2581,2586,2589,2592,2595,2600,2605,2610,2615,2893,2898,2903,2908,2911,2916,2921,2924,2929,2934,2937,2941,2946,2949,2952,2955,2958,2963,2965,2970,2975,2980,2985,2988,2993,2998,3003,3374,3376,3381,3386,3391,3396,3399,3404,3407,3412,3415,3420,3423,3426,3429,3432,3437,3442,3447,3452,4061,4063,4068,4073,4078,4081,4091,4096,4101,4106,4108,4113,4118,4123,4126,4137,4142,4147,4152,4157,4162,4167,4171,4176,4181,4186,4188,4193,4196,4201,4206,4209,4214,4219,4224,4229,4234,4237,4239,4244,4249,4252,4257,4262,4265,4267,4272,4277,4280,4285,4290,4295,4300,4305,4308,4313,4318,4327,4332,4335,4340,4343,4348,4353,4358,4363,4365,4370,4375,4378,4381,4384,4387,4392,4395,4400,4405,4412,4417,4420,4425,4430,4432,4437,4445,4450,4461,4469,4471,4476,4481,4486,4491,4496,4499,4504,4507,4510,4515,4518,4523,4528,4531,4536,4541,4544,4549,4554,4559,4564,4569,4572,4577,4582,4587,4590,4595,4599,4604,4609,4614,4619,4624,4629,4634,4636,4641,4646,4649,4651,4656,4661,4664,4669,4672,4677,4680,4685,4688,4693,4698,4700,4705,4710,4716,4721,4724,4729,4734,4736,4741,4744,4749,4751,4754],[10,11,13],"h3",{"id":12},"overview","Overview",[15,16,17],"p",{},[18,19],"img",{"alt":20,"src":21},"","https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image846.webp",[15,23,24],{},[18,25],{"alt":20,"src":26},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image847.webp",[28,29],"hr",{},[15,31,32],{},[18,33],{"alt":20,"src":34},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image848.webp",[15,36,37],{},"Communication between different devices is achieved through distribution.",[28,39],{},[15,41,42],{},[18,43],{"alt":20,"src":44},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image849.webp",[15,46,47],{},[18,48],{"alt":20,"src":49},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image850.webp",[15,51,52],{},[18,53],{"alt":20,"src":54},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image851.webp",[15,56,57],{},"Mirror Turtle",[15,59,60],{},[18,61],{"alt":20,"src":62},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image852.webp",[15,64,65],{},[18,66],{"alt":20,"src":67},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image853.webp",[15,69,70],{},[18,71],{"alt":20,"src":72},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image854.webp",[10,74,76],{"id":75},"distributed-setup","Distributed setup",[15,78,79],{},[80,81,82],"strong",{},"Scene",[15,84,85],{},"In many robot-related application scenarios, multiple ROS2 devices need to collaborate, such as in unmanned vehicle formations, drone swarms, remote control, and more. So how do different ROS2 devices communicate with each other?",[15,87,88],{},[80,89,90],{},"Concept",[15,92,93],{},"Distributed communication refers to a communication strategy that enables data exchange between different hosts over a network.",[15,95,96],{},"ROS2 itself is a distributed communication framework that makes it easy to enable communication between different devices. The middleware underlying ROS2 is DDS. When devices are on the same network, distributed communication can be achieved through DDS's domain ID mechanism (ROS_DOMAIN_ID). The general process is: before starting a node, you can set the domain ID value. If different nodes share the same domain ID, they can freely discover and communicate with each other. Conversely, if the domain ID values differ, communication is not possible. By default, all nodes use domain ID 0 when starting. In other words, as long as you are on the same network, you don't need to make any configuration — different nodes on different ROS2 devices can achieve distributed communication.",[15,98,99],{},[80,100,101],{},"Purpose",[15,103,104],{},"Distributed communication has a wide range of application scenarios, as mentioned above: during robot formation, a robot may need to obtain information about the speed, position, and trajectory of nearby robots; in remote control, the control terminal may need to acquire environmental data collected by the robot and send control commands... The exchange of this data all relies on distributed communication.",[28,106],{},[15,108,109],{},[80,110,111],{},"Implementation",[15,113,114],{},"During multi-machine communication, nodes can be grouped by domain ID. Nodes within the same group can communicate freely, while nodes in different groups cannot communicate with each other. If all nodes belong to the same group, the default domain ID can be used directly. To divide different nodes into multiple groups, you can set the domain ID of a node (for example, set it to 6) in the terminal before starting the node. The specific command to execute is:",[116,117,121],"pre",{"className":118,"code":119,"language":120,"meta":20,"style":20},"language-bash shiki shiki-themes github-light github-dark","export ROS_DOMAIN_ID=6\n","bash",[122,123,124],"code",{"__ignoreMap":20},[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",[15,145,146],{},"After executing the above command, the node will be assigned to domain ID 6.",[15,148,149],{},"If you want to set a unified domain ID for all nodes under the current device, you can execute the following command:",[116,151,153],{"className":118,"code":152,"language":120,"meta":20,"style":20},"echo \"export ROS_DOMAIN_ID=6\" >> ~/.bashrc\n",[122,154,155],{"__ignoreMap":20},[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}," ~/.bashrc\n",[15,171,172],{},"After execution, restart the terminal. All running nodes will be automatically assigned to the domain with ID 6.",[15,174,175],{},[18,176],{"alt":20,"src":177},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image855.webp",[15,179,180],{},"The default domain ID is 0. If the domain IDs differ, they cannot communicate with each other.",[15,182,183],{},[18,184],{"alt":20,"src":185},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image856.webp",[15,187,188],{},[18,189],{"alt":20,"src":190},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image857.webp",[15,192,193],{},"If the IDs are different, normal communication cannot occur, similar to how a ROS Master must be specified in ROS1.",[15,195,196],{},[80,197,198],{},"Note",[15,200,201],{},"When setting the value of ROS_DOMAIN_ID, it is not arbitrary; there are certain constraints to follow:",[203,204,205,213,216],"ol",{},[206,207,208,209,212],"li",{},"It is recommended that the value of ROS_DOMAIN_ID be in the range ",[125,210,211],{},"0, 101",", inclusive of 0 and 101.",[206,214,215],{},"The total number of nodes within each domain ID is limited to 120 or fewer.",[206,217,218],{},"If the domain ID is 101, the total number of nodes in that domain must be less than or equal to 54.",[15,220,221],{},[80,222,223],{},"DDS Domain ID Value Calculation Rules",[15,225,226],{},"The calculation rules for the domain ID value are as follows:",[203,228,229,236,246,262,265],{},[206,230,231,232,235],{},"DDS is based on the TCP/IP or UDP/IP network communication protocols. When communicating over a network, a port number must be specified. The port number is represented by a 2-byte unsigned integer, with a value range between ",[125,233,234],{},"0, 65535",".",[206,237,238,239,242,243,235],{},"Port number allocation follows specific rules and cannot be arbitrary. According to the DDS protocol, 7400 is designated as the starting port, meaning the available port range is ",[125,240,241],{},"7400, 65535",". It is also known that, by default under the DDS protocol, each domain ID occupies 250 ports. Therefore, the number of domain IDs is: (65535 - 7400) / 250 = 232, with a corresponding value range of ",[125,244,245],{},"0, 231",[206,247,248,249,251,252,255,256,259,260,235],{},"The operating system also reserves some ports. When using ports in DDS, these reserved ports must be avoided to prevent conflicts during use. Different operating systems have different reserved ports. As a result, on Linux, the available domain IDs are ",[125,250,211],{}," and ",[125,253,254],{},"215, 231",", while on Windows and Mac, the available domain IDs are ",[125,257,258],{},"0, 166",". In summary, for cross-platform compatibility, it is recommended to use domain IDs within the range ",[125,261,211],{},[206,263,264],{},"Each domain ID occupies 250 ports by default, and each ROS 2 node requires two ports. Additionally, according to the DDS protocol, within the port range of each domain ID, the first and second ports are the Discovery Multicast port and the User Multicast port. Starting from the 11th and 12th ports, these are the Discovery Unicast port and User Unicast port for the first node in the domain, with subsequent nodes occupying ports in sequence. Therefore, the maximum number of nodes in a single domain ID is: (250 - 10) / 2 = 120.",[206,266,267],{},"Special case: When the domain ID value is 101, the latter half of the ports are reserved by the operating system, and the maximum number of nodes is 54.",[15,269,270],{},"Just understand the above calculation rules.",[116,272,274],{"className":118,"code":273,"language":120,"meta":20,"style":20},"域 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,275,276,288,295,307,318,323,338,351,364,376,381,387,392,402,412,424,436,448],{"__ignoreMap":20},[125,277,278,282,285],{"class":127,"line":128},[125,279,281],{"class":280},"sScJk","域",[125,283,284],{"class":162}," ID",[125,286,287],{"class":162}," 与节点所占用端口示意\n",[125,289,291],{"class":127,"line":290},2,[125,292,294],{"emptyLinePlaceholder":293},true,"\n",[125,296,298,301,304],{"class":127,"line":297},3,[125,299,300],{"class":280},"Domain",[125,302,303],{"class":162}," ID:",[125,305,306],{"class":142},"      0\n",[125,308,310,313,315],{"class":127,"line":309},4,[125,311,312],{"class":280},"Participant",[125,314,303],{"class":162},[125,316,317],{"class":142}," 0\n",[125,319,321],{"class":127,"line":320},5,[125,322,294],{"emptyLinePlaceholder":293},[125,324,326,329,332,335],{"class":127,"line":325},6,[125,327,328],{"class":280},"Discovery",[125,330,331],{"class":162}," Multicast",[125,333,334],{"class":162}," Port:",[125,336,337],{"class":142}," 7400\n",[125,339,341,344,346,348],{"class":127,"line":340},7,[125,342,343],{"class":280},"User",[125,345,331],{"class":162},[125,347,334],{"class":162},[125,349,350],{"class":142},"      7401\n",[125,352,354,356,359,361],{"class":127,"line":353},8,[125,355,328],{"class":280},[125,357,358],{"class":162}," Unicast",[125,360,334],{"class":162},[125,362,363],{"class":142},"   7410\n",[125,365,367,369,371,373],{"class":127,"line":366},9,[125,368,343],{"class":280},[125,370,358],{"class":162},[125,372,334],{"class":162},[125,374,375],{"class":142},"        7411\n",[125,377,379],{"class":127,"line":378},10,[125,380,294],{"emptyLinePlaceholder":293},[125,382,384],{"class":127,"line":383},11,[125,385,386],{"class":280},"---\n",[125,388,390],{"class":127,"line":389},12,[125,391,294],{"emptyLinePlaceholder":293},[125,393,395,397,399],{"class":127,"line":394},13,[125,396,300],{"class":280},[125,398,303],{"class":162},[125,400,401],{"class":142},"      1\n",[125,403,405,407,409],{"class":127,"line":404},14,[125,406,312],{"class":280},[125,408,303],{"class":162},[125,410,411],{"class":142}," 2\n",[125,413,415,417,419,421],{"class":127,"line":414},15,[125,416,328],{"class":280},[125,418,331],{"class":162},[125,420,334],{"class":162},[125,422,423],{"class":142}," 7650\n",[125,425,427,429,431,433],{"class":127,"line":426},16,[125,428,343],{"class":280},[125,430,331],{"class":162},[125,432,334],{"class":162},[125,434,435],{"class":142},"      7651\n",[125,437,439,441,443,445],{"class":127,"line":438},17,[125,440,328],{"class":280},[125,442,358],{"class":162},[125,444,334],{"class":162},[125,446,447],{"class":142},"   7664\n",[125,449,451,453,455,457],{"class":127,"line":450},18,[125,452,343],{"class":280},[125,454,358],{"class":162},[125,456,334],{"class":162},[125,458,459],{"class":142},"        7665\n",[15,461,462],{},"Domain ID refers to the domain ID.",[15,464,465],{},"The Participant ID is the participant group ID, referring to which node within that domain.",[15,467,468],{},"Discovery Multicast Port: The main discovery port. Per DDS specification, the port should start at 7400.",[15,470,471],{},"Multicast Port",[15,473,474],{},"Discovery Unicast Port: 7410 is the Discovery Unicast port used by the first node. This is because, as specified by DDS, the 11th port is the Discovery Unicast port for the first node.",[15,476,477],{},"User Unicast Port: 7411 is the User Unicast port used by the first node, because according to the DDS specification, the 12th port is the User Unicast port for the first node.",[15,479,480],{},"The Discovery Unicast Port and User Unicast Port are the ports occupied by the first node, so a total of two ports are used.",[15,482,483],{},"If the Domain ID remains 0 and the Participant ID changes to 1, then the next node's Discovery Unicast Port becomes 7412, and the User Unicast Port becomes 7413.",[15,485,486],{},[18,487],{"alt":20,"src":488},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image858.webp",[15,490,491],{},"And so on.",[15,493,494],{},"A Domain ID occupies 250 ports, so when the Domain ID is 1, the Discovery Unicast Port should be 7650.",[15,496,497],{},"This is the third node, so it's 7664 and 7665.",[15,499,500],{},[18,501],{"alt":20,"src":502},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image859.webp",[15,504,505],{},"Practice: Run a ROS2 Jazzy on a Raspberry Pi 5 to start a keyboard control node, then run a ROS2 Humble on a physical Linux machine (or in Docker with proper network setup) and open the turtlesim display node.",[15,507,508],{},[18,509],{"alt":20,"src":510},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image860.webp",[15,512,513],{},"It can be seen that communication is working normally.",[10,515,517],{"id":516},"workspace-coverage","Workspace coverage",[15,519,520],{},[18,521],{"alt":20,"src":522},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image861.webp",[15,524,525],{},[18,526],{"alt":20,"src":527},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image862.webp",[15,529,530],{},[80,531,532],{},"Not very useful, it's recommended not to use it.",[15,534,535],{},[18,536],{"alt":20,"src":537},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image863.webp",[15,539,540],{},[18,541],{"alt":20,"src":542},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image864.webp",[15,544,545],{},[18,546],{"alt":20,"src":547},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image865.webp",[15,549,550,551,554],{},"This is related to the order in which bash files are loaded in your ",[122,552,553],{},".bashrc"," file. The one loaded last will be executed, meaning it has the highest priority. Except for the bash that comes with ROS2 itself, this bash has the lowest priority no matter where it is loaded.",[28,556],{},[15,558,559],{},[18,560],{"alt":20,"src":561},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image866.webp",[15,563,564],{},[18,565],{"alt":20,"src":566},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image867.webp",[15,568,569],{},[18,570],{"alt":20,"src":571},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image868.webp",[10,573,575],{"id":574},"meta-function-package","meta function package",[15,577,578],{},[18,579],{"alt":20,"src":580},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image869.webp",[15,582,583],{},[18,584],{"alt":20,"src":585},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image870.webp",[15,587,588],{},"distro means distribution.",[15,590,591],{},[18,592],{"alt":20,"src":593},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image871.webp",[28,595],{},[15,597,598],{},[18,599],{"alt":20,"src":600},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image872.webp",[15,602,603],{},"The default build type is C++.",[15,605,606],{},"--dependent defaults to none.",[15,608,609,610,613],{},"The ",[122,611,612],{},"--node-name"," itself is a virtual package, so there is no need to configure it.",[15,615,616],{},[18,617],{"alt":20,"src":618},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image873.webp",[15,620,621],{},"No changes needed for CMakeLists.",[15,623,624],{},[18,625],{"alt":20,"src":626},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image874.webp",[15,628,629],{},"First delete lines 12 and 13.",[15,631,632],{},"\u003Cexec_depend>xxxxxx\u003C/exec_depend>",[15,634,635],{},"The name of the required feature package",[15,637,638],{},[18,639],{"alt":20,"src":640},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image875.webp",[15,642,643],{},[18,644],{"alt":20,"src":645},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image876.webp",[15,647,648],{},[18,649],{"alt":20,"src":650},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image877.webp",[28,652],{},[15,654,655],{},"Meta-function packages that may be needed in the future:",[15,657,658],{},[18,659],{"alt":20,"src":660},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image878.webp",[15,662,663],{},"This feature package is related to navigation.",[15,665,666],{},[18,667],{"alt":20,"src":668},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image879.webp",[15,670,671],{},"This is just a meta-function package.",[15,673,674],{},[18,675],{"alt":20,"src":676},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image880.webp",[15,678,679],{},"Only configuration files, no other substantive implementation.",[15,681,682],{},[18,683],{"alt":20,"src":684},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image881.webp",[15,686,687],{},[18,688],{"alt":20,"src":689},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image882.webp",[15,691,692],{},[18,693],{"alt":20,"src":694},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image883.webp",[15,696,697],{},"The purpose of a metapackage is to simplify installation by bundling your own components together, making them shareable with the ROS2 community. It also makes it easy to install packages from others.",[10,699,701],{"id":700},"duplicate-node-names","Duplicate node names",[15,703,704],{},[18,705],{"alt":20,"src":706},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image884.webp",[15,708,709],{},[18,710],{"alt":20,"src":711},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image885.webp",[15,713,714],{},"Moreover, the node names are all consistent. In the diagram, there is a \u003C2>, which is a label assigned by the operating system; other operating systems do not have this label.",[15,716,717],{},[18,718],{"alt":20,"src":719},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image886.webp",[116,721,723],{"className":118,"code":722,"language":120,"meta":20,"style":20},"rqt_graph\n",[122,724,725],{"__ignoreMap":20},[125,726,727],{"class":127,"line":128},[125,728,722],{"class":280},[15,730,731],{},[18,732],{"alt":20,"src":733},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image887.webp",[15,735,736],{},"It only shows one turtlesim, but in reality we are using two turtlesims.",[15,738,739],{},[18,740],{"alt":20,"src":741},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image888.webp",[15,743,744],{},"Although they are all displayed, they have identical names, which can be confusing. Additionally, a duplicate name warning has been shown above.",[15,746,747],{},[18,748],{"alt":20,"src":749},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image889.webp",[15,751,752],{},[18,753],{"alt":20,"src":754},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image890.webp",[15,756,757],{},[18,758],{"alt":20,"src":759},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image891.webp",[15,761,762],{},"Either use an alias: Wang Dabao, Wang Xiaobao",[15,764,765],{},"Either add a namespace: Wang Bao from Mao Lvzi's family, Wang Bao from Li Ergou's family",[15,767,768],{},[18,769],{"alt":20,"src":770},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image892.webp",[28,772],{},[15,774,775],{},[18,776],{"alt":20,"src":777},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image893.webp",[15,779,780],{},[18,781],{"alt":20,"src":782},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image894.webp",[116,784,786],{"className":118,"code":785,"language":120,"meta":20,"style":20},"ros2 run turtlesim turtlesim_node --ros-args --remap __ns:=/t1\n",[122,787,788],{"__ignoreMap":20},[125,789,790,793,796,799,802,805,808],{"class":127,"line":128},[125,791,792],{"class":280},"ros2",[125,794,795],{"class":162}," run",[125,797,798],{"class":162}," turtlesim",[125,800,801],{"class":162}," turtlesim_node",[125,803,804],{"class":142}," --ros-args",[125,806,807],{"class":142}," --remap",[125,809,810],{"class":162}," __ns:=/t1\n",[15,812,813],{},"ros2 run package_name node_name --ros-args --remap __ns:=/namespace",[15,815,816],{},[18,817],{"alt":20,"src":818},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image895.webp",[15,820,821],{},[18,822],{"alt":20,"src":823},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image896.webp",[116,825,827],{"className":118,"code":826,"language":120,"meta":20,"style":20},"ros2 run turtlesim turtlesim_node --ros-args --remap __name:=turtlesim2\n",[122,828,829],{"__ignoreMap":20},[125,830,831,833,835,837,839,841,843],{"class":127,"line":128},[125,832,792],{"class":280},[125,834,795],{"class":162},[125,836,798],{"class":162},[125,838,801],{"class":162},[125,840,804],{"class":142},[125,842,807],{"class":142},[125,844,845],{"class":162}," __name:=turtlesim2\n",[15,847,848],{},"ros2 run package_name node_name --ros-args --remap __name:=alias",[15,850,851],{},"or",[15,853,854],{},"ros2 run package_name node_name --ros-args --remap __node:=alias",[15,856,857],{},[18,858],{"alt":20,"src":859},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image897.webp",[28,861],{},[15,863,864],{},[18,865],{"alt":20,"src":866},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image898.webp",[15,868,869],{},[18,870],{"alt":20,"src":871},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image899.webp",[116,873,875],{"className":118,"code":874,"language":120,"meta":20,"style":20},"ros2 pkg create cpp05_names --build-type ament_cmake --node-name demo01_names\n",[122,876,877],{"__ignoreMap":20},[125,878,879,881,884,887,890,893,896,899],{"class":127,"line":128},[125,880,792],{"class":280},[125,882,883],{"class":162}," pkg",[125,885,886],{"class":162}," create",[125,888,889],{"class":162}," cpp05_names",[125,891,892],{"class":142}," --build-type",[125,894,895],{"class":162}," ament_cmake",[125,897,898],{"class":142}," --node-name",[125,900,901],{"class":162}," demo01_names\n",[15,903,904],{},"The node name is optional; setting it here is mainly to lay the groundwork for future learning.",[15,906,907],{},[18,908],{"alt":20,"src":909},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image900.webp",[15,911,912],{},[18,913],{"alt":20,"src":914},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image901.webp",[15,916,917],{},[18,918],{"alt":20,"src":919},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image902.webp",[116,921,925],{"className":922,"code":923,"language":924,"meta":20,"style":20},"language-cmake shiki shiki-themes github-light github-dark","install(DIRECTORY launch DESTINATION share/${PROJECT_NAME})\n","cmake",[122,926,927],{"__ignoreMap":20},[125,928,929,932,935,938],{"class":127,"line":128},[125,930,931],{"class":131},"install",[125,933,934],{"class":135},"(DIRECTORY launch DESTINATION share/",[125,936,937],{"class":131},"${PROJECT_NAME}",[125,939,940],{"class":135},")\n",[15,942,943],{},[18,944],{"alt":20,"src":945},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image903.webp",[15,947,948],{},[18,949],{"alt":20,"src":950},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image904.webp",[15,952,953],{},"First, import two packages.",[15,955,956],{},[18,957],{"alt":20,"src":958},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image905.webp",[15,960,961,962,965],{},"Inside this ",[122,963,964],{},"LaunchDescription"," object is a list, which stores the nodes to be launched.",[15,967,968],{},[18,969],{"alt":20,"src":970},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image906.webp",[15,972,973],{},[18,974],{"alt":20,"src":975},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image907.webp",[116,977,981],{"className":978,"code":979,"language":980,"meta":20,"style":20},"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,982,983,997,1009,1013,1024,1032,1069],{"__ignoreMap":20},[125,984,985,988,991,994],{"class":127,"line":128},[125,986,987],{"class":131},"from",[125,989,990],{"class":135}," launch ",[125,992,993],{"class":131},"import",[125,995,996],{"class":135}," LaunchDescription\n",[125,998,999,1001,1004,1006],{"class":127,"line":290},[125,1000,987],{"class":131},[125,1002,1003],{"class":135}," launch_ros.actions ",[125,1005,993],{"class":131},[125,1007,1008],{"class":135}," Node\n",[125,1010,1011],{"class":127,"line":297},[125,1012,294],{"emptyLinePlaceholder":293},[125,1014,1015,1018,1021],{"class":127,"line":309},[125,1016,1017],{"class":131},"def",[125,1019,1020],{"class":280}," generate_launch_description",[125,1022,1023],{"class":135},"():\n",[125,1025,1026,1029],{"class":127,"line":320},[125,1027,1028],{"class":131},"    return",[125,1030,1031],{"class":135}," LaunchDescription([\n",[125,1033,1034,1037,1041,1043,1046,1049,1052,1054,1057,1059,1062,1064,1067],{"class":127,"line":325},[125,1035,1036],{"class":135},"        Node(",[125,1038,1040],{"class":1039},"s4XuR","package",[125,1042,139],{"class":131},[125,1044,1045],{"class":162},"\"turtlesim\"",[125,1047,1048],{"class":135},",",[125,1050,1051],{"class":1039},"executable",[125,1053,139],{"class":131},[125,1055,1056],{"class":162},"\"turtlesim_node\"",[125,1058,1048],{"class":135},[125,1060,1061],{"class":1039},"name",[125,1063,139],{"class":131},[125,1065,1066],{"class":162},"\"t1\"",[125,1068,940],{"class":135},[125,1070,1071],{"class":127,"line":340},[125,1072,1073],{"class":135},"    ])\n",[15,1075,1076],{},"package package name",[15,1078,1079],{},"executable node name",[15,1081,1082],{},"name alias",[15,1084,1085],{},[18,1086],{"alt":20,"src":1087},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image908.webp",[116,1089,1091],{"className":118,"code":1090,"language":120,"meta":20,"style":20},"ros2 launch cpp05_names demo01_names_launch.py\n",[122,1092,1093],{"__ignoreMap":20},[125,1094,1095,1097,1100,1102],{"class":127,"line":128},[125,1096,792],{"class":280},[125,1098,1099],{"class":162}," launch",[125,1101,889],{"class":162},[125,1103,1104],{"class":162}," demo01_names_launch.py\n",[15,1106,1107],{},[18,1108],{"alt":20,"src":1109},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image909.webp",[15,1111,1112],{},[18,1113],{"alt":20,"src":1114},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image910.webp",[28,1116],{},[15,1118,1119,1122],{},[18,1120],{"alt":20,"src":1121},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image911.webp",[18,1123],{"alt":20,"src":1124},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image912.webp",[15,1126,1127],{},"The root tag is Launch.",[15,1129,1130],{},"The subset label is node.",[15,1132,1133],{},[18,1134],{"alt":20,"src":1135},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image913.webp",[116,1137,1141],{"className":1138,"code":1139,"language":1140,"meta":20,"style":20},"language-xml shiki shiki-themes github-light github-dark","\u003Claunch>\n    \u003Cnode pkg=\"turtlesim\" exec=\"turtlesim_node\" name=\"t1\" />\n\u003C/launch>\n","xml",[122,1142,1143,1155,1186],{"__ignoreMap":20},[125,1144,1145,1148,1152],{"class":127,"line":128},[125,1146,1147],{"class":135},"\u003C",[125,1149,1151],{"class":1150},"s9eBZ","launch",[125,1153,1154],{"class":135},">\n",[125,1156,1157,1160,1163,1165,1167,1169,1172,1174,1176,1179,1181,1183],{"class":127,"line":290},[125,1158,1159],{"class":135},"    \u003C",[125,1161,1162],{"class":1150},"node",[125,1164,883],{"class":280},[125,1166,139],{"class":135},[125,1168,1045],{"class":162},[125,1170,1171],{"class":280}," exec",[125,1173,139],{"class":135},[125,1175,1056],{"class":162},[125,1177,1178],{"class":280}," name",[125,1180,139],{"class":135},[125,1182,1066],{"class":162},[125,1184,1185],{"class":135}," />\n",[125,1187,1188,1191,1193],{"class":127,"line":297},[125,1189,1190],{"class":135},"\u003C/",[125,1192,1151],{"class":1150},[125,1194,1154],{"class":135},[15,1196,1197],{},[18,1198],{"alt":20,"src":1199},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image914.webp",[116,1201,1203],{"className":118,"code":1202,"language":120,"meta":20,"style":20},"ros2 launch cpp05_names demo02_names_launch.xml \n",[122,1204,1205],{"__ignoreMap":20},[125,1206,1207,1209,1211,1213],{"class":127,"line":128},[125,1208,792],{"class":280},[125,1210,1099],{"class":162},[125,1212,889],{"class":162},[125,1214,1215],{"class":162}," demo02_names_launch.xml\n",[28,1217],{},[15,1219,1220],{},[18,1221],{"alt":20,"src":1222},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image915.webp",[15,1224,1225,1226,235],{},"The root tag of YAML is also ",[122,1227,1151],{},[15,1229,1230],{},[18,1231],{"alt":20,"src":1232},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image916.webp",[116,1234,1238],{"className":1235,"code":1236,"language":1237,"meta":20,"style":20},"language-yaml shiki shiki-themes github-light github-dark","launch:\nnode:\n  pkg: \"turtlesim\"\n  exec: \"turtlesim_node\"\n  name: \"t1\"\n","yaml",[122,1239,1240,1247,1253,1264,1274],{"__ignoreMap":20},[125,1241,1242,1244],{"class":127,"line":128},[125,1243,1151],{"class":1150},[125,1245,1246],{"class":135},":\n",[125,1248,1249,1251],{"class":127,"line":290},[125,1250,1162],{"class":1150},[125,1252,1246],{"class":135},[125,1254,1255,1258,1261],{"class":127,"line":297},[125,1256,1257],{"class":1150},"  pkg",[125,1259,1260],{"class":135},": ",[125,1262,1263],{"class":162},"\"turtlesim\"\n",[125,1265,1266,1269,1271],{"class":127,"line":309},[125,1267,1268],{"class":1150},"  exec",[125,1270,1260],{"class":135},[125,1272,1273],{"class":162},"\"turtlesim_node\"\n",[125,1275,1276,1279,1281],{"class":127,"line":320},[125,1277,1278],{"class":1150},"  name",[125,1280,1260],{"class":135},[125,1282,1283],{"class":162},"\"t1\"\n",[15,1285,1286],{},[18,1287],{"alt":20,"src":1288},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image917.webp",[116,1290,1292],{"className":118,"code":1291,"language":120,"meta":20,"style":20},"ros2 launch cpp05_names demo03_names_launch.yaml \n",[122,1293,1294],{"__ignoreMap":20},[125,1295,1296,1298,1300,1302],{"class":127,"line":128},[125,1297,792],{"class":280},[125,1299,1099],{"class":162},[125,1301,889],{"class":162},[125,1303,1304],{"class":162}," demo03_names_launch.yaml\n",[28,1306],{},[15,1308,1309],{},[18,1310],{"alt":20,"src":1311},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image918.webp",[15,1313,1314],{},[18,1315],{"alt":20,"src":1316},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image919.webp",[15,1318,1319],{},[18,1320],{"alt":20,"src":1321},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image920.webp",[15,1323,1082],{},[15,1325,1326],{},"namespace",[15,1328,1329],{},[18,1330],{"alt":20,"src":1331},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image921.webp",[116,1333,1335],{"className":978,"code":1334,"language":980,"meta":20,"style":20},"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,1336,1337,1347,1357,1361,1369,1375,1405,1433,1469],{"__ignoreMap":20},[125,1338,1339,1341,1343,1345],{"class":127,"line":128},[125,1340,987],{"class":131},[125,1342,990],{"class":135},[125,1344,993],{"class":131},[125,1346,996],{"class":135},[125,1348,1349,1351,1353,1355],{"class":127,"line":290},[125,1350,987],{"class":131},[125,1352,1003],{"class":135},[125,1354,993],{"class":131},[125,1356,1008],{"class":135},[125,1358,1359],{"class":127,"line":297},[125,1360,294],{"emptyLinePlaceholder":293},[125,1362,1363,1365,1367],{"class":127,"line":309},[125,1364,1017],{"class":131},[125,1366,1020],{"class":280},[125,1368,1023],{"class":135},[125,1370,1371,1373],{"class":127,"line":320},[125,1372,1028],{"class":131},[125,1374,1031],{"class":135},[125,1376,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1402],{"class":127,"line":325},[125,1378,1036],{"class":135},[125,1380,1040],{"class":1039},[125,1382,139],{"class":131},[125,1384,1045],{"class":162},[125,1386,1048],{"class":135},[125,1388,1051],{"class":1039},[125,1390,139],{"class":131},[125,1392,1056],{"class":162},[125,1394,1048],{"class":135},[125,1396,1061],{"class":1039},[125,1398,139],{"class":131},[125,1400,1401],{"class":162},"\"turtle1\"",[125,1403,1404],{"class":135},"),\n",[125,1406,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431],{"class":127,"line":340},[125,1408,1036],{"class":135},[125,1410,1040],{"class":1039},[125,1412,139],{"class":131},[125,1414,1045],{"class":162},[125,1416,1048],{"class":135},[125,1418,1051],{"class":1039},[125,1420,139],{"class":131},[125,1422,1056],{"class":162},[125,1424,1048],{"class":135},[125,1426,1326],{"class":1039},[125,1428,139],{"class":131},[125,1430,1066],{"class":162},[125,1432,1404],{"class":135},[125,1434,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467],{"class":127,"line":353},[125,1436,1036],{"class":135},[125,1438,1040],{"class":1039},[125,1440,139],{"class":131},[125,1442,1045],{"class":162},[125,1444,1048],{"class":135},[125,1446,1051],{"class":1039},[125,1448,139],{"class":131},[125,1450,1056],{"class":162},[125,1452,1048],{"class":135},[125,1454,1326],{"class":1039},[125,1456,139],{"class":131},[125,1458,1066],{"class":162},[125,1460,1048],{"class":135},[125,1462,1061],{"class":1039},[125,1464,139],{"class":131},[125,1466,1401],{"class":162},[125,1468,940],{"class":135},[125,1470,1471],{"class":127,"line":366},[125,1472,1073],{"class":135},[15,1474,1475],{},[18,1476],{"alt":20,"src":1477},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image922.webp",[116,1479,1481],{"className":1138,"code":1480,"language":1140,"meta":20,"style":20},"\u003Claunch>\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" name =\"turtle1\" />\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" />\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" name= \"turtle1\" />\n\u003C/launch>\n",[122,1482,1483,1491,1518,1545,1578],{"__ignoreMap":20},[125,1484,1485,1487,1489],{"class":127,"line":128},[125,1486,1147],{"class":135},[125,1488,1151],{"class":1150},[125,1490,1154],{"class":135},[125,1492,1493,1495,1497,1499,1502,1504,1506,1508,1510,1512,1514,1516],{"class":127,"line":290},[125,1494,1159],{"class":135},[125,1496,1162],{"class":1150},[125,1498,883],{"class":280},[125,1500,1501],{"class":135}," =",[125,1503,1045],{"class":162},[125,1505,1171],{"class":280},[125,1507,1501],{"class":135},[125,1509,1056],{"class":162},[125,1511,1178],{"class":280},[125,1513,1501],{"class":135},[125,1515,1401],{"class":162},[125,1517,1185],{"class":135},[125,1519,1520,1522,1524,1526,1528,1530,1532,1534,1536,1539,1541,1543],{"class":127,"line":297},[125,1521,1159],{"class":135},[125,1523,1162],{"class":1150},[125,1525,883],{"class":280},[125,1527,1501],{"class":135},[125,1529,1045],{"class":162},[125,1531,1171],{"class":280},[125,1533,1501],{"class":135},[125,1535,1056],{"class":162},[125,1537,1538],{"class":280}," namespace",[125,1540,1501],{"class":135},[125,1542,1066],{"class":162},[125,1544,1185],{"class":135},[125,1546,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1574,1576],{"class":127,"line":309},[125,1548,1159],{"class":135},[125,1550,1162],{"class":1150},[125,1552,883],{"class":280},[125,1554,1501],{"class":135},[125,1556,1045],{"class":162},[125,1558,1171],{"class":280},[125,1560,1501],{"class":135},[125,1562,1056],{"class":162},[125,1564,1538],{"class":280},[125,1566,1501],{"class":135},[125,1568,1066],{"class":162},[125,1570,1178],{"class":280},[125,1572,1573],{"class":135},"= ",[125,1575,1401],{"class":162},[125,1577,1185],{"class":135},[125,1579,1580,1582,1584],{"class":127,"line":320},[125,1581,1190],{"class":135},[125,1583,1151],{"class":1150},[125,1585,1154],{"class":135},[15,1587,1588],{},[18,1589],{"alt":20,"src":1590},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image923.webp",[116,1592,1594],{"className":1235,"code":1593,"language":1237,"meta":20,"style":20},"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,1595,1596,1602,1608,1616,1624,1633,1639,1647,1655,1664,1670,1678,1686,1694],{"__ignoreMap":20},[125,1597,1598,1600],{"class":127,"line":128},[125,1599,1151],{"class":1150},[125,1601,1246],{"class":135},[125,1603,1604,1606],{"class":127,"line":290},[125,1605,1162],{"class":1150},[125,1607,1246],{"class":135},[125,1609,1610,1612,1614],{"class":127,"line":297},[125,1611,1257],{"class":1150},[125,1613,1260],{"class":135},[125,1615,1263],{"class":162},[125,1617,1618,1620,1622],{"class":127,"line":309},[125,1619,1268],{"class":1150},[125,1621,1260],{"class":135},[125,1623,1273],{"class":162},[125,1625,1626,1628,1630],{"class":127,"line":320},[125,1627,1278],{"class":1150},[125,1629,1260],{"class":135},[125,1631,1632],{"class":162},"\"turtle\"\n",[125,1634,1635,1637],{"class":127,"line":325},[125,1636,1162],{"class":1150},[125,1638,1246],{"class":135},[125,1640,1641,1643,1645],{"class":127,"line":340},[125,1642,1257],{"class":1150},[125,1644,1260],{"class":135},[125,1646,1263],{"class":162},[125,1648,1649,1651,1653],{"class":127,"line":353},[125,1650,1268],{"class":1150},[125,1652,1260],{"class":135},[125,1654,1273],{"class":162},[125,1656,1657,1660,1662],{"class":127,"line":366},[125,1658,1659],{"class":1150},"  namespace",[125,1661,1260],{"class":135},[125,1663,1283],{"class":162},[125,1665,1666,1668],{"class":127,"line":378},[125,1667,1162],{"class":1150},[125,1669,1246],{"class":135},[125,1671,1672,1674,1676],{"class":127,"line":383},[125,1673,1257],{"class":1150},[125,1675,1260],{"class":135},[125,1677,1263],{"class":162},[125,1679,1680,1682,1684],{"class":127,"line":389},[125,1681,1268],{"class":1150},[125,1683,1260],{"class":135},[125,1685,1273],{"class":162},[125,1687,1688,1690,1692],{"class":127,"line":394},[125,1689,1659],{"class":1150},[125,1691,1260],{"class":135},[125,1693,1283],{"class":162},[125,1695,1696,1698,1700],{"class":127,"line":404},[125,1697,1278],{"class":1150},[125,1699,1260],{"class":135},[125,1701,1632],{"class":162},[15,1703,1704],{},[18,1705],{"alt":20,"src":1706},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image924.webp",[28,1708],{},[15,1710,1711],{},[18,1712],{"alt":20,"src":1713},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image925.webp",[15,1715,1716],{},[18,1717],{"alt":20,"src":1718},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image926.webp",[15,1720,1721],{},[18,1722],{"alt":20,"src":1723},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image927.webp",[15,1725,1726],{},[18,1727],{"alt":20,"src":1728},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image928.webp",[15,1730,1731],{},"You can specify a namespace.",[15,1733,1734],{},[18,1735],{"alt":20,"src":1736},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image929.webp",[116,1738,1742],{"className":1739,"code":1740,"language":1741,"meta":20,"style":20},"language-cpp shiki shiki-themes github-light github-dark","#include \"rclcpp/rclcpp.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,1743,1744,1752,1756,1778,1783,1788,1812,1817,1842,1847,1852,1856,1885,1889,1902,1906,1932,1936,1948,1953,1966,1978],{"__ignoreMap":20},[125,1745,1746,1749],{"class":127,"line":128},[125,1747,1748],{"class":131},"#include",[125,1750,1751],{"class":162}," \"rclcpp/rclcpp.hpp\"\n",[125,1753,1754],{"class":127,"line":290},[125,1755,294],{"emptyLinePlaceholder":293},[125,1757,1758,1761,1764,1766,1769,1772,1775],{"class":127,"line":297},[125,1759,1760],{"class":131},"class",[125,1762,1763],{"class":280}," MyNode",[125,1765,1260],{"class":135},[125,1767,1768],{"class":131},"public",[125,1770,1771],{"class":280}," rclcpp",[125,1773,1774],{"class":135},"::",[125,1776,1777],{"class":280},"Node\n",[125,1779,1780],{"class":127,"line":309},[125,1781,1782],{"class":135},"{\n",[125,1784,1785],{"class":127,"line":320},[125,1786,1787],{"class":131},"  public:\n",[125,1789,1790,1793,1796,1799,1802,1805,1807,1810],{"class":127,"line":325},[125,1791,1792],{"class":280},"    MyNode",[125,1794,1795],{"class":135},"():",[125,1797,1798],{"class":280},"Node",[125,1800,1801],{"class":135},"(",[125,1803,1804],{"class":162},"\"mynode_node_cpp\"",[125,1806,1048],{"class":135},[125,1808,1809],{"class":162},"\"t1_ns\"",[125,1811,940],{"class":135},[125,1813,1814],{"class":127,"line":340},[125,1815,1816],{"class":135},"    {\n",[125,1818,1819,1822,1824,1827,1830,1833,1836,1839],{"class":127,"line":353},[125,1820,1821],{"class":280},"      RCLCPP_INFO",[125,1823,1801],{"class":135},[125,1825,1826],{"class":142},"this",[125,1828,1829],{"class":135},"->",[125,1831,1832],{"class":280},"get_logger",[125,1834,1835],{"class":135},"(),",[125,1837,1838],{"class":162},"\"Hello World!\"",[125,1840,1841],{"class":135},");\n",[125,1843,1844],{"class":127,"line":366},[125,1845,1846],{"class":135},"    }\n",[125,1848,1849],{"class":127,"line":378},[125,1850,1851],{"class":135},"};\n",[125,1853,1854],{"class":127,"line":383},[125,1855,294],{"emptyLinePlaceholder":293},[125,1857,1858,1861,1864,1866,1868,1871,1874,1877,1880,1883],{"class":127,"line":389},[125,1859,1860],{"class":131},"int",[125,1862,1863],{"class":280}," main",[125,1865,1801],{"class":135},[125,1867,1860],{"class":131},[125,1869,1870],{"class":1039}," argc",[125,1872,1873],{"class":135},", ",[125,1875,1876],{"class":131},"char",[125,1878,1879],{"class":131}," **",[125,1881,1882],{"class":1039}," argv",[125,1884,940],{"class":135},[125,1886,1887],{"class":127,"line":394},[125,1888,1782],{"class":135},[125,1890,1891,1894,1896,1899],{"class":127,"line":404},[125,1892,1893],{"class":280},"  rclcpp",[125,1895,1774],{"class":135},[125,1897,1898],{"class":280},"init",[125,1900,1901],{"class":135},"(argc,argv);\n",[125,1903,1904],{"class":127,"line":414},[125,1905,294],{"emptyLinePlaceholder":293},[125,1907,1908,1911,1914,1916,1919,1921,1924,1926,1929],{"class":127,"line":426},[125,1909,1910],{"class":131},"  auto",[125,1912,1913],{"class":135}," node ",[125,1915,139],{"class":131},[125,1917,1918],{"class":280}," std",[125,1920,1774],{"class":135},[125,1922,1923],{"class":280},"make_shared",[125,1925,1147],{"class":135},[125,1927,1928],{"class":280},"MyNode",[125,1930,1931],{"class":135},">();\n",[125,1933,1934],{"class":127,"line":438},[125,1935,294],{"emptyLinePlaceholder":293},[125,1937,1938,1940,1942,1945],{"class":127,"line":450},[125,1939,1893],{"class":280},[125,1941,1774],{"class":135},[125,1943,1944],{"class":280},"spin",[125,1946,1947],{"class":135},"(node);\n",[125,1949,1951],{"class":127,"line":1950},19,[125,1952,294],{"emptyLinePlaceholder":293},[125,1954,1956,1958,1960,1963],{"class":127,"line":1955},20,[125,1957,1893],{"class":280},[125,1959,1774],{"class":135},[125,1961,1962],{"class":280},"shutdown",[125,1964,1965],{"class":135},"();\n",[125,1967,1969,1972,1975],{"class":127,"line":1968},21,[125,1970,1971],{"class":131},"  return",[125,1973,1974],{"class":142}," 0",[125,1976,1977],{"class":135},";\n",[125,1979,1981],{"class":127,"line":1980},22,[125,1982,1983],{"class":135},"}\n",[15,1985,1986],{},[18,1987],{"alt":20,"src":1988},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image930.webp",[15,1990,1991],{},[18,1992],{"alt":20,"src":1993},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image931.webp",[15,1995,1996],{},[18,1997],{"alt":20,"src":1998},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image932.webp",[15,2000,2001],{},[18,2002],{"alt":20,"src":2003},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image933.webp",[10,2005,2007],{"id":2006},"duplicate-topic-name","Duplicate topic name",[15,2009,2010],{},[18,2011],{"alt":20,"src":2012},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image934.webp",[15,2014,2015],{},[18,2016],{"alt":20,"src":2017},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image935.webp",[15,2019,2020],{},[18,2021],{"alt":20,"src":2022},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image936.webp",[28,2024],{},[15,2026,2027],{},[18,2028],{"alt":20,"src":2029},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image937.webp",[15,2031,2032],{},[18,2033],{"alt":20,"src":2034},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image938.webp",[116,2036,2037],{"className":118,"code":785,"language":120,"meta":20,"style":20},[122,2038,2039],{"__ignoreMap":20},[125,2040,2041,2043,2045,2047,2049,2051,2053],{"class":127,"line":128},[125,2042,792],{"class":280},[125,2044,795],{"class":162},[125,2046,798],{"class":162},[125,2048,801],{"class":162},[125,2050,804],{"class":142},[125,2052,807],{"class":142},[125,2054,810],{"class":162},[15,2056,813],{},[15,2058,2059],{},"This method of adding namespaces not only works for duplicate node names, but also remains effective for topic names.",[15,2061,2062],{},[18,2063],{"alt":20,"src":2064},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image939.webp",[15,2066,2067],{},[18,2068],{"alt":20,"src":2069},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image940.webp",[15,2071,2072],{},[18,2073],{"alt":20,"src":2074},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image941.webp",[15,2076,2077],{},[18,2078],{"alt":20,"src":2079},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image942.webp",[15,2081,2082],{},[18,2083],{"alt":20,"src":2084},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image943.webp",[116,2086,2088],{"className":118,"code":2087,"language":120,"meta":20,"style":20},"ros2 run teleop_twist_keyboard teleop_twist_keyboard \n",[122,2089,2090],{"__ignoreMap":20},[125,2091,2092,2094,2096,2099],{"class":127,"line":128},[125,2093,792],{"class":280},[125,2095,795],{"class":162},[125,2097,2098],{"class":162}," teleop_twist_keyboard",[125,2100,2101],{"class":162}," teleop_twist_keyboard\n",[15,2103,2104],{},"This is the node that controls the robot's movement.",[15,2106,2107],{},"ros2 run teleop_twist_keyboard teleop_twist_keyboard",[15,2109,2110],{},[18,2111],{"alt":20,"src":2112},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image944.webp",[15,2114,2115],{},[18,2116],{"alt":20,"src":2117},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image945.webp",[15,2119,2120],{},"The corresponding topic name is this.",[15,2122,2123],{},[18,2124],{"alt":20,"src":2125},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image946.webp",[15,2127,2128],{},"However, controlling the turtle's movement is ineffective at this point because the topic namespaces are different.",[15,2130,2131],{},[18,2132],{"alt":20,"src":2133},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image947.webp",[15,2135,2136,2137,2140,2141,235],{},"The topic received by the turtle is ",[122,2138,2139],{},"/turtle1/cmd_vel",", and the namespace is ",[122,2142,2143],{},"/turtle1",[15,2145,2146,2147,2150],{},"The one controlling the turtle's movement is ",[122,2148,2149],{},"/cmd_vel",", but the namespace is different.",[15,2152,2153],{},"So we need to make the namespaces of the two the same.",[15,2155,2156],{},"Just change it however you like; as long as they match, communication will work normally.",[15,2158,2159],{},[18,2160],{"alt":20,"src":2161},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image948.webp",[15,2163,2164],{},[18,2165],{"alt":20,"src":2166},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image949.webp",[28,2168],{},[15,2170,2171],{},[18,2172],{"alt":20,"src":2173},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image950.webp",[15,2175,609,2176,2179],{},[122,2177,2178],{},"remappings"," parameter enables topic remapping. It is a list containing tuples, where each tuple can remap a topic. The first element in the tuple is the original topic name, and the second element is the remapped topic name.",[15,2181,2182],{},"Namespaces can implement namespaces.",[15,2184,2185],{},[18,2186],{"alt":20,"src":2187},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image951.webp",[15,2189,2190],{},[18,2191],{"alt":20,"src":2192},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image952.webp",[15,2194,2195],{},[18,2196],{"alt":20,"src":2197},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image953.webp",[15,2199,2200],{},[18,2201],{"alt":20,"src":2202},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image954.webp",[15,2204,2205],{},[18,2206],{"alt":20,"src":2207},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image955.webp",[15,2209,2210],{},[18,2211],{"alt":20,"src":2212},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image956.webp",[15,2214,2215],{},[18,2216],{"alt":20,"src":2217},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image957.webp",[15,2219,2220],{},[18,2221],{"alt":20,"src":2222},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image958.webp",[15,2224,2225,2226,2228,2229,2232],{},"remp also supports remapping, where ",[122,2227,987],{}," is the original topic name and ",[122,2230,2231],{},"to"," is the remapped name.",[116,2234,2236],{"className":1138,"code":2235,"language":1140,"meta":20,"style":20},"\u003Claunch>\n\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" namespace =\"t1\" />\n    \u003Cnode pkg =\"turtlesim\" exec =\"turtlesim_node\" >\n        \u003Cremap from= \"/turtle1/cmd_vel\" to=\"/cmd_vel\" />\n    \u003C/node>\n\u003C/launch>\n",[122,2237,2238,2246,2250,2276,2297,2323,2332],{"__ignoreMap":20},[125,2239,2240,2242,2244],{"class":127,"line":128},[125,2241,1147],{"class":135},[125,2243,1151],{"class":1150},[125,2245,1154],{"class":135},[125,2247,2248],{"class":127,"line":290},[125,2249,294],{"emptyLinePlaceholder":293},[125,2251,2252,2254,2256,2258,2260,2262,2264,2266,2268,2270,2272,2274],{"class":127,"line":297},[125,2253,1159],{"class":135},[125,2255,1162],{"class":1150},[125,2257,883],{"class":280},[125,2259,1501],{"class":135},[125,2261,1045],{"class":162},[125,2263,1171],{"class":280},[125,2265,1501],{"class":135},[125,2267,1056],{"class":162},[125,2269,1538],{"class":280},[125,2271,1501],{"class":135},[125,2273,1066],{"class":162},[125,2275,1185],{"class":135},[125,2277,2278,2280,2282,2284,2286,2288,2290,2292,2294],{"class":127,"line":309},[125,2279,1159],{"class":135},[125,2281,1162],{"class":1150},[125,2283,883],{"class":280},[125,2285,1501],{"class":135},[125,2287,1045],{"class":162},[125,2289,1171],{"class":280},[125,2291,1501],{"class":135},[125,2293,1056],{"class":162},[125,2295,2296],{"class":135}," >\n",[125,2298,2299,2302,2305,2308,2310,2313,2316,2318,2321],{"class":127,"line":320},[125,2300,2301],{"class":135},"        \u003C",[125,2303,2304],{"class":1150},"remap",[125,2306,2307],{"class":280}," from",[125,2309,1573],{"class":135},[125,2311,2312],{"class":162},"\"/turtle1/cmd_vel\"",[125,2314,2315],{"class":280}," to",[125,2317,139],{"class":135},[125,2319,2320],{"class":162},"\"/cmd_vel\"",[125,2322,1185],{"class":135},[125,2324,2325,2328,2330],{"class":127,"line":325},[125,2326,2327],{"class":135},"    \u003C/",[125,2329,1162],{"class":1150},[125,2331,1154],{"class":135},[125,2333,2334,2336,2338],{"class":127,"line":340},[125,2335,1190],{"class":135},[125,2337,1151],{"class":1150},[125,2339,1154],{"class":135},[15,2341,2342],{},[18,2343],{"alt":20,"src":2344},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image959.webp",[15,2346,2347],{},[18,2348],{"alt":20,"src":2349},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image960.webp",[15,2351,2352],{},"launch:",[116,2354,2356],{"className":1235,"code":2355,"language":1237,"meta":20,"style":20},"- 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: \"/turtle1/cmd_vel\"\n      to: \"/cmd_vel\"\n",[122,2357,2358,2367,2376,2385,2393,2401,2409,2417,2425,2433,2441,2449,2457,2465,2469,2475,2483,2491,2499,2505,2513,2521,2528,2534,2545],{"__ignoreMap":20},[125,2359,2360,2363,2365],{"class":127,"line":128},[125,2361,2362],{"class":135},"- ",[125,2364,1162],{"class":1150},[125,2366,1246],{"class":135},[125,2368,2369,2372,2374],{"class":127,"line":290},[125,2370,2371],{"class":1150},"pkg",[125,2373,1260],{"class":135},[125,2375,1263],{"class":162},[125,2377,2378,2381,2383],{"class":127,"line":297},[125,2379,2380],{"class":1150},"exec",[125,2382,1260],{"class":135},[125,2384,1273],{"class":162},[125,2386,2387,2389,2391],{"class":127,"line":309},[125,2388,1061],{"class":1150},[125,2390,1260],{"class":135},[125,2392,1632],{"class":162},[125,2394,2395,2397,2399],{"class":127,"line":320},[125,2396,2362],{"class":135},[125,2398,1162],{"class":1150},[125,2400,1246],{"class":135},[125,2402,2403,2405,2407],{"class":127,"line":325},[125,2404,2371],{"class":1150},[125,2406,1260],{"class":135},[125,2408,1263],{"class":162},[125,2410,2411,2413,2415],{"class":127,"line":340},[125,2412,2380],{"class":1150},[125,2414,1260],{"class":135},[125,2416,1273],{"class":162},[125,2418,2419,2421,2423],{"class":127,"line":353},[125,2420,1326],{"class":1150},[125,2422,1260],{"class":135},[125,2424,1283],{"class":162},[125,2426,2427,2429,2431],{"class":127,"line":366},[125,2428,2362],{"class":135},[125,2430,1162],{"class":1150},[125,2432,1246],{"class":135},[125,2434,2435,2437,2439],{"class":127,"line":378},[125,2436,2371],{"class":1150},[125,2438,1260],{"class":135},[125,2440,1263],{"class":162},[125,2442,2443,2445,2447],{"class":127,"line":383},[125,2444,2380],{"class":1150},[125,2446,1260],{"class":135},[125,2448,1273],{"class":162},[125,2450,2451,2453,2455],{"class":127,"line":389},[125,2452,1326],{"class":1150},[125,2454,1260],{"class":135},[125,2456,1283],{"class":162},[125,2458,2459,2461,2463],{"class":127,"line":394},[125,2460,1061],{"class":1150},[125,2462,1260],{"class":135},[125,2464,1632],{"class":162},[125,2466,2467],{"class":127,"line":404},[125,2468,294],{"emptyLinePlaceholder":293},[125,2470,2471,2473],{"class":127,"line":414},[125,2472,1162],{"class":1150},[125,2474,1246],{"class":135},[125,2476,2477,2479,2481],{"class":127,"line":426},[125,2478,1257],{"class":1150},[125,2480,1260],{"class":135},[125,2482,1263],{"class":162},[125,2484,2485,2487,2489],{"class":127,"line":438},[125,2486,1268],{"class":1150},[125,2488,1260],{"class":135},[125,2490,1273],{"class":162},[125,2492,2493,2495,2497],{"class":127,"line":450},[125,2494,1659],{"class":1150},[125,2496,1260],{"class":135},[125,2498,1283],{"class":162},[125,2500,2501,2503],{"class":127,"line":1950},[125,2502,1162],{"class":1150},[125,2504,1246],{"class":135},[125,2506,2507,2509,2511],{"class":127,"line":1955},[125,2508,1257],{"class":1150},[125,2510,1260],{"class":135},[125,2512,1263],{"class":162},[125,2514,2515,2517,2519],{"class":127,"line":1968},[125,2516,1268],{"class":1150},[125,2518,1260],{"class":135},[125,2520,1273],{"class":162},[125,2522,2523,2526],{"class":127,"line":1980},[125,2524,2525],{"class":1150},"  remap",[125,2527,1246],{"class":135},[125,2529,2531],{"class":127,"line":2530},23,[125,2532,2533],{"class":135},"  -\n",[125,2535,2537,2540,2542],{"class":127,"line":2536},24,[125,2538,2539],{"class":1150},"      from",[125,2541,1260],{"class":135},[125,2543,2544],{"class":162},"\"/turtle1/cmd_vel\"\n",[125,2546,2548,2551,2553],{"class":127,"line":2547},25,[125,2549,2550],{"class":1150},"      to",[125,2552,1260],{"class":135},[125,2554,2555],{"class":162},"\"/cmd_vel\"\n",[15,2557,2558],{},[18,2559],{"alt":20,"src":2560},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image961.webp",[15,2562,2563],{},[18,2564],{"alt":20,"src":2565},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image962.webp",[28,2567],{},[15,2569,2570],{},[18,2571],{"alt":20,"src":2572},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image963.webp",[15,2574,2575],{},[18,2576],{"alt":20,"src":2577},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image964.webp",[15,2579,2580],{},"Namespaces can have multiple levels.",[15,2582,2583],{},[18,2584],{"alt":20,"src":2585},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image965.webp",[15,2587,2588],{},"The global topic is at the same level as the node namespace, meaning it is mounted under the root.",[15,2590,2591],{},"Relative topics are mounted under a namespace.",[15,2593,2594],{},"Private topics are children of the node name.",[15,2596,2597],{},[18,2598],{"alt":20,"src":2599},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image966.webp",[15,2601,2602],{},[18,2603],{"alt":20,"src":2604},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image967.webp",[15,2606,2607],{},[18,2608],{"alt":20,"src":2609},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image968.webp",[15,2611,2612],{},[18,2613],{"alt":20,"src":2614},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image969.webp",[116,2616,2618],{"className":1739,"code":2617,"language":1741,"meta":20,"style":20},"#include \"rclcpp/rclcpp.hpp\"\n#include \"std_msgs/msg/string.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>(\"/global_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,2619,2620,2626,2633,2637,2653,2657,2673,2677,2681,2701,2705,2723,2756,2760,2765,2782,2786,2790,2812,2816,2826,2830,2850,2854,2864,2868,2879,2888],{"__ignoreMap":20},[125,2621,2622,2624],{"class":127,"line":128},[125,2623,1748],{"class":131},[125,2625,1751],{"class":162},[125,2627,2628,2630],{"class":127,"line":290},[125,2629,1748],{"class":131},[125,2631,2632],{"class":162}," \"std_msgs/msg/string.hpp\"\n",[125,2634,2635],{"class":127,"line":297},[125,2636,294],{"emptyLinePlaceholder":293},[125,2638,2639,2642,2645,2647,2650],{"class":127,"line":309},[125,2640,2641],{"class":131},"using",[125,2643,2644],{"class":280}," std_msgs",[125,2646,1774],{"class":135},[125,2648,2649],{"class":280},"msg",[125,2651,2652],{"class":135},"::String;\n",[125,2654,2655],{"class":127,"line":320},[125,2656,294],{"emptyLinePlaceholder":293},[125,2658,2659,2661,2663,2665,2667,2669,2671],{"class":127,"line":325},[125,2660,1760],{"class":131},[125,2662,1763],{"class":280},[125,2664,1260],{"class":135},[125,2666,1768],{"class":131},[125,2668,1771],{"class":280},[125,2670,1774],{"class":135},[125,2672,1777],{"class":280},[125,2674,2675],{"class":127,"line":340},[125,2676,1782],{"class":135},[125,2678,2679],{"class":127,"line":353},[125,2680,1787],{"class":131},[125,2682,2683,2685,2687,2689,2691,2694,2696,2699],{"class":127,"line":366},[125,2684,1792],{"class":280},[125,2686,1795],{"class":135},[125,2688,1798],{"class":280},[125,2690,1801],{"class":135},[125,2692,2693],{"class":162},"\"mynode_node_name\"",[125,2695,1048],{"class":135},[125,2697,2698],{"class":162},"\"t1_namespace\"",[125,2700,940],{"class":135},[125,2702,2703],{"class":127,"line":378},[125,2704,1816],{"class":135},[125,2706,2707,2709,2711,2713,2715,2717,2719,2721],{"class":127,"line":383},[125,2708,1821],{"class":280},[125,2710,1801],{"class":135},[125,2712,1826],{"class":142},[125,2714,1829],{"class":135},[125,2716,1832],{"class":280},[125,2718,1835],{"class":135},[125,2720,1838],{"class":162},[125,2722,1841],{"class":135},[125,2724,2725,2728,2730,2733,2736,2738,2741,2744,2746,2749,2751,2754],{"class":127,"line":389},[125,2726,2727],{"class":135},"      publisher_ ",[125,2729,139],{"class":131},[125,2731,2732],{"class":142}," this",[125,2734,2735],{"class":135},"->create_publisher",[125,2737,1147],{"class":131},[125,2739,2740],{"class":135},"String",[125,2742,2743],{"class":131},">",[125,2745,1801],{"class":135},[125,2747,2748],{"class":162},"\"/global_topics\"",[125,2750,1048],{"class":135},[125,2752,2753],{"class":142},"10",[125,2755,1841],{"class":135},[125,2757,2758],{"class":127,"line":394},[125,2759,1846],{"class":135},[125,2761,2762],{"class":127,"line":404},[125,2763,2764],{"class":131},"  private:\n",[125,2766,2767,2770,2772,2775,2777,2779],{"class":127,"line":414},[125,2768,2769],{"class":280},"    rclcpp",[125,2771,1774],{"class":135},[125,2773,2774],{"class":280},"Publisher",[125,2776,1147],{"class":135},[125,2778,2740],{"class":280},[125,2780,2781],{"class":135},">::SharedPtr publisher_;\n",[125,2783,2784],{"class":127,"line":426},[125,2785,1851],{"class":135},[125,2787,2788],{"class":127,"line":438},[125,2789,294],{"emptyLinePlaceholder":293},[125,2791,2792,2794,2796,2798,2800,2802,2804,2806,2808,2810],{"class":127,"line":450},[125,2793,1860],{"class":131},[125,2795,1863],{"class":280},[125,2797,1801],{"class":135},[125,2799,1860],{"class":131},[125,2801,1870],{"class":1039},[125,2803,1873],{"class":135},[125,2805,1876],{"class":131},[125,2807,1879],{"class":131},[125,2809,1882],{"class":1039},[125,2811,940],{"class":135},[125,2813,2814],{"class":127,"line":1950},[125,2815,1782],{"class":135},[125,2817,2818,2820,2822,2824],{"class":127,"line":1955},[125,2819,1893],{"class":280},[125,2821,1774],{"class":135},[125,2823,1898],{"class":280},[125,2825,1901],{"class":135},[125,2827,2828],{"class":127,"line":1968},[125,2829,294],{"emptyLinePlaceholder":293},[125,2831,2832,2834,2836,2838,2840,2842,2844,2846,2848],{"class":127,"line":1980},[125,2833,1910],{"class":131},[125,2835,1913],{"class":135},[125,2837,139],{"class":131},[125,2839,1918],{"class":280},[125,2841,1774],{"class":135},[125,2843,1923],{"class":280},[125,2845,1147],{"class":135},[125,2847,1928],{"class":280},[125,2849,1931],{"class":135},[125,2851,2852],{"class":127,"line":2530},[125,2853,294],{"emptyLinePlaceholder":293},[125,2855,2856,2858,2860,2862],{"class":127,"line":2536},[125,2857,1893],{"class":280},[125,2859,1774],{"class":135},[125,2861,1944],{"class":280},[125,2863,1947],{"class":135},[125,2865,2866],{"class":127,"line":2547},[125,2867,294],{"emptyLinePlaceholder":293},[125,2869,2871,2873,2875,2877],{"class":127,"line":2870},26,[125,2872,1893],{"class":280},[125,2874,1774],{"class":135},[125,2876,1962],{"class":280},[125,2878,1965],{"class":135},[125,2880,2882,2884,2886],{"class":127,"line":2881},27,[125,2883,1971],{"class":131},[125,2885,1974],{"class":142},[125,2887,1977],{"class":135},[125,2889,2891],{"class":127,"line":2890},28,[125,2892,1983],{"class":135},[15,2894,2895],{},[18,2896],{"alt":20,"src":2897},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image970.webp",[15,2899,2900],{},[18,2901],{"alt":20,"src":2902},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image971.webp",[15,2904,2905],{},[18,2906],{"alt":20,"src":2907},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image972.webp",[15,2909,2910],{},"Global Topics",[15,2912,2913],{},[18,2914],{"alt":20,"src":2915},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image973.webp",[15,2917,2918],{},[18,2919],{"alt":20,"src":2920},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image974.webp",[15,2922,2923],{},"relative topic",[15,2925,2926],{},[18,2927],{"alt":20,"src":2928},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image975.webp",[15,2930,2931],{},[18,2932],{"alt":20,"src":2933},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image976.webp",[15,2935,2936],{},"Private topic",[10,2938,2940],{"id":2939},"time-related-apis","Time-related APIs",[15,2942,2943],{},[18,2944],{"alt":20,"src":2945},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image977.webp",[15,2947,2948],{},"Messages can include a header containing a timestamp. The receiver parses the message header and compares the message time with the current time to check for excessive delay.",[15,2950,2951],{},"Rate is frequency.",[15,2953,2954],{},"Time is a moment.",[15,2956,2957],{},"Duration is the length of time.",[15,2959,2960],{},[18,2961],{"alt":20,"src":2962},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image978.webp",[28,2964],{},[15,2966,2967],{},[18,2968],{"alt":20,"src":2969},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image979.webp",[15,2971,2972],{},[18,2973],{"alt":20,"src":2974},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image980.webp",[15,2976,2977],{},[18,2978],{"alt":20,"src":2979},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image981.webp",[15,2981,2982],{},[18,2983],{"alt":20,"src":2984},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image982.webp",[15,2986,2987],{},"This class's constructor has two overloads: the first is for period, and the second is for frequency.",[15,2989,2990],{},[18,2991],{"alt":20,"src":2992},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image983.webp",[15,2994,2995],{},[18,2996],{"alt":20,"src":2997},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image984.webp",[15,2999,3000],{},[18,3001],{"alt":20,"src":3002},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image985.webp",[116,3004,3006],{"className":1739,"code":3005,"language":1741,"meta":20,"style":20},"#include \"rclcpp/rclcpp.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      // while(rclcpp::ok())\n      // {\n      //   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n      //   rate1.sleep();\n      // }\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,3007,3008,3014,3018,3033,3037,3053,3057,3061,3076,3080,3098,3105,3109,3113,3124,3128,3149,3165,3171,3176,3181,3186,3191,3209,3214,3234,3244,3249,3253,3258,3263,3286,3291,3302,3307,3328,3333,3344,3349,3360,3369],{"__ignoreMap":20},[125,3009,3010,3012],{"class":127,"line":128},[125,3011,1748],{"class":131},[125,3013,1751],{"class":162},[125,3015,3016],{"class":127,"line":290},[125,3017,294],{"emptyLinePlaceholder":293},[125,3019,3020,3022,3024,3026,3028,3031],{"class":127,"line":297},[125,3021,2641],{"class":131},[125,3023,1538],{"class":131},[125,3025,1918],{"class":280},[125,3027,1774],{"class":135},[125,3029,3030],{"class":280},"chrono_literals",[125,3032,1977],{"class":135},[125,3034,3035],{"class":127,"line":309},[125,3036,294],{"emptyLinePlaceholder":293},[125,3038,3039,3041,3043,3045,3047,3049,3051],{"class":127,"line":320},[125,3040,1760],{"class":131},[125,3042,1763],{"class":280},[125,3044,1260],{"class":135},[125,3046,1768],{"class":131},[125,3048,1771],{"class":280},[125,3050,1774],{"class":135},[125,3052,1777],{"class":280},[125,3054,3055],{"class":127,"line":325},[125,3056,1782],{"class":135},[125,3058,3059],{"class":127,"line":340},[125,3060,1787],{"class":131},[125,3062,3063,3065,3067,3069,3071,3074],{"class":127,"line":353},[125,3064,1792],{"class":280},[125,3066,1795],{"class":135},[125,3068,1798],{"class":280},[125,3070,1801],{"class":135},[125,3072,3073],{"class":162},"\"time_node_cpp\"",[125,3075,940],{"class":135},[125,3077,3078],{"class":127,"line":366},[125,3079,1816],{"class":135},[125,3081,3082,3084,3086,3088,3090,3092,3094,3096],{"class":127,"line":378},[125,3083,1821],{"class":280},[125,3085,1801],{"class":135},[125,3087,1826],{"class":142},[125,3089,1829],{"class":135},[125,3091,1832],{"class":280},[125,3093,1835],{"class":135},[125,3095,1838],{"class":162},[125,3097,1841],{"class":135},[125,3099,3100,3103],{"class":127,"line":383},[125,3101,3102],{"class":280},"      demo_rate",[125,3104,1965],{"class":135},[125,3106,3107],{"class":127,"line":389},[125,3108,1846],{"class":135},[125,3110,3111],{"class":127,"line":394},[125,3112,2764],{"class":131},[125,3114,3115,3118,3121],{"class":127,"line":404},[125,3116,3117],{"class":131},"    void",[125,3119,3120],{"class":280}," demo_rate",[125,3122,3123],{"class":135},"()\n",[125,3125,3126],{"class":127,"line":414},[125,3127,1816],{"class":135},[125,3129,3130,3133,3136,3139,3141,3144,3147],{"class":127,"line":426},[125,3131,3132],{"class":280},"      rclcpp",[125,3134,3135],{"class":135},"::Rate ",[125,3137,3138],{"class":280},"rate1",[125,3140,1801],{"class":135},[125,3142,3143],{"class":142},"500",[125,3145,3146],{"class":131},"ms",[125,3148,1841],{"class":135},[125,3150,3151,3153,3155,3158,3160,3163],{"class":127,"line":438},[125,3152,3132],{"class":280},[125,3154,3135],{"class":135},[125,3156,3157],{"class":280},"rate2",[125,3159,1801],{"class":135},[125,3161,3162],{"class":142},"1.0",[125,3164,1841],{"class":135},[125,3166,3167],{"class":127,"line":450},[125,3168,3170],{"class":3169},"sJ8bj","      // while(rclcpp::ok())\n",[125,3172,3173],{"class":127,"line":1950},[125,3174,3175],{"class":3169},"      // {\n",[125,3177,3178],{"class":127,"line":1955},[125,3179,3180],{"class":3169},"      //   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n",[125,3182,3183],{"class":127,"line":1968},[125,3184,3185],{"class":3169},"      //   rate1.sleep();\n",[125,3187,3188],{"class":127,"line":1980},[125,3189,3190],{"class":3169},"      // }\n",[125,3192,3193,3196,3198,3201,3203,3206],{"class":127,"line":2530},[125,3194,3195],{"class":131},"      while",[125,3197,1801],{"class":135},[125,3199,3200],{"class":280},"rclcpp",[125,3202,1774],{"class":135},[125,3204,3205],{"class":280},"ok",[125,3207,3208],{"class":135},"())\n",[125,3210,3211],{"class":127,"line":2536},[125,3212,3213],{"class":135},"      {\n",[125,3215,3216,3219,3221,3223,3225,3227,3229,3232],{"class":127,"line":2547},[125,3217,3218],{"class":280},"        RCLCPP_INFO",[125,3220,1801],{"class":135},[125,3222,1826],{"class":142},[125,3224,1829],{"class":135},[125,3226,1832],{"class":280},[125,3228,1835],{"class":135},[125,3230,3231],{"class":162},"\"休眠1000ms\"",[125,3233,1841],{"class":135},[125,3235,3236,3239,3242],{"class":127,"line":2870},[125,3237,3238],{"class":135},"        rate2.",[125,3240,3241],{"class":280},"sleep",[125,3243,1965],{"class":135},[125,3245,3246],{"class":127,"line":2881},[125,3247,3248],{"class":135},"      }\n",[125,3250,3251],{"class":127,"line":2890},[125,3252,1846],{"class":135},[125,3254,3256],{"class":127,"line":3255},29,[125,3257,1851],{"class":135},[125,3259,3261],{"class":127,"line":3260},30,[125,3262,294],{"emptyLinePlaceholder":293},[125,3264,3266,3268,3270,3272,3274,3276,3278,3280,3282,3284],{"class":127,"line":3265},31,[125,3267,1860],{"class":131},[125,3269,1863],{"class":280},[125,3271,1801],{"class":135},[125,3273,1860],{"class":131},[125,3275,1870],{"class":1039},[125,3277,1873],{"class":135},[125,3279,1876],{"class":131},[125,3281,1879],{"class":131},[125,3283,1882],{"class":1039},[125,3285,940],{"class":135},[125,3287,3289],{"class":127,"line":3288},32,[125,3290,1782],{"class":135},[125,3292,3294,3296,3298,3300],{"class":127,"line":3293},33,[125,3295,1893],{"class":280},[125,3297,1774],{"class":135},[125,3299,1898],{"class":280},[125,3301,1901],{"class":135},[125,3303,3305],{"class":127,"line":3304},34,[125,3306,294],{"emptyLinePlaceholder":293},[125,3308,3310,3312,3314,3316,3318,3320,3322,3324,3326],{"class":127,"line":3309},35,[125,3311,1910],{"class":131},[125,3313,1913],{"class":135},[125,3315,139],{"class":131},[125,3317,1918],{"class":280},[125,3319,1774],{"class":135},[125,3321,1923],{"class":280},[125,3323,1147],{"class":135},[125,3325,1928],{"class":280},[125,3327,1931],{"class":135},[125,3329,3331],{"class":127,"line":3330},36,[125,3332,294],{"emptyLinePlaceholder":293},[125,3334,3336,3338,3340,3342],{"class":127,"line":3335},37,[125,3337,1893],{"class":280},[125,3339,1774],{"class":135},[125,3341,1944],{"class":280},[125,3343,1947],{"class":135},[125,3345,3347],{"class":127,"line":3346},38,[125,3348,294],{"emptyLinePlaceholder":293},[125,3350,3352,3354,3356,3358],{"class":127,"line":3351},39,[125,3353,1893],{"class":280},[125,3355,1774],{"class":135},[125,3357,1962],{"class":280},[125,3359,1965],{"class":135},[125,3361,3363,3365,3367],{"class":127,"line":3362},40,[125,3364,1971],{"class":131},[125,3366,1974],{"class":142},[125,3368,1977],{"class":135},[125,3370,3372],{"class":127,"line":3371},41,[125,3373,1983],{"class":135},[28,3375],{},[15,3377,3378],{},[18,3379],{"alt":20,"src":3380},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image986.webp",[15,3382,3383],{},[18,3384],{"alt":20,"src":3385},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image987.webp",[15,3387,3388],{},[18,3389],{"alt":20,"src":3390},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image988.webp",[15,3392,3393],{},[18,3394],{"alt":20,"src":3395},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image989.webp",[15,3397,3398],{},"You can pass in a nanosecond.",[15,3400,3401],{},[18,3402],{"alt":20,"src":3403},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image990.webp",[15,3405,3406],{},"You can also pass in a second and a nanosecond.",[15,3408,3409],{},[18,3410],{"alt":20,"src":3411},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image991.webp",[15,3413,3414],{},"Because it is of type int64_t, we append an L at the end. This is 500 million nanoseconds, which equals 0.5 seconds.",[15,3416,3417],{},[18,3418],{"alt":20,"src":3419},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image992.webp",[15,3421,3422],{},"This means time2 represents 2.5 seconds.",[15,3424,3425],{},"There are two ways to get the current time:",[15,3427,3428],{},"One is this->get_clock()->now(),",[15,3430,3431],{},"The other one is this->now();",[15,3433,3434],{},[18,3435],{"alt":20,"src":3436},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image993.webp",[15,3438,3439],{},[18,3440],{"alt":20,"src":3441},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image994.webp",[15,3443,3444],{},[18,3445],{"alt":20,"src":3446},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image995.webp",[15,3448,3449],{},[18,3450],{"alt":20,"src":3451},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image996.webp",[116,3453,3455],{"className":1739,"code":3454,"language":1741,"meta":20,"style":20},"#include \"rclcpp/rclcpp.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      demo_time();\n    }\n  private:\n    void demo_rate()\n    {\n      rclcpp::Rate rate1(500ms);\n      rclcpp::Rate rate2(1.0);\n      // while(rclcpp::ok())\n      // {\n      //   RCLCPP_INFO(this->get_logger(),\"休眠500ms\");\n      //   rate1.sleep();\n      // }\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,3456,3457,3463,3467,3481,3485,3501,3505,3509,3523,3527,3545,3550,3557,3561,3565,3573,3577,3593,3607,3611,3615,3619,3623,3627,3641,3645,3663,3671,3675,3679,3683,3692,3696,3716,3738,3762,3779,3783,3827,3863,3899,3935,3940,3945,3950,3973,3978,3989,3994,4015,4020,4031,4036,4047,4056],{"__ignoreMap":20},[125,3458,3459,3461],{"class":127,"line":128},[125,3460,1748],{"class":131},[125,3462,1751],{"class":162},[125,3464,3465],{"class":127,"line":290},[125,3466,294],{"emptyLinePlaceholder":293},[125,3468,3469,3471,3473,3475,3477,3479],{"class":127,"line":297},[125,3470,2641],{"class":131},[125,3472,1538],{"class":131},[125,3474,1918],{"class":280},[125,3476,1774],{"class":135},[125,3478,3030],{"class":280},[125,3480,1977],{"class":135},[125,3482,3483],{"class":127,"line":309},[125,3484,294],{"emptyLinePlaceholder":293},[125,3486,3487,3489,3491,3493,3495,3497,3499],{"class":127,"line":320},[125,3488,1760],{"class":131},[125,3490,1763],{"class":280},[125,3492,1260],{"class":135},[125,3494,1768],{"class":131},[125,3496,1771],{"class":280},[125,3498,1774],{"class":135},[125,3500,1777],{"class":280},[125,3502,3503],{"class":127,"line":325},[125,3504,1782],{"class":135},[125,3506,3507],{"class":127,"line":340},[125,3508,1787],{"class":131},[125,3510,3511,3513,3515,3517,3519,3521],{"class":127,"line":353},[125,3512,1792],{"class":280},[125,3514,1795],{"class":135},[125,3516,1798],{"class":280},[125,3518,1801],{"class":135},[125,3520,3073],{"class":162},[125,3522,940],{"class":135},[125,3524,3525],{"class":127,"line":366},[125,3526,1816],{"class":135},[125,3528,3529,3531,3533,3535,3537,3539,3541,3543],{"class":127,"line":378},[125,3530,1821],{"class":280},[125,3532,1801],{"class":135},[125,3534,1826],{"class":142},[125,3536,1829],{"class":135},[125,3538,1832],{"class":280},[125,3540,1835],{"class":135},[125,3542,1838],{"class":162},[125,3544,1841],{"class":135},[125,3546,3547],{"class":127,"line":383},[125,3548,3549],{"class":3169},"      // demo_rate();\n",[125,3551,3552,3555],{"class":127,"line":389},[125,3553,3554],{"class":280},"      demo_time",[125,3556,1965],{"class":135},[125,3558,3559],{"class":127,"line":394},[125,3560,1846],{"class":135},[125,3562,3563],{"class":127,"line":404},[125,3564,2764],{"class":131},[125,3566,3567,3569,3571],{"class":127,"line":414},[125,3568,3117],{"class":131},[125,3570,3120],{"class":280},[125,3572,3123],{"class":135},[125,3574,3575],{"class":127,"line":426},[125,3576,1816],{"class":135},[125,3578,3579,3581,3583,3585,3587,3589,3591],{"class":127,"line":438},[125,3580,3132],{"class":280},[125,3582,3135],{"class":135},[125,3584,3138],{"class":280},[125,3586,1801],{"class":135},[125,3588,3143],{"class":142},[125,3590,3146],{"class":131},[125,3592,1841],{"class":135},[125,3594,3595,3597,3599,3601,3603,3605],{"class":127,"line":450},[125,3596,3132],{"class":280},[125,3598,3135],{"class":135},[125,3600,3157],{"class":280},[125,3602,1801],{"class":135},[125,3604,3162],{"class":142},[125,3606,1841],{"class":135},[125,3608,3609],{"class":127,"line":1950},[125,3610,3170],{"class":3169},[125,3612,3613],{"class":127,"line":1955},[125,3614,3175],{"class":3169},[125,3616,3617],{"class":127,"line":1968},[125,3618,3180],{"class":3169},[125,3620,3621],{"class":127,"line":1980},[125,3622,3185],{"class":3169},[125,3624,3625],{"class":127,"line":2530},[125,3626,3190],{"class":3169},[125,3628,3629,3631,3633,3635,3637,3639],{"class":127,"line":2536},[125,3630,3195],{"class":131},[125,3632,1801],{"class":135},[125,3634,3200],{"class":280},[125,3636,1774],{"class":135},[125,3638,3205],{"class":280},[125,3640,3208],{"class":135},[125,3642,3643],{"class":127,"line":2547},[125,3644,3213],{"class":135},[125,3646,3647,3649,3651,3653,3655,3657,3659,3661],{"class":127,"line":2870},[125,3648,3218],{"class":280},[125,3650,1801],{"class":135},[125,3652,1826],{"class":142},[125,3654,1829],{"class":135},[125,3656,1832],{"class":280},[125,3658,1835],{"class":135},[125,3660,3231],{"class":162},[125,3662,1841],{"class":135},[125,3664,3665,3667,3669],{"class":127,"line":2881},[125,3666,3238],{"class":135},[125,3668,3241],{"class":280},[125,3670,1965],{"class":135},[125,3672,3673],{"class":127,"line":2890},[125,3674,3248],{"class":135},[125,3676,3677],{"class":127,"line":3255},[125,3678,1846],{"class":135},[125,3680,3681],{"class":127,"line":3260},[125,3682,294],{"emptyLinePlaceholder":293},[125,3684,3685,3687,3690],{"class":127,"line":3265},[125,3686,3117],{"class":131},[125,3688,3689],{"class":280}," demo_time",[125,3691,3123],{"class":135},[125,3693,3694],{"class":127,"line":3288},[125,3695,1816],{"class":135},[125,3697,3698,3700,3703,3706,3708,3711,3714],{"class":127,"line":3293},[125,3699,3132],{"class":280},[125,3701,3702],{"class":135},"::Time ",[125,3704,3705],{"class":280},"time1",[125,3707,1801],{"class":135},[125,3709,3710],{"class":142},"500000000",[125,3712,3713],{"class":131},"L",[125,3715,1841],{"class":135},[125,3717,3718,3720,3722,3725,3727,3730,3732,3734,3736],{"class":127,"line":3304},[125,3719,3132],{"class":280},[125,3721,3702],{"class":135},[125,3723,3724],{"class":280},"time2",[125,3726,1801],{"class":135},[125,3728,3729],{"class":142},"2",[125,3731,1048],{"class":135},[125,3733,3710],{"class":142},[125,3735,3713],{"class":131},[125,3737,1841],{"class":135},[125,3739,3740,3742,3745,3747,3749,3751,3754,3757,3760],{"class":127,"line":3309},[125,3741,3132],{"class":280},[125,3743,3744],{"class":135},"::Time right_now_1 ",[125,3746,139],{"class":131},[125,3748,2732],{"class":142},[125,3750,1829],{"class":135},[125,3752,3753],{"class":280},"get_clock",[125,3755,3756],{"class":135},"()->",[125,3758,3759],{"class":280},"now",[125,3761,1965],{"class":135},[125,3763,3764,3766,3769,3771,3773,3775,3777],{"class":127,"line":3330},[125,3765,3132],{"class":280},[125,3767,3768],{"class":135},"::Time right_now_2 ",[125,3770,139],{"class":131},[125,3772,2732],{"class":142},[125,3774,1829],{"class":135},[125,3776,3759],{"class":280},[125,3778,1965],{"class":135},[125,3780,3781],{"class":127,"line":3335},[125,3782,294],{"emptyLinePlaceholder":293},[125,3784,3785,3787,3789,3791,3793,3795,3797,3800,3803,3806,3809,3812,3815,3818,3821,3824],{"class":127,"line":3346},[125,3786,1821],{"class":280},[125,3788,1801],{"class":135},[125,3790,1826],{"class":142},[125,3792,1829],{"class":135},[125,3794,1832],{"class":280},[125,3796,1835],{"class":135},[125,3798,3799],{"class":162},"\"s = ",[125,3801,3802],{"class":142},"%.2f",[125,3804,3805],{"class":162}," , ns = ",[125,3807,3808],{"class":142},"%ld",[125,3810,3811],{"class":162},"\"",[125,3813,3814],{"class":135},",time1.",[125,3816,3817],{"class":280},"seconds",[125,3819,3820],{"class":135},"(),time1.",[125,3822,3823],{"class":280},"nanoseconds",[125,3825,3826],{"class":135},"());\n",[125,3828,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3854,3856,3859,3861],{"class":127,"line":3351},[125,3830,1821],{"class":280},[125,3832,1801],{"class":135},[125,3834,1826],{"class":142},[125,3836,1829],{"class":135},[125,3838,1832],{"class":280},[125,3840,1835],{"class":135},[125,3842,3799],{"class":162},[125,3844,3802],{"class":142},[125,3846,3805],{"class":162},[125,3848,3808],{"class":142},[125,3850,3811],{"class":162},[125,3852,3853],{"class":135},",time2.",[125,3855,3817],{"class":280},[125,3857,3858],{"class":135},"(),time2.",[125,3860,3823],{"class":280},[125,3862,3826],{"class":135},[125,3864,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3890,3892,3895,3897],{"class":127,"line":3362},[125,3866,1821],{"class":280},[125,3868,1801],{"class":135},[125,3870,1826],{"class":142},[125,3872,1829],{"class":135},[125,3874,1832],{"class":280},[125,3876,1835],{"class":135},[125,3878,3799],{"class":162},[125,3880,3802],{"class":142},[125,3882,3805],{"class":162},[125,3884,3808],{"class":142},[125,3886,3811],{"class":162},[125,3888,3889],{"class":135},",right_now_1.",[125,3891,3817],{"class":280},[125,3893,3894],{"class":135},"(),right_now_1.",[125,3896,3823],{"class":280},[125,3898,3826],{"class":135},[125,3900,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3926,3928,3931,3933],{"class":127,"line":3371},[125,3902,1821],{"class":280},[125,3904,1801],{"class":135},[125,3906,1826],{"class":142},[125,3908,1829],{"class":135},[125,3910,1832],{"class":280},[125,3912,1835],{"class":135},[125,3914,3799],{"class":162},[125,3916,3802],{"class":142},[125,3918,3805],{"class":162},[125,3920,3808],{"class":142},[125,3922,3811],{"class":162},[125,3924,3925],{"class":135},",right_now_2.",[125,3927,3817],{"class":280},[125,3929,3930],{"class":135},"(),right_now_2.",[125,3932,3823],{"class":280},[125,3934,3826],{"class":135},[125,3936,3938],{"class":127,"line":3937},42,[125,3939,1846],{"class":135},[125,3941,3943],{"class":127,"line":3942},43,[125,3944,1851],{"class":135},[125,3946,3948],{"class":127,"line":3947},44,[125,3949,294],{"emptyLinePlaceholder":293},[125,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971],{"class":127,"line":3952},45,[125,3954,1860],{"class":131},[125,3956,1863],{"class":280},[125,3958,1801],{"class":135},[125,3960,1860],{"class":131},[125,3962,1870],{"class":1039},[125,3964,1873],{"class":135},[125,3966,1876],{"class":131},[125,3968,1879],{"class":131},[125,3970,1882],{"class":1039},[125,3972,940],{"class":135},[125,3974,3976],{"class":127,"line":3975},46,[125,3977,1782],{"class":135},[125,3979,3981,3983,3985,3987],{"class":127,"line":3980},47,[125,3982,1893],{"class":280},[125,3984,1774],{"class":135},[125,3986,1898],{"class":280},[125,3988,1901],{"class":135},[125,3990,3992],{"class":127,"line":3991},48,[125,3993,294],{"emptyLinePlaceholder":293},[125,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013],{"class":127,"line":3996},49,[125,3998,1910],{"class":131},[125,4000,1913],{"class":135},[125,4002,139],{"class":131},[125,4004,1918],{"class":280},[125,4006,1774],{"class":135},[125,4008,1923],{"class":280},[125,4010,1147],{"class":135},[125,4012,1928],{"class":280},[125,4014,1931],{"class":135},[125,4016,4018],{"class":127,"line":4017},50,[125,4019,294],{"emptyLinePlaceholder":293},[125,4021,4023,4025,4027,4029],{"class":127,"line":4022},51,[125,4024,1893],{"class":280},[125,4026,1774],{"class":135},[125,4028,1944],{"class":280},[125,4030,1947],{"class":135},[125,4032,4034],{"class":127,"line":4033},52,[125,4035,294],{"emptyLinePlaceholder":293},[125,4037,4039,4041,4043,4045],{"class":127,"line":4038},53,[125,4040,1893],{"class":280},[125,4042,1774],{"class":135},[125,4044,1962],{"class":280},[125,4046,1965],{"class":135},[125,4048,4050,4052,4054],{"class":127,"line":4049},54,[125,4051,1971],{"class":131},[125,4053,1974],{"class":142},[125,4055,1977],{"class":135},[125,4057,4059],{"class":127,"line":4058},55,[125,4060,1983],{"class":135},[28,4062],{},[15,4064,4065],{},[18,4066],{"alt":20,"src":4067},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image997.webp",[15,4069,4070],{},[18,4071],{"alt":20,"src":4072},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image998.webp",[15,4074,4075],{},[18,4076],{"alt":20,"src":4077},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image999.webp",[15,4079,4080],{},"Similar to Time",[15,4082,4083,4084,4087,4088,235],{},"But not exactly the same; this ",[122,4085,4086],{},"duration"," uses ",[122,4089,4090],{},"chrono",[15,4092,4093],{},[18,4094],{"alt":20,"src":4095},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1000.webp",[15,4097,4098],{},[18,4099],{"alt":20,"src":4100},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1001.webp",[15,4102,4103],{},[18,4104],{"alt":20,"src":4105},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1002.webp",[28,4107],{},[15,4109,4110],{},[18,4111],{"alt":20,"src":4112},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1003.webp",[15,4114,4115],{},[18,4116],{"alt":20,"src":4117},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1004.webp",[15,4119,4120],{},[18,4121],{"alt":20,"src":4122},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1005.webp",[15,4124,4125],{},"t2 and t1 can be subtracted, and the result is of type duration, but they cannot be added.",[15,4127,4128,4131,4132,4134,4135,235],{},[122,4129,4130],{},"time"," can also be added to or subtracted from ",[122,4133,4086],{},", resulting in a ",[122,4136,4130],{},[15,4138,4139],{},[18,4140],{"alt":20,"src":4141},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1006.webp",[15,4143,4144],{},[18,4145],{"alt":20,"src":4146},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1007.webp",[15,4148,4149],{},[18,4150],{"alt":20,"src":4151},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1008.webp",[15,4153,4154],{},[18,4155],{"alt":20,"src":4156},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1009.webp",[15,4158,4159],{},[18,4160],{"alt":20,"src":4161},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1010.webp",[15,4163,4164],{},[18,4165],{"alt":20,"src":4166},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1011.webp",[10,4168,4170],{"id":4169},"communication-mechanism-tools","Communication Mechanism Tools",[4172,4173,4175],"h4",{"id":4174},"command-line","command line",[15,4177,4178],{},[18,4179],{"alt":20,"src":4180},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1012.webp",[15,4182,4183],{},[18,4184],{"alt":20,"src":4185},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1013.webp",[28,4187],{},[15,4189,4190],{},[18,4191],{"alt":20,"src":4192},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1014.webp",[15,4194,4195],{},"ros2 doctor is used to check system network status, version compatibility, and other states.",[15,4197,4198],{},[18,4199],{"alt":20,"src":4200},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1015.webp",[15,4202,4203],{},[18,4204],{"alt":20,"src":4205},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1016.webp",[15,4207,4208],{},"It passed, but there are a few warnings: the version is too old, but it does not affect normal use.",[15,4210,4211],{},[18,4212],{"alt":20,"src":4213},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1017.webp",[15,4215,4216],{},[18,4217],{"alt":20,"src":4218},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1018.webp",[15,4220,4221],{},[18,4222],{"alt":20,"src":4223},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1019.webp",[15,4225,4226],{},[18,4227],{"alt":20,"src":4228},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1020.webp",[15,4230,4231],{},[18,4232],{"alt":20,"src":4233},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1021.webp",[15,4235,4236],{},"The essence of a parameter server is still a server, so it is also listed under Service Servers.",[28,4238],{},[15,4240,4241],{},[18,4242],{"alt":20,"src":4243},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1022.webp",[15,4245,4246],{},[18,4247],{"alt":20,"src":4248},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1023.webp",[15,4250,4251],{},"If you check the list and find that some interface files are not displayed, it means the environment variables in your terminal have not been refreshed.",[15,4253,4254],{},[18,4255],{"alt":20,"src":4256},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1024.webp",[15,4258,4259],{},[18,4260],{"alt":20,"src":4261},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1025.webp",[15,4263,4264],{},"Proto is a bit more concise than show.",[28,4266],{},[15,4268,4269],{},[18,4270],{"alt":20,"src":4271},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1026.webp",[15,4273,4274],{},[18,4275],{"alt":20,"src":4276},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1027.webp",[15,4278,4279],{},"The pose is used to send position and orientation data, and it will continuously transmit data.",[15,4281,4282],{},[18,4283],{"alt":20,"src":4284},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1028.webp",[15,4286,4287],{},[18,4288],{"alt":20,"src":4289},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1029.webp",[15,4291,4292],{},[18,4293],{"alt":20,"src":4294},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1030.webp",[15,4296,4297],{},[80,4298,4299],{},"To output a delay, the message must have a header.",[15,4301,4302],{},[18,4303],{"alt":20,"src":4304},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1031.webp",[15,4306,4307],{},"Output real-time pose",[15,4309,4310],{},[18,4311],{"alt":20,"src":4312},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1032.webp",[15,4314,4315],{},[18,4316],{"alt":20,"src":4317},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1033.webp",[15,4319,4320,251,4323,4326],{},[122,4321,4322],{},"find",[122,4324,4325],{},"type"," work in opposite ways.",[15,4328,4329],{},[18,4330],{"alt":20,"src":4331},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1034.webp",[15,4333,4334],{},"The message publishing frequency is constantly changing. The message rate can be controlled through a timer, but the timer has inherent inaccuracies and is not extremely precise. Of course, the network is also a major influencing factor.",[15,4336,4337],{},[18,4338],{"alt":20,"src":4339},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1035.webp",[15,4341,4342],{},"ros2 topic pub -r publish message frequency topic name message specific command (in JSON format)",[15,4344,4345],{},[18,4346],{"alt":20,"src":4347},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1036.webp",[15,4349,4350],{},[18,4351],{"alt":20,"src":4352},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1037.webp",[15,4354,4355],{},[18,4356],{"alt":20,"src":4357},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1038.webp",[15,4359,4360],{},[18,4361],{"alt":20,"src":4362},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1039.webp",[28,4364],{},[15,4366,4367],{},[18,4368],{"alt":20,"src":4369},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1040.webp",[15,4371,4372],{},[18,4373],{"alt":20,"src":4374},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1041.webp",[15,4376,4377],{},"clear clears the turtle's trail.",[15,4379,4380],{},"kill is to kill the turtle",[15,4382,4383],{},"reset resets the turtle's position.",[15,4385,4386],{},"spawn means to lay eggs or generate a new turtle.",[15,4388,4389],{},[18,4390],{"alt":20,"src":4391},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1042.webp",[15,4393,4394],{},"You can use Tab to complete.",[15,4396,4397],{},[18,4398],{"alt":20,"src":4399},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1043.webp",[15,4401,4402],{},[18,4403],{"alt":20,"src":4404},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1044.webp",[15,4406,4407,251,4409,4411],{},[122,4408,4325],{},[122,4410,4322],{}," are opposites.",[15,4413,4414],{},[18,4415],{"alt":20,"src":4416},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1045.webp",[15,4418,4419],{},"Empty means nothing, so we don't need to write anything after this.",[15,4421,4422],{},[18,4423],{"alt":20,"src":4424},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1046.webp",[15,4426,4427],{},[18,4428],{"alt":20,"src":4429},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1047.webp",[28,4431],{},[15,4433,4434],{},[18,4435],{"alt":20,"src":4436},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1048.webp",[15,4438,4439,4442],{},[18,4440],{"alt":20,"src":4441},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1049.webp",[18,4443],{"alt":20,"src":4444},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1050.webp",[15,4446,4447],{},[18,4448],{"alt":20,"src":4449},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1051.webp",[15,4451,4452,4453,4456,4457,4460],{},"You can add ",[122,4454,4455],{},"-f"," or ",[122,4458,4459],{},"-feedback"," to enable continuous feedback, which provides the heading angle in radians.",[15,4462,4463,4466],{},[18,4464],{"alt":20,"src":4465},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1052.webp",[18,4467],{"alt":20,"src":4468},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1053.webp",[28,4470],{},[15,4472,4473],{},[18,4474],{"alt":20,"src":4475},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1054.webp",[15,4477,4478],{},[18,4479],{"alt":20,"src":4480},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1055.webp",[15,4482,4483],{},[18,4484],{"alt":20,"src":4485},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1056.webp",[15,4487,4488],{},[18,4489],{"alt":20,"src":4490},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1057.webp",[15,4492,4493],{},[18,4494],{"alt":20,"src":4495},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1058.webp",[15,4497,4498],{},"Not all parameters can be deleted; this indicates that static type parameters cannot be deleted.",[15,4500,4501],{},[18,4502],{"alt":20,"src":4503},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1059.webp",[15,4505,4506],{},"Maximum value 255, minimum value 0.",[15,4508,4509],{},"Step size 1",[15,4511,4512],{},[18,4513],{"alt":20,"src":4514},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1060.webp",[15,4516,4517],{},"It can be displayed on the terminal.",[15,4519,4520],{},[18,4521],{"alt":20,"src":4522},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1061.webp",[15,4524,4525],{},[18,4526],{"alt":20,"src":4527},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1062.webp",[15,4529,4530],{},"It can also be written to disk.",[15,4532,4533],{},[18,4534],{"alt":20,"src":4535},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1063.webp",[15,4537,4538],{},[18,4539],{"alt":20,"src":4540},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1064.webp",[15,4542,4543],{},"Of course, you can also modify it.",[15,4545,4546],{},[18,4547],{"alt":20,"src":4548},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1065.webp",[15,4550,4551],{},[18,4552],{"alt":20,"src":4553},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1066.webp",[15,4555,4556],{},[18,4557],{"alt":20,"src":4558},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1067.webp",[15,4560,4561],{},[18,4562],{"alt":20,"src":4563},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1068.webp",[15,4565,4566],{},[18,4567],{"alt":20,"src":4568},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1069.webp",[15,4570,4571],{},"You can also modify it using ROS2 RUN, with --ros-args -p followed by key:=value.",[15,4573,4574],{},[18,4575],{"alt":20,"src":4576},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1070.webp",[15,4578,4579],{},[18,4580],{"alt":20,"src":4581},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1071.webp",[15,4583,4584],{},[18,4585],{"alt":20,"src":4586},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1072.webp",[15,4588,4589],{},"ROS2 RUN can also read disk files directly.",[15,4591,4592],{},[18,4593],{"alt":20,"src":4594},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1073.webp",[4172,4596,4598],{"id":4597},"rqt-toolbox","Rqt toolbox",[15,4600,4601],{},[18,4602],{"alt":20,"src":4603},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1074.webp",[15,4605,4606],{},[18,4607],{"alt":20,"src":4608},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1075.webp",[15,4610,4611],{},[18,4612],{"alt":20,"src":4613},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1076.webp",[15,4615,4616],{},[18,4617],{"alt":20,"src":4618},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1077.webp",[15,4620,4621],{},[18,4622],{"alt":20,"src":4623},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1078.webp",[15,4625,4626],{},[18,4627],{"alt":20,"src":4628},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1079.webp",[15,4630,4631],{},[18,4632],{"alt":20,"src":4633},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1080.webp",[28,4635],{},[15,4637,4638],{},[18,4639],{"alt":20,"src":4640},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1081.webp",[15,4642,4643],{},[18,4644],{"alt":20,"src":4645},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1082.webp",[15,4647,4648],{},"This is used to display the relationship between two nodes.",[28,4650],{},[15,4652,4653],{},[18,4654],{"alt":20,"src":4655},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1083.webp",[15,4657,4658],{},[18,4659],{"alt":20,"src":4660},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1084.webp",[15,4662,4663],{},"This is used to publish messages.",[15,4665,4666],{},[18,4667],{"alt":20,"src":4668},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1085.webp",[15,4670,4671],{},"Click the Add button.",[15,4673,4674],{},[18,4675],{"alt":20,"src":4676},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1086.webp",[15,4678,4679],{},"You can set linear velocity, angular velocity, frequency, etc.",[15,4681,4682],{},[18,4683],{"alt":20,"src":4684},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1087.webp",[15,4686,4687],{},"After setting the parameters, check the box.",[15,4689,4690],{},[18,4691],{"alt":20,"src":4692},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1088.webp",[15,4694,4695],{},[18,4696],{"alt":20,"src":4697},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1089.webp",[28,4699],{},[15,4701,4702],{},[18,4703],{"alt":20,"src":4704},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1090.webp",[15,4706,4707],{},[18,4708],{"alt":20,"src":4709},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1091.webp",[15,4711,4712,4715],{},[122,4713,4714],{},"call /clear"," clears the trajectory.",[15,4717,4718],{},[18,4719],{"alt":20,"src":4720},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1092.webp",[15,4722,4723],{},"It can also lay eggs, with the parameters set accordingly.",[15,4725,4726],{},[18,4727],{"alt":20,"src":4728},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1093.webp",[15,4730,4731],{},[18,4732],{"alt":20,"src":4733},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1094.webp",[28,4735],{},[15,4737,4738],{},[18,4739],{"alt":20,"src":4740},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1095.webp",[15,4742,4743],{},"You can modify the parameters directly.",[15,4745,4746],{},[18,4747],{"alt":20,"src":4748},"https://cdn.tungchiahui.cn/tungwebsite/assets/images/2023/12/30/image1096.webp",[28,4750],{},[15,4752,4753],{},"We cannot use rqt to replace the command line. Although rqt is more convenient, since we remotely control the robot during work, we do so through a terminal. Therefore, the command line is very important, and rqt cannot be used in this case.",[4755,4756,4757],"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":20,"searchDepth":290,"depth":290,"links":4759},[4760,4761,4762,4763,4764,4765,4766,4767],{"id":12,"depth":297,"text":13},{"id":75,"depth":297,"text":76},{"id":516,"depth":297,"text":517},{"id":574,"depth":297,"text":575},{"id":700,"depth":297,"text":701},{"id":2006,"depth":297,"text":2007},{"id":2939,"depth":297,"text":2940},{"id":4169,"depth":297,"text":4170},"/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","5",5000000,"2023-12-30","wiki/2023-12-30-ros2-tutorial","en-us:2023-12-30-ros2-tutorial","/en-us/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制",false,null,"en-US","en-us",{},{"title":5,"description":20},"/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","CgF0OzbAkT3KlaoRmcJmVEDc4uL5MTnapnzCILa-vMQ",[4788,4794,4799,4805,4811,4817,4823,4829,4835,4841,4847,4853,4859,4865,4871,4877,4883,4889,4894,4900,4905,4911,4917,4923,4929,4935,4941,4947,4952,4958,4964,4970,4976,4982,4988,4994,5000,5006,5012,5018,5024,5030,5036,5042,5048,5054,5060,5066,5072,5078,5084,5089,5095,5101,5107,5108,5114,5120,5126,5132],{"path":4789,"stem":4790,"title":4791,"date":4771,"chapter":4792,"chapterSort":4793,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","Introduction to ROS2","1",1000000,{"path":4795,"stem":4796,"title":4797,"date":4771,"chapter":2753,"chapterSort":4798,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2 Simulation Platform",10000000,{"path":4800,"stem":4801,"title":4802,"date":4771,"chapter":4803,"chapterSort":4804,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":4806,"stem":4807,"title":4808,"date":4771,"chapter":4809,"chapterSort":4810,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":4812,"stem":4813,"title":4814,"date":4771,"chapter":4815,"chapterSort":4816,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":4818,"stem":4819,"title":4820,"date":4771,"chapter":4821,"chapterSort":4822,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","Migrate Ign Gazebo to Gz Sim","11.4",11040000,{"path":4824,"stem":4825,"title":4826,"date":4771,"chapter":4827,"chapterSort":4828,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gazebo simulation platform","11",11000000,{"path":4830,"stem":4831,"title":4832,"date":4771,"chapter":4833,"chapterSort":4834,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-1-humble-ban-ben","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-1-Humble版本","Humble Navigation Simulation","12.1",12010000,{"path":4836,"stem":4837,"title":4838,"date":4771,"chapter":4839,"chapterSort":4840,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-2-jazzy-ban-ben","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-2-Jazzy版本","Jazzy Navigation Simulation","12.2",12020000,{"path":4842,"stem":4843,"title":4844,"date":4771,"chapter":4845,"chapterSort":4846,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-3-humble2jazzy","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-3-Humble2Jazzy","Differences in Navigation between Humble and Jazzy","12.3",12030000,{"path":4848,"stem":4849,"title":4850,"date":4771,"chapter":4851,"chapterSort":4852,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","Robot Navigation with Navigation2 (Simulation)","12",12000000,{"path":4854,"stem":4855,"title":4856,"date":4771,"chapter":4857,"chapterSort":4858,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-1-Boost.Aiso","Boost.Asio库","13.1.1",13010100,{"path":4860,"stem":4861,"title":4862,"date":4771,"chapter":4863,"chapterSort":4864,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2-serial-driver","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2_serial_driver","ROS2 Serial Driver Library","13.1.2",13010200,{"path":4866,"stem":4867,"title":4868,"date":4771,"chapter":4869,"chapterSort":4870,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-chuan-kou-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-1-串口通信","UART serial communication","13.1",13010000,{"path":4872,"stem":4873,"title":4874,"date":4771,"chapter":4875,"chapterSort":4876,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","SocketCAN","13.2.1",13020100,{"path":4878,"stem":4879,"title":4880,"date":4771,"chapter":4881,"chapterSort":4882,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2-socketcan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2_socketcan","ROS2_SocketCAN","13.2.2",13020200,{"path":4884,"stem":4885,"title":4886,"date":4771,"chapter":4887,"chapterSort":4888,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信","CAN communication","13.2",13020000,{"path":4890,"stem":4891,"title":4856,"date":4771,"chapter":4892,"chapterSort":4893,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-1-Boost.Aiso","13.3.1",13030100,{"path":4895,"stem":4896,"title":4897,"date":4771,"chapter":4898,"chapterSort":4899,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-tcp-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-3-TCP通信","TCP communication","13.3",13030000,{"path":4901,"stem":4902,"title":4856,"date":4771,"chapter":4903,"chapterSort":4904,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-1-boost-aiso","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-1-Boost.Aiso","13.4.1",13040100,{"path":4906,"stem":4907,"title":4908,"date":4771,"chapter":4909,"chapterSort":4910,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信","UDP communication","13.4",13040000,{"path":4912,"stem":4913,"title":4914,"date":4771,"chapter":4915,"chapterSort":4916,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-linux-ying-jian-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-Linux硬件通信","Linux hardware communication","13",13000000,{"path":4918,"stem":4919,"title":4920,"date":4771,"chapter":4921,"chapterSort":4922,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-1-ji-qi-ren-zu-cheng","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-1-机器人组成","Robot Composition","14.1",14010000,{"path":4924,"stem":4925,"title":4926,"date":4771,"chapter":4927,"chapterSort":4928,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-1-yuan-cheng-kai-fa-ssh","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-1-远程开发SSH","Remote Development SSH","14.2.1",14020100,{"path":4930,"stem":4931,"title":4932,"date":4771,"chapter":4933,"chapterSort":4934,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-2-yuan-cheng-fang-wen-zhuo-mian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-2-远程访问桌面","Remote Desktop Access","14.2.2",14020200,{"path":4936,"stem":4937,"title":4938,"date":4771,"chapter":4939,"chapterSort":4940,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-2-工控机之远程开发环境","Remote Development Environment for Industrial PC","14.2",14020000,{"path":4942,"stem":4943,"title":4944,"date":4771,"chapter":4945,"chapterSort":4946,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-3-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-3-工控机之外接USB设备","External USB Devices for the Industrial PC","14.3",14030000,{"path":4948,"stem":4949,"title":76,"date":4771,"chapter":4950,"chapterSort":4951,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-4-fen-bu-shi-da-jian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-4-分布式搭建","14.4",14040000,{"path":4953,"stem":4954,"title":4955,"date":4771,"chapter":4956,"chapterSort":4957,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-5-you-hua-ri-zhi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-5-优化日志","Optimize logs","14.5",14050000,{"path":4959,"stem":4960,"title":4961,"date":4771,"chapter":4962,"chapterSort":4963,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-1-li-cheng-ji-odom","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-1-里程计Odom","odometry","14.6.1",14060100,{"path":4965,"stem":4966,"title":4967,"date":4771,"chapter":4968,"chapterSort":4969,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-2-guan-xing-ji-imu","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-2-惯性计IMU","Inertial Measurement Unit (IMU)","14.6.2",14060200,{"path":4971,"stem":4972,"title":4973,"date":4771,"chapter":4974,"chapterSort":4975,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-3-ji-guang-lei-da-lidar","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-3-激光雷达LiDAR","LiDAR","14.6.3",14060300,{"path":4977,"stem":4978,"title":4979,"date":4771,"chapter":4980,"chapterSort":4981,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-4-xiang-ji-camera","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-4-相机Camera","Camera","14.6.4",14060400,{"path":4983,"stem":4984,"title":4985,"date":4771,"chapter":4986,"chapterSort":4987,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-5-quan-qiu-ding-wei-gnss","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-5-全球定位GNSS","Global Navigation Satellite System (GNSS)","14.6.5",14060500,{"path":4989,"stem":4990,"title":4991,"date":4771,"chapter":4992,"chapterSort":4993,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-6-shou-bing-joy","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-6-手柄joy","The query \"手柄JOY\" is a bit ambiguous. To help you better, could you please provide more details? For example:","14.6.6",14060600,{"path":4995,"stem":4996,"title":4997,"date":4771,"chapter":4998,"chapterSort":4999,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-7-jian-pan-kong-zhi-jie-dian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-7-键盘控制节点","Keyboard control node","14.6.7",14060700,{"path":5001,"stem":5002,"title":5003,"date":4771,"chapter":5004,"chapterSort":5005,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-ying-jian-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-6-硬件平台","Hardware platform","14.6",14060000,{"path":5007,"stem":5008,"title":5009,"date":4771,"chapter":5010,"chapterSort":5011,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-7-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-7-坐标系与话题关系","Coordinate System and Topic Relationship","14.7",14070000,{"path":5013,"stem":5014,"title":5015,"date":4771,"chapter":5016,"chapterSort":5017,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-lun-shi-li-cheng-ji-biao-ding","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-轮式里程计标定","Wheel odometry calibration","14.8.1.1",14080101,{"path":5019,"stem":5020,"title":5021,"date":4771,"chapter":5022,"chapterSort":5023,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-轮式里程计与IMU融合","Fusion of Wheel Odometry and IMU","14.8.1.2",14080102,{"path":5025,"stem":5026,"title":5027,"date":4771,"chapter":5028,"chapterSort":5029,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-1-轮式里程计标定与融合","Wheel odometry calibration and fusion","14.8.1",14080100,{"path":5031,"stem":5032,"title":5033,"date":4771,"chapter":5034,"chapterSort":5035,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-2-ji-guang-lei-da-gong-ju","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-2-激光雷达工具","Lidar Tool","14.8.2",14080200,{"path":5037,"stem":5038,"title":5039,"date":4771,"chapter":5040,"chapterSort":5041,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-3-xiang-ji-shi-yong-jin-jie","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-3-相机使用进阶","Advanced Camera Usage","14.8.3",14080300,{"path":5043,"stem":5044,"title":5045,"date":4771,"chapter":5046,"chapterSort":5047,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-ying-jian-ping-tai-jin-jie","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-8-硬件平台进阶","Advanced Hardware Platform","14.8",14080000,{"path":5049,"stem":5050,"title":5051,"date":4771,"chapter":5052,"chapterSort":5053,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","Robot hardware","14",14000000,{"path":5055,"stem":5056,"title":5057,"date":4771,"chapter":5058,"chapterSort":5059,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":5061,"stem":5062,"title":5063,"date":4771,"chapter":5064,"chapterSort":5065,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂","MoveIt2 industrial robot arm","16",16000000,{"path":5067,"stem":5068,"title":5069,"date":4771,"chapter":5070,"chapterSort":5071,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","Robot Navigation with Navigation2 (Physical Robot)","17",17000000,{"path":5073,"stem":5074,"title":5075,"date":4771,"chapter":5076,"chapterSort":5077,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch18-microros","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":5079,"stem":5080,"title":5081,"date":4771,"chapter":5082,"chapterSort":5083,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots simulation platform","19",19000000,{"path":5085,"stem":5086,"title":5087,"date":4771,"chapter":3729,"chapterSort":5088,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch2-入门操作","Getting Started",2000000,{"path":5090,"stem":5091,"title":5092,"date":4771,"chapter":5093,"chapterSort":5094,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch20-opencv","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","OpenCV","20",20000000,{"path":5096,"stem":5097,"title":5098,"date":4771,"chapter":5099,"chapterSort":5100,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","Workspace and Function Packages","3",3000000,{"path":5102,"stem":5103,"title":5104,"date":4771,"chapter":5105,"chapterSort":5106,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch4-四大通信","Four Major Communications","4",4000000,{"path":4768,"stem":4785,"title":5,"date":4771,"chapter":4769,"chapterSort":4770,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},{"path":5109,"stem":5110,"title":5111,"date":4771,"chapter":5112,"chapterSort":5113,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch6-launch","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":5115,"stem":5116,"title":5117,"date":4771,"chapter":5118,"chapterSort":5119,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","Replaying rosbag2","7",7000000,{"path":5121,"stem":5122,"title":5123,"date":4771,"chapter":5124,"chapterSort":5125,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","Coordinate Transformation TF","8",8000000,{"path":5127,"stem":5128,"title":5129,"date":4771,"chapter":5130,"chapterSort":5131,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":4778},"/en-us/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","Visualization Platform RVIZ2 and URDF Modeling Language","9",9000000,{"path":4774,"stem":5133,"title":5134,"date":4771,"chapter":4779,"chapterSort":5135,"docKey":4773,"docRoot":4774,"docTitle":4775,"isWikiDoc":293,"isWikiIndex":293},"_i18n/en-us/wiki/2023-12-30-ros2-tutorial/index","ROS2 Robot Operating System Tutorial",0,{"variants":5137},[5138,5139,5142,5145,5148],{"path":4768,"localeSlug":4781,"i18nKey":4777},{"path":5140,"localeSlug":5141,"i18nKey":4777},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","zh-hant",{"path":5143,"localeSlug":5144,"i18nKey":4777},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","zh-hk",{"path":5146,"localeSlug":5147,"i18nKey":4777},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","zh-tw",{"path":5149,"localeSlug":5150,"i18nKey":4777},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","zh-cn",[4768,4784,5140,4784,5143,4784,5146,4784,5149,4784],1780671798347]