[{"data":1,"prerenderedAt":923},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin":614,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin":907,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin":922},{"id":4,"title":5,"body":6,"canonicalPath":595,"chapterDepth":160,"chapterOrder":596,"date":597,"description":153,"docI18nKey":598,"docKey":599,"docRoot":600,"docTitle":601,"extension":602,"i18nKey":603,"isBlogPost":604,"isWikiDoc":605,"isWikiIndex":604,"layout":606,"legacyPath":606,"locale":607,"localeSlug":608,"meta":609,"navigation":605,"path":595,"seo":610,"sourcePath":611,"sourceStem":603,"stem":612,"wikiDepth":160,"__hash__":613},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信.md","CAN communication",{"type":7,"value":8,"toc":581},"minimark",[9,14,18,21,24,46,49,54,57,60,63,139,147,164,167,181,185,188,199,202,316,320,396,400,403,411,414,436,439,445,448,454,458,461,466,469,475,478,482,487,493,496,499,505,510,514,517,520,523,529,532,536,539,577],[10,11,13],"h2",{"id":12},"linux-can-communication","Linux CAN communication",[15,16,17],"p",{},"CAN communication is a very common bus communication method in robotics, vehicles, industrial control, and motor drives.",[15,19,20],{},"Compared to serial communication, CAN is better suited for multiple devices communicating on the same bus. For example, in a robot chassis, multiple motor drivers, a chassis control board, and sensor nodes may all be connected to the CAN bus.",[15,22,23],{},"In practical projects, CAN communication is common in:",[25,26,27,31,34,37,40,43],"ul",{},[28,29,30],"li",{},"Control motor driver",[28,32,33],{},"Read motor encoder feedback",[28,35,36],{},"Connect the chassis control board",[28,38,39],{},"Communication between multiple control nodes",[28,41,42],{},"Vehicle bus communication",[28,44,45],{},"Industrial equipment and motion control systems",[15,47,48],{},"For areas such as mobile robot chassis, motor control, and autonomous driving by-wire systems, CAN is a very important type of communication method.",[50,51,53],"h3",{"id":52},"what-is-can-communication","What is CAN communication?",[15,55,56],{},"CAN, full name Controller Area Network, is a multi-master bus communication protocol.",[15,58,59],{},"Unlike serial point-to-point communication, multiple nodes can be connected to the CAN bus. Each node can send messages, and other nodes determine whether to process the message based on the CAN ID.",[15,61,62],{},"Common concepts in CAN communication include:",[64,65,66,79],"table",{},[67,68,69],"thead",{},[70,71,72,76],"tr",{},[73,74,75],"th",{},"concept",[73,77,78],{},"Explanation",[80,81,82,91,99,107,115,123,131],"tbody",{},[70,83,84,88],{},[85,86,87],"td",{},"CAN ID",[85,89,90],{},"Used to identify the meaning or source of a CAN message frame.",[70,92,93,96],{},[85,94,95],{},"standard frame",[85,97,98],{},"11-bit CAN ID",[70,100,101,104],{},[85,102,103],{},"extended frame",[85,105,106],{},"29-bit CAN ID",[70,108,109,112],{},[85,110,111],{},"data area",[85,113,114],{},"Classic CAN frame has at most 8 bytes of data.",[70,116,117,120],{},[85,118,119],{},"CAN FD",[85,121,122],{},"An extended version of CAN that supports longer data fields and higher data rates.",[70,124,125,128],{},[85,126,127],{},"baud rate",[85,129,130],{},"Common values include 250K, 500K, and 1M.",[70,132,133,136],{},[85,134,135],{},"termination resistor",[85,137,138],{},"CAN bus typically requires 120Ω termination resistors at both ends.",[15,140,141,142,146],{},"In Linux, CAN devices are usually not device files like ",[143,144,145],"code",{},"\u002Fdev\u002FttyUSB0",", but are abstracted into network interfaces, for example:",[148,149,154],"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes github-light github-dark","can0\n","bash","",[143,155,156],{"__ignoreMap":153},[157,158,161],"span",{"class":159,"line":160},"line",1,[157,162,151],{"class":163},"sScJk",[15,165,166],{},"You can view it with the following command:",[148,168,170],{"className":150,"code":169,"language":152,"meta":153,"style":153},"ip link\n",[143,171,172],{"__ignoreMap":153},[157,173,174,177],{"class":159,"line":160},[157,175,176],{"class":163},"ip",[157,178,180],{"class":179},"sZZnC"," link\n",[50,182,184],{"id":183},"common-can-tools-and-libraries-for-linux","Common CAN Tools and Libraries for Linux",[15,186,187],{},"The core of CAN communication on Linux is SocketCAN.",[15,189,190,191,194,195,198],{},"SocketCAN is a CAN communication framework provided by the Linux kernel. It abstracts CAN devices into a form similar to network interfaces, for example ",[143,192,193],{},"can0",", ",[143,196,197],{},"can1",".",[15,200,201],{},"Common tools and libraries include:",[64,203,204,220],{},[67,205,206],{},[70,207,208,211,214,217],{},[73,209,210],{},"solution",[73,212,213],{},"type",[73,215,216],{},"Features",[73,218,219],{},"Suitable scenarios",[80,221,222,236,260,274,288,302],{},[70,223,224,227,230,233],{},[85,225,226],{},"SocketCAN",[85,228,229],{},"Linux native CAN interface",[85,231,232],{},"Linux standard solution: universal, stable, and commonly used in engineering.",[85,234,235],{},"Recommended as a primary learning path",[70,237,238,241,244,257],{},[85,239,240],{},"can-utils",[85,242,243],{},"SocketCAN command-line tool set",[85,245,246,247,194,250,194,253,256],{},"Provide tools such as ",[143,248,249],{},"candump",[143,251,252],{},"cansend",[143,254,255],{},"cangen",", etc.",[85,258,259],{},"Debugging CAN Bus",[70,261,262,265,268,271],{},[85,263,264],{},"libsocketcan",[85,266,267],{},"SocketCAN Helper Library",[85,269,270],{},"Easy to configure and manage the CAN interface",[85,272,273],{},"Use when configuring CAN parameters within the program.",[70,275,276,279,282,285],{},[85,277,278],{},"ros2_socketcan",[85,280,281],{},"ROS 2 Wrapper Library",[85,283,284],{},"Integrating SocketCAN into the ROS 2 ecosystem",[85,286,287],{},"Pure ROS 2 project or reference implementation",[70,289,290,293,296,299],{},[85,291,292],{},"ros2_canopen",[85,294,295],{},"ROS 2 CANopen protocol stack",[85,297,298],{},"Suitable for CANopen devices",[85,300,301],{},"When the motor driver uses the CANopen protocol,",[70,303,304,307,310,313],{},[85,305,306],{},"vendor SDK",[85,308,309],{},"vendor-provided driver library",[85,311,312],{},"bound to specific hardware",[85,314,315],{},"When using specific USB-CAN, PCIe-CAN devices",[50,317,319],{"id":318},"comparison-of-solutions","Comparison of Solutions",[64,321,322,334],{},[67,323,324],{},[70,325,326,328,331],{},[73,327,210],{},[73,329,330],{},"Advantages",[73,332,333],{},"Disadvantages",[80,335,336,346,356,366,376,386],{},[70,337,338,340,343],{},[85,339,226],{},[85,341,342],{},"Linux-native, general-purpose, stable, and ideal for long-term learning.",[85,344,345],{},"Need to understand socket programming and CAN frame structure.",[70,347,348,350,353],{},[85,349,240],{},[85,351,352],{},"Easy debugging, simple commands.",[85,354,355],{},"Mainly used for command line testing, not a complete project package.",[70,357,358,360,363],{},[85,359,264],{},[85,361,362],{},"Configuring the CAN interface is convenient.",[85,364,365],{},"Not the primary data communication solution.",[70,367,368,370,373],{},[85,369,278],{},[85,371,372],{},"Convenient integration with the ROS 2 ecosystem",[85,374,375],{},"After leaving ROS 2, reusability is poor.",[70,377,378,380,383],{},[85,379,292],{},[85,381,382],{},"Suitable for CANopen devices, complete protocol stack.",[85,384,385],{},"Only suitable for CANopen scenarios, learning cost is relatively high.",[70,387,388,390,393],{},[85,389,306],{},[85,391,392],{},"Good support for specific hardware",[85,394,395],{},"Poor generality, easily tied to a vendor.",[50,397,399],{"id":398},"this-tutorial-recommends-selecting","This tutorial recommends selecting",[15,401,402],{},"This tutorial recommends prioritizing:",[148,404,409],{"className":405,"code":407,"language":408,"meta":153},[406],"language-text","SocketCAN + can-utils\n","text",[143,410,407],{"__ignoreMap":153},[15,412,413],{},"The reason is:",[25,415,416,419,422,427,430],{},[28,417,418],{},"SocketCAN is the standard solution for CAN communication on Linux.",[28,420,421],{},"Independent of ROS 2, suitable for regular C++, OpenCV, Qt, embedded Linux projects",[28,423,424,426],{},[143,425,240],{}," is very suitable for debugging and verifying CAN devices.",[28,428,429],{},"Later, it can be packaged as a standard C++ driver.",[28,431,432,433],{},"Can naturally integrate with ",[143,434,435],{},"ros2_control hardware_interface",[15,437,438],{},"The recommended learning order is:",[148,440,443],{"className":441,"code":442,"language":408,"meta":153},[406],"1. 使用 ip link 配置 can0\n2. 使用 candump 接收 CAN 帧\n3. 使用 cansend 发送 CAN 帧\n4. 理解 struct can_frame\n5. 使用 C++ SocketCAN 进行收发\n6. 封装自己的 CanDriver 类\n7. 接入 ROS 2 或 ros2_control\n",[143,444,442],{"__ignoreMap":153},[15,446,447],{},"The recommended project structure is:",[148,449,452],{"className":450,"code":451,"language":408,"meta":153},[406],"上层项目：ROS 2 \u002F OpenCV \u002F Qt \u002F 普通 C++ 程序\n        ↓\n自己封装的 CanDriver 类\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器 \u002F STM32 \u002F 底盘控制板\n",[143,453,451],{"__ignoreMap":153},[50,455,457],{"id":456},"relationship-with-ros-2","Relationship with ROS 2",[15,459,460],{},"Learning SocketCAN doesn't mean you don't need ROS 2.",[15,462,463,464,198],{},"In a ROS 2 project, you can encapsulate CAN communication as a regular C++ class, then use it in a ROS 2 node or ",[143,465,435],{},[15,467,468],{},"For example:",[148,470,473],{"className":471,"code":472,"language":408,"meta":153},[406],"ros2_control controller\n        ↓\nhardware_interface\n        ↓\n自己封装的 CanDriver\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器\n",[143,474,472],{"__ignoreMap":153},[15,476,477],{},"The advantage of this approach is that the CAN communication code is not tightly coupled with ROS 2. Even when working on standard C++ projects, Qt host computer applications, or OpenCV control programs in the future, the same CAN driver can still be reused.",[50,479,481],{"id":480},"when-to-use-ros2_socketcan","When to use ros2_socketcan",[15,483,484,486],{},[143,485,278],{}," is not unusable.",[15,488,489,490,492],{},"If the project itself is a pure ROS 2 architecture, and you want to quickly convert CAN frames into ROS 2 topics, then ",[143,491,278],{}," is an option worth considering.",[15,494,495],{},"However, for learning low-level drivers and long-term engineering reuse, it is still recommended to first master SocketCAN.",[15,497,498],{},"It can be understood this way:",[148,500,503],{"className":501,"code":502,"language":408,"meta":153},[406],"SocketCAN：底层能力\nros2_socketcan：ROS 2 封装\n",[143,504,502],{"__ignoreMap":153},[15,506,507,508,198],{},"First learn SocketCAN, then it will be easier to understand ",[143,509,278],{},[50,511,513],{"id":512},"when-to-use-ros2_canopen","When to use ros2_canopen",[15,515,516],{},"If your motor driver or industrial device uses the CANopen protocol, you can’t just treat it as ordinary CAN frame communication.",[15,518,519],{},"CANopen is a high-level protocol built on top of CAN, involving concepts such as object dictionary, PDO, SDO, NMT, etc.",[15,521,522],{},"In this case, consider learning:",[148,524,527],{"className":525,"code":526,"language":408,"meta":153},[406],"ros2_canopen\n",[143,528,526],{"__ignoreMap":153},[15,530,531],{},"But if your device only uses a custom CAN protocol, such as defining your own CAN IDs and data formats, then prioritizing learning SocketCAN is sufficient.",[50,533,535],{"id":534},"chapter-learning-objectives","Chapter learning objectives",[15,537,538],{},"After completing this chapter, you should be able to:",[25,540,541,544,550,556,565,568,571,574],{},[28,542,543],{},"Basic concepts of CAN communication",[28,545,546,547,549],{},"How to use the ",[143,548,193],{}," device on Linux",[28,551,552,553],{},"Configure CAN baud rate using ",[143,554,555],{},"ip link",[28,557,558,559,561,562,564],{},"Use ",[143,560,249],{}," and ",[143,563,252],{}," to debug the CAN bus",[28,566,567],{},"Understand concepts such as CAN ID, standard frame, extended frame, data field, etc.",[28,569,570],{},"Sending and Receiving CAN Frames Using C++ SocketCAN",[28,572,573],{},"Encapsulate CAN communication into reusable C++ classes",[28,575,576],{},"Lay the foundation for subsequent integration with ROS 2, ros2_control, and motor driver control.",[578,579,580],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}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}",{"title":153,"searchDepth":582,"depth":582,"links":583},2,[584],{"id":12,"depth":582,"text":13,"children":585},[586,588,589,590,591,592,593,594],{"id":52,"depth":587,"text":53},3,{"id":183,"depth":587,"text":184},{"id":318,"depth":587,"text":319},{"id":398,"depth":587,"text":399},{"id":456,"depth":587,"text":457},{"id":480,"depth":587,"text":481},{"id":512,"depth":587,"text":513},{"id":534,"depth":587,"text":535},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","1300-0200","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","en-us:2023-12-30-ros2-tutorial","\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信",false,true,null,"en-US","en-us",{},{"title":5,"description":153},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","YzxEWPQI4qVoZFgWytDvihDWcn1xgt-GhV4UxV0efYc",[615,621,626,631,636,641,646,651,656,661,666,671,676,681,686,691,696,701,706,711,716,721,726,730,735,736,740,745,749,754,759,764,769,774,779,784,789,794,799,804,809,814,819,824,829,834,839,844,849,854,859,864,869,874,879,884,889,894,899,904],{"path":616,"stem":617,"title":618,"date":597,"chapterOrder":619,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","Introduction to ROS2","0100",0,{"path":622,"stem":623,"title":624,"date":597,"chapterOrder":625,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","Getting Started","0200",{"path":627,"stem":628,"title":629,"date":597,"chapterOrder":630,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","Workspace and Function Packages","0300",{"path":632,"stem":633,"title":634,"date":597,"chapterOrder":635,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","Four Major Communications","0400",{"path":637,"stem":638,"title":639,"date":597,"chapterOrder":640,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2 Other Communication Mechanisms","0500",{"path":642,"stem":643,"title":644,"date":597,"chapterOrder":645,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":647,"stem":648,"title":649,"date":597,"chapterOrder":650,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","Replaying rosbag2","0700",{"path":652,"stem":653,"title":654,"date":597,"chapterOrder":655,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","Coordinate Transformation TF","0800",{"path":657,"stem":658,"title":659,"date":597,"chapterOrder":660,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","Visualization Platform RVIZ2 and URDF Modeling Language","0900",{"path":662,"stem":663,"title":664,"date":597,"chapterOrder":665,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2 Simulation Platform","1000",{"path":667,"stem":668,"title":669,"date":597,"chapterOrder":670,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":672,"stem":673,"title":674,"date":597,"chapterOrder":675,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":677,"stem":678,"title":679,"date":597,"chapterOrder":680,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":682,"stem":683,"title":684,"date":597,"chapterOrder":685,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","Migrate Ign Gazebo to Gz Sim","1100-0400",{"path":687,"stem":688,"title":689,"date":597,"chapterOrder":690,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gazebo simulation platform","1100",{"path":692,"stem":693,"title":694,"date":597,"chapterOrder":695,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble Navigation Simulation","1200-0100",{"path":697,"stem":698,"title":699,"date":597,"chapterOrder":700,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy Navigation Simulation","1200-0200",{"path":702,"stem":703,"title":704,"date":597,"chapterOrder":705,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Differences in Navigation between Humble and Jazzy","1200-0300",{"path":707,"stem":708,"title":709,"date":597,"chapterOrder":710,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","Robot Navigation with Navigation2 (Simulation)","1200",{"path":712,"stem":713,"title":714,"date":597,"chapterOrder":715,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库","1300-0100-0100",{"path":717,"stem":718,"title":719,"date":597,"chapterOrder":720,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver Library","1300-0100-0200",{"path":722,"stem":723,"title":724,"date":597,"chapterOrder":725,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART serial communication","1300-0100",{"path":727,"stem":728,"title":226,"date":597,"chapterOrder":729,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","1300-0200-0100",{"path":731,"stem":732,"title":733,"date":597,"chapterOrder":734,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":595,"stem":612,"title":5,"date":597,"chapterOrder":596,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},{"path":737,"stem":738,"title":714,"date":597,"chapterOrder":739,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":741,"stem":742,"title":743,"date":597,"chapterOrder":744,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP communication","1300-0300",{"path":746,"stem":747,"title":714,"date":597,"chapterOrder":748,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":750,"stem":751,"title":752,"date":597,"chapterOrder":753,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP communication","1300-0400",{"path":755,"stem":756,"title":757,"date":597,"chapterOrder":758,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux hardware communication","1300",{"path":760,"stem":761,"title":762,"date":597,"chapterOrder":763,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","Robot Composition","1400-0100",{"path":765,"stem":766,"title":767,"date":597,"chapterOrder":768,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","Remote Development SSH","1400-0200-0100",{"path":770,"stem":771,"title":772,"date":597,"chapterOrder":773,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","Remote Desktop Access","1400-0200-0200",{"path":775,"stem":776,"title":777,"date":597,"chapterOrder":778,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","Remote Development Environment for Industrial PC","1400-0200",{"path":780,"stem":781,"title":782,"date":597,"chapterOrder":783,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","External USB Devices for the Industrial PC","1400-0300",{"path":785,"stem":786,"title":787,"date":597,"chapterOrder":788,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","Distributed setup","1400-0400",{"path":790,"stem":791,"title":792,"date":597,"chapterOrder":793,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","Optimize logs","1400-0500",{"path":795,"stem":796,"title":797,"date":597,"chapterOrder":798,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","odometry","1400-0600-0100",{"path":800,"stem":801,"title":802,"date":597,"chapterOrder":803,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","Inertial Measurement Unit (IMU)","1400-0600-0200",{"path":805,"stem":806,"title":807,"date":597,"chapterOrder":808,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","LiDAR","1400-0600-0300",{"path":810,"stem":811,"title":812,"date":597,"chapterOrder":813,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","Camera","1400-0600-0400",{"path":815,"stem":816,"title":817,"date":597,"chapterOrder":818,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","Global Navigation Satellite System (GNSS)","1400-0600-0500",{"path":820,"stem":821,"title":822,"date":597,"chapterOrder":823,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","The query \"手柄JOY\" is a bit ambiguous. To help you better, could you please provide more details? For example:","1400-0600-0600",{"path":825,"stem":826,"title":827,"date":597,"chapterOrder":828,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","Keyboard control node","1400-0600-0700",{"path":830,"stem":831,"title":832,"date":597,"chapterOrder":833,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","Hardware platform","1400-0600",{"path":835,"stem":836,"title":837,"date":597,"chapterOrder":838,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","Coordinate System and Topic Relationship","1400-0700",{"path":840,"stem":841,"title":842,"date":597,"chapterOrder":843,"chapterDepth":587,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","Wheel odometry calibration","1400-0800-0100-0100",{"path":845,"stem":846,"title":847,"date":597,"chapterOrder":848,"chapterDepth":587,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","Fusion of Wheel Odometry and IMU","1400-0800-0100-0200",{"path":850,"stem":851,"title":852,"date":597,"chapterOrder":853,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","Wheel odometry calibration and fusion","1400-0800-0100",{"path":855,"stem":856,"title":857,"date":597,"chapterOrder":858,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","Lidar Tool","1400-0800-0200",{"path":860,"stem":861,"title":862,"date":597,"chapterOrder":863,"chapterDepth":582,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","Advanced Camera Usage","1400-0800-0300",{"path":865,"stem":866,"title":867,"date":597,"chapterOrder":868,"chapterDepth":160,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","Advanced Hardware Platform","1400-0800",{"path":870,"stem":871,"title":872,"date":597,"chapterOrder":873,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","Robot hardware","1400",{"path":875,"stem":876,"title":877,"date":597,"chapterOrder":878,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":880,"stem":881,"title":882,"date":597,"chapterOrder":883,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","MoveIt2 industrial robot arm","1600",{"path":885,"stem":886,"title":887,"date":597,"chapterOrder":888,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","Robot Navigation with Navigation2 (Physical Robot)","1700",{"path":890,"stem":891,"title":892,"date":597,"chapterOrder":893,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":895,"stem":896,"title":897,"date":597,"chapterOrder":898,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots simulation platform","1900",{"path":900,"stem":901,"title":902,"date":597,"chapterOrder":903,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":604},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":600,"stem":905,"title":906,"date":597,"chapterOrder":606,"chapterDepth":620,"docKey":599,"docRoot":600,"docTitle":601,"isWikiDoc":605,"isWikiIndex":605},"_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2 Robot Operating System Tutorial",{"variants":908},[909,910,913,916,919],{"path":595,"localeSlug":608,"i18nKey":603},{"path":911,"localeSlug":912,"i18nKey":603},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","zh-hant",{"path":914,"localeSlug":915,"i18nKey":603},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","zh-hk",{"path":917,"localeSlug":918,"i18nKey":603},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","zh-tw",{"path":920,"localeSlug":921,"i18nKey":603},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","zh-cn",[595,611,911,611,914,611,917,611,920,611],1784646855423]