[{"data":1,"prerenderedAt":802},["ShallowReactive",2],{"wiki-page-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":3,"wiki-doc-items-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":492,"language-switcher-data-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":786,"wiki-i18n-paths-\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":801},{"id":4,"title":5,"body":6,"canonicalPath":472,"chapterDepth":473,"chapterOrder":474,"date":475,"description":76,"docI18nKey":476,"docKey":477,"docRoot":478,"docTitle":479,"extension":480,"i18nKey":481,"isBlogPost":482,"isWikiDoc":483,"isWikiIndex":482,"layout":484,"legacyPath":484,"locale":485,"localeSlug":486,"meta":487,"navigation":483,"path":472,"seo":488,"sourcePath":489,"sourceStem":481,"stem":490,"wikiDepth":473,"__hash__":491},"content\u002F_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信.md","TCP communication",{"type":7,"value":8,"toc":460},"minimark",[9,14,18,21,24,27,52,55,60,63,66,69,80,83,165,168,172,175,279,282,286,363,367,370,376,379,396,399,405,409,412,415,418,424,427,431,434],[10,11,13],"h2",{"id":12},"linux-tcp-communication","Linux TCP Communication",[15,16,17],"p",{},"TCP communication is one of the most common communication methods in Linux network programming.",[15,19,20],{},"In robot and embedded Linux projects, TCP is commonly used for reliable communication between host computers, between robots and servers, and between robots and debugging software.",[15,22,23],{},"Compared to serial ports and CAN, TCP is more network-oriented. It usually runs on Ethernet, Wi-Fi, or local loopback networks, suitable for transmitting control commands, configuration parameters, logs, status information, file data, etc.",[15,25,26],{},"In actual projects, TCP communication is common in:",[28,29,30,34,37,40,43,46,49],"ul",{},[31,32,33],"li",{},"Communication between Qt host computer and robot main controller",[31,35,36],{},"Communication between robot and remote server",[31,38,39],{},"Industrial computer and network device communication",[31,41,42],{},"Reliable data exchange between multiple programs",[31,44,45],{},"Remotely send control commands",[31,47,48],{},"Upload logs, configuration files, and map files.",[31,50,51],{},"Communicating with the SDKs of certain radars, cameras, and industrial equipment",[15,53,54],{},"TCP is characterized by reliable, in-order transmission with low data loss, making it suitable for scenarios with high data integrity requirements.",[56,57,59],"h3",{"id":58},"what-is-tcp-communication","What is TCP communication?",[15,61,62],{},"TCP, short for Transmission Control Protocol, is a connection-oriented reliable transport protocol.",[15,64,65],{},"Before using TCP communication, the client and server need to establish a connection. Once the connection is established, both parties can send and receive data just like reading and writing files.",[15,67,68],{},"A typical structure is as follows:",[70,71,77],"pre",{"className":72,"code":74,"language":75,"meta":76},[73],"language-text","TCP Server\n    ↑↓\nTCP Client\n","text","",[78,79,74],"code",{"__ignoreMap":76},[15,81,82],{},"Common concepts include:",[84,85,86,99],"table",{},[87,88,89],"thead",{},[90,91,92,96],"tr",{},[93,94,95],"th",{},"concept",[93,97,98],{},"Explanation",[100,101,102,114,125,133,141,149,157],"tbody",{},[90,103,104,108],{},[105,106,107],"td",{},"IP address",[105,109,110,111],{},"Used to locate devices on the network, such as ",[78,112,113],{},"192.168.1.10",[90,115,116,119],{},[105,117,118],{},"port number",[105,120,121,122],{},"used to distinguish different services on the same device, such as ",[78,123,124],{},"8080",[90,126,127,130],{},[105,128,129],{},"Server",[105,131,132],{},"Server, responsible for listening on a port and waiting for connections.",[90,134,135,138],{},[105,136,137],{},"Client",[105,139,140],{},"Client, actively connect to the server.",[90,142,143,146],{},[105,144,145],{},"Socket",[105,147,148],{},"Abstract interface for network communication",[90,150,151,154],{},[105,152,153],{},"Connection",[105,155,156],{},"A connection must be established before TCP communication.",[90,158,159,162],{},[105,160,161],{},"sticky packet",[105,163,164],{},"TCP is a byte stream protocol, so you need to design your own application layer protocol.",[15,166,167],{},"It is important to note that TCP does not map one message to one receive operation. TCP is essentially a byte stream protocol, so in practical engineering, you usually need to design your own data protocol, such as frame header, length, command word, data area, checksum, etc.",[56,169,171],{"id":170},"common-tcp-libraries-on-linux","Common TCP libraries on Linux",[15,173,174],{},"There are multiple approaches for TCP communication under Linux, common ones include:",[84,176,177,193],{},[87,178,179],{},[90,180,181,184,187,190],{},[93,182,183],{},"solution",[93,185,186],{},"type",[93,188,189],{},"Features",[93,191,192],{},"Suitable scenarios",[100,194,195,209,223,237,251,265],{},[90,196,197,200,203,206],{},[105,198,199],{},"Linux socket API",[105,201,202],{},"Linux native interface",[105,204,205],{},"Lowest level, few dependencies, high versatility.",[105,207,208],{},"Want to deeply understand network communication mechanisms.",[90,210,211,214,217,220],{},[105,212,213],{},"boost::asio",[105,215,216],{},"General-purpose C++ networking library",[105,218,219],{},"Supports synchronous\u002Fasynchronous modes, suitable for C++ project encapsulation.",[105,221,222],{},"Recommended for C++ projects",[90,224,225,228,231,234],{},[105,226,227],{},"Qt Network",[105,229,230],{},"Qt Network Module",[105,232,233],{},"Easy to integrate with Qt interface programs.",[105,235,236],{},"Qt host computer",[90,238,239,242,245,248],{},[105,240,241],{},"Poco Net",[105,243,244],{},"C++ networking library",[105,246,247],{},"Fully encapsulated, feature-rich.",[105,249,250],{},"Medium-to-large C++ service programs",[90,252,253,256,259,262],{},[105,254,255],{},"Python socket",[105,257,258],{},"Python standard library",[105,260,261],{},"Simple and convenient, suitable for testing.",[105,263,264],{},"Python debugging script",[90,266,267,270,273,276],{},[105,268,269],{},"ROS 2 topic\u002Fservice\u002Faction",[105,271,272],{},"ROS 2 communication mechanism",[105,274,275],{},"Suitable for ROS 2 internal node communication.",[105,277,278],{},"ROS 2 internal communication",[15,280,281],{},"These solutions are all fundamentally designed to complete TCP connections, sending, and receiving, differing only in their level of encapsulation.",[56,283,285],{"id":284},"comparison-of-solutions","Comparison of Solutions",[84,287,288,300],{},[87,289,290],{},[90,291,292,294,297],{},[93,293,183],{},[93,295,296],{},"Advantages",[93,298,299],{},"Disadvantages",[100,301,302,312,322,332,342,352],{},[90,303,304,306,309],{},[105,305,199],{},[105,307,308],{},"native, stable, few dependencies, strong versatility",[105,310,311],{},"The code is relatively cumbersome, and asynchronous handling is troublesome.",[90,313,314,316,319],{},[105,315,213],{},[105,317,318],{},"C++ project-friendly, convenient asynchronous communication, suitable for encapsulating drivers.",[105,320,321],{},"Need to understand concepts such as io_context, socket, and callbacks.",[90,323,324,326,329],{},[105,325,227],{},[105,327,328],{},"Integrates naturally with Qt programs; signals and slots are convenient to use.",[105,330,331],{},"Not suitable to be detached from Qt's underlying driver.",[90,333,334,336,339],{},[105,335,241],{},[105,337,338],{},"Encapsulation is complete, strong engineering capability.",[105,340,341],{},"A bit heavy for beginners.",[90,343,344,346,349],{},[105,345,255],{},[105,347,348],{},"Quick to learn and suitable for testing.",[105,350,351],{},"Not suitable as the main thread for C++ low-level",[90,353,354,357,360],{},[105,355,356],{},"ROS 2 Communication",[105,358,359],{},"ROS 2's internal integration is convenient.",[105,361,362],{},"Not suitable as a replacement for general TCP learning",[56,364,366],{"id":365},"this-tutorial-recommends-selecting","This tutorial recommends selecting",[15,368,369],{},"This tutorial recommends prioritizing:",[70,371,374],{"className":372,"code":373,"language":75,"meta":76},[73],"boost::asio\n",[78,375,373],{"__ignoreMap":76},[15,377,378],{},"The reason is:",[28,380,381,384,387,390,393],{},[31,382,383],{},"Suitable for C++ engineering development",[31,385,386],{},"Supports TCP, UDP, serial port, timer, and other features.",[31,388,389],{},"You can write synchronous code, or you can write asynchronous code.",[31,391,392],{},"Does not depend on ROS 2, making it easy to reuse in ordinary C++, OpenCV, Qt, and embedded Linux projects.",[31,394,395],{},"Subsequently, it can be combined with serial port, UDP, and timer to form a unified I\u002FO programming style.",[15,397,398],{},"The recommended project structure is:",[70,400,403],{"className":401,"code":402,"language":75,"meta":76},[73],"上层项目：ROS 2 \u002F OpenCV \u002F Qt \u002F 普通 C++ 程序\n        ↓\n自己封装的 TcpClient \u002F TcpServer 类\n        ↓\nboost::asio\n        ↓\nTCP socket\n        ↓\n远程设备 \u002F 服务器 \u002F 调试软件\n",[78,404,402],{"__ignoreMap":76},[56,406,408],{"id":407},"relationship-with-ros-2","Relationship with ROS 2",[15,410,411],{},"Learning TCP communication does not mean you need to use TCP to replace ROS 2's topics, services, and actions.",[15,413,414],{},"Within the ROS 2 system, communication between nodes typically prioritizes using ROS 2's own communication mechanisms. TCP is better suited for use between devices, programs, or services outside the ROS 2 system.",[15,416,417],{},"For example:",[70,419,422],{"className":420,"code":421,"language":75,"meta":76},[73],"ROS 2 节点\n        ↓\n自己封装的 TcpClient\n        ↓\nboost::asio\n        ↓\n远程服务器 \u002F Qt 调试软件 \u002F 网络设备\n",[78,423,421],{"__ignoreMap":76},[15,425,426],{},"In other words, ROS 2 is responsible for internal communication within the robot system, while TCP handles interaction with external systems, network devices, and remote services.",[56,428,430],{"id":429},"chapter-learning-objectives","Chapter learning objectives",[15,432,433],{},"After completing this chapter, you should be able to:",[28,435,436,439,442,445,448,451,454,457],{},[31,437,438],{},"Basic concepts of TCP communication",[31,440,441],{},"The meaning of IP address, port number, server, and client",[31,443,444],{},"The basic relationship between Linux socket and Boost.Asio",[31,446,447],{},"Creating a TCP client and server using C++",[31,449,450],{},"Understand TCP byte streams and the sticky packet problem",[31,452,453],{},"Design a simple TCP application-layer protocol",[31,455,456],{},"Encapsulate TCP communication as a reusable C++ class",[31,458,459],{},"Lay the foundation for subsequent network device communication, remote control, and Qt host computer.",{"title":76,"searchDepth":461,"depth":461,"links":462},2,[463],{"id":12,"depth":461,"text":13,"children":464},[465,467,468,469,470,471],{"id":58,"depth":466,"text":59},3,{"id":170,"depth":466,"text":171},{"id":284,"depth":466,"text":285},{"id":365,"depth":466,"text":366},{"id":407,"depth":466,"text":408},{"id":429,"depth":466,"text":430},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin",1,"1300-0300","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-0300-TCP通信",false,true,null,"en-US","en-us",{},{"title":5,"description":76},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","5UCqLmSnv4l7JHcks1GR8pyNf0KzMFmhJqohxawegJA",[493,499,504,509,514,519,524,529,534,539,544,549,554,559,564,569,574,579,584,589,594,599,604,609,614,619,623,624,628,633,638,643,648,653,658,663,668,673,678,683,688,693,698,703,708,713,718,723,728,733,738,743,748,753,758,763,768,773,778,783],{"path":494,"stem":495,"title":496,"date":475,"chapterOrder":497,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":500,"stem":501,"title":502,"date":475,"chapterOrder":503,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":505,"stem":506,"title":507,"date":475,"chapterOrder":508,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":510,"stem":511,"title":512,"date":475,"chapterOrder":513,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":515,"stem":516,"title":517,"date":475,"chapterOrder":518,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":520,"stem":521,"title":522,"date":475,"chapterOrder":523,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":525,"stem":526,"title":527,"date":475,"chapterOrder":528,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":530,"stem":531,"title":532,"date":475,"chapterOrder":533,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":535,"stem":536,"title":537,"date":475,"chapterOrder":538,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":540,"stem":541,"title":542,"date":475,"chapterOrder":543,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":545,"stem":546,"title":547,"date":475,"chapterOrder":548,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":550,"stem":551,"title":552,"date":475,"chapterOrder":553,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":555,"stem":556,"title":557,"date":475,"chapterOrder":558,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":560,"stem":561,"title":562,"date":475,"chapterOrder":563,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":565,"stem":566,"title":567,"date":475,"chapterOrder":568,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":570,"stem":571,"title":572,"date":475,"chapterOrder":573,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":575,"stem":576,"title":577,"date":475,"chapterOrder":578,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":580,"stem":581,"title":582,"date":475,"chapterOrder":583,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":585,"stem":586,"title":587,"date":475,"chapterOrder":588,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":590,"stem":591,"title":592,"date":475,"chapterOrder":593,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":595,"stem":596,"title":597,"date":475,"chapterOrder":598,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":600,"stem":601,"title":602,"date":475,"chapterOrder":603,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":605,"stem":606,"title":607,"date":475,"chapterOrder":608,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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","SocketCAN","1300-0200-0100",{"path":610,"stem":611,"title":612,"date":475,"chapterOrder":613,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":615,"stem":616,"title":617,"date":475,"chapterOrder":618,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN communication","1300-0200",{"path":620,"stem":621,"title":592,"date":475,"chapterOrder":622,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":472,"stem":490,"title":5,"date":475,"chapterOrder":474,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},{"path":625,"stem":626,"title":592,"date":475,"chapterOrder":627,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":629,"stem":630,"title":631,"date":475,"chapterOrder":632,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":634,"stem":635,"title":636,"date":475,"chapterOrder":637,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":639,"stem":640,"title":641,"date":475,"chapterOrder":642,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":644,"stem":645,"title":646,"date":475,"chapterOrder":647,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":649,"stem":650,"title":651,"date":475,"chapterOrder":652,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":654,"stem":655,"title":656,"date":475,"chapterOrder":657,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":659,"stem":660,"title":661,"date":475,"chapterOrder":662,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":664,"stem":665,"title":666,"date":475,"chapterOrder":667,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":669,"stem":670,"title":671,"date":475,"chapterOrder":672,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":674,"stem":675,"title":676,"date":475,"chapterOrder":677,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":679,"stem":680,"title":681,"date":475,"chapterOrder":682,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":684,"stem":685,"title":686,"date":475,"chapterOrder":687,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":689,"stem":690,"title":691,"date":475,"chapterOrder":692,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":694,"stem":695,"title":696,"date":475,"chapterOrder":697,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":699,"stem":700,"title":701,"date":475,"chapterOrder":702,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":704,"stem":705,"title":706,"date":475,"chapterOrder":707,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":709,"stem":710,"title":711,"date":475,"chapterOrder":712,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":714,"stem":715,"title":716,"date":475,"chapterOrder":717,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":719,"stem":720,"title":721,"date":475,"chapterOrder":722,"chapterDepth":466,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":724,"stem":725,"title":726,"date":475,"chapterOrder":727,"chapterDepth":466,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":729,"stem":730,"title":731,"date":475,"chapterOrder":732,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":734,"stem":735,"title":736,"date":475,"chapterOrder":737,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":739,"stem":740,"title":741,"date":475,"chapterOrder":742,"chapterDepth":461,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":744,"stem":745,"title":746,"date":475,"chapterOrder":747,"chapterDepth":473,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":749,"stem":750,"title":751,"date":475,"chapterOrder":752,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":754,"stem":755,"title":756,"date":475,"chapterOrder":757,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":759,"stem":760,"title":761,"date":475,"chapterOrder":762,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":764,"stem":765,"title":766,"date":475,"chapterOrder":767,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":769,"stem":770,"title":771,"date":475,"chapterOrder":772,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":774,"stem":775,"title":776,"date":475,"chapterOrder":777,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\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":779,"stem":780,"title":781,"date":475,"chapterOrder":782,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":482},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":478,"stem":784,"title":785,"date":475,"chapterOrder":484,"chapterDepth":498,"docKey":477,"docRoot":478,"docTitle":479,"isWikiDoc":483,"isWikiIndex":483},"_i18n\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2 Robot Operating System Tutorial",{"variants":787},[788,789,792,795,798],{"path":472,"localeSlug":486,"i18nKey":481},{"path":790,"localeSlug":791,"i18nKey":481},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-hant",{"path":793,"localeSlug":794,"i18nKey":481},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-hk",{"path":796,"localeSlug":797,"i18nKey":481},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-tw",{"path":799,"localeSlug":800,"i18nKey":481},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-cn",[472,489,790,489,793,489,796,489,799,489],1784646856228]