[{"data":1,"prerenderedAt":948},["ShallowReactive",2],{"wiki-page-/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin":3,"wiki-doc-items-/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin":580,"language-switcher-data-/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin":932,"wiki-i18n-paths-/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin":947},{"id":4,"title":5,"body":6,"canonicalPath":559,"chapter":560,"chapterSort":561,"date":562,"description":79,"docI18nKey":563,"docKey":564,"docRoot":565,"docTitle":566,"extension":567,"i18nKey":568,"isBlogPost":569,"isWikiDoc":570,"isWikiIndex":569,"layout":571,"legacyPath":571,"locale":572,"localeSlug":573,"meta":574,"navigation":570,"path":559,"seo":575,"sourcePath":576,"sourceStem":568,"stem":577,"wikiDepth":578,"__hash__":579},"content/_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信.md","UDP communication",{"type":7,"value":8,"toc":546},"minimark",[9,14,18,21,24,27,55,58,63,66,69,72,83,86,92,95,171,174,178,181,271,274,278,343,347,350,356,359,376,379,385,389,392,479,482,488,492,495,498,501,507,510,516,520,523],[10,11,13],"h2",{"id":12},"linux-udp-communication","Linux UDP Communication",[15,16,17],"p",{},"UDP communication is a very common method of communication in Linux network programming.",[15,19,20],{},"Compared to TCP, UDP doesn't require a connection to be established beforehand—the sender can directly transmit data to a specific IP and port. It features simplicity, low latency, and low overhead, but it doesn't guarantee delivery or order.",[15,22,23],{},"In robot projects, UDP is often used for high-frequency, real-time data transmission scenarios that allow a small amount of packet loss.",[15,25,26],{},"In practical projects, UDP communication is commonly used for:",[28,29,30,34,37,40,43,46,49,52],"ul",{},[31,32,33],"li",{},"Lidar data transmission",[31,35,36],{},"network camera or sensor data stream",[31,38,39],{},"Robot Status Broadcast",[31,41,42],{},"LAN device discovery",[31,44,45],{},"Remote controller or gamepad data transmission",[31,47,48],{},"Simple communication between multiple robots",[31,50,51],{},"High-frequency status reporting",[31,53,54],{},"Scenarios with high real-time requirements but tolerating some packet loss",[15,56,57],{},"The core characteristic of UDP is speed, but it is unreliable. Therefore, it is more suitable for \"continuous data streams\" rather than scenarios where \"every message must be guaranteed to be delivered.\"",[59,60,62],"h3",{"id":61},"what-is-udp-communication","What is UDP communication?",[15,64,65],{},"UDP, which stands for User Datagram Protocol, is a connectionless transport protocol.",[15,67,68],{},"Unlike TCP, UDP communication does not require establishing a connection. As long as you know the destination IP and port, you can send data directly.",[15,70,71],{},"A typical structure is as follows:",[73,74,80],"pre",{"className":75,"code":77,"language":78,"meta":79},[76],"language-text","UDP Sender\n    ↓\nUDP Receiver\n","text","",[81,82,77],"code",{"__ignoreMap":79},[15,84,85],{},"It can also be bidirectional communication:",[73,87,90],{"className":88,"code":89,"language":78,"meta":79},[76],"程序 A  ←UDP→  程序 B\n",[81,91,89],{"__ignoreMap":79},[15,93,94],{},"Common concepts include:",[96,97,98,111],"table",{},[99,100,101],"thead",{},[102,103,104,108],"tr",{},[105,106,107],"th",{},"concept",[105,109,110],{},"Explanation",[112,113,114,123,131,139,147,155,163],"tbody",{},[102,115,116,120],{},[117,118,119],"td",{},"IP address",[117,121,122],{},"used to locate devices in the network",[102,124,125,128],{},[117,126,127],{},"port number",[117,129,130],{},"Used to differentiate between different programs.",[102,132,133,136],{},[117,134,135],{},"Datagram",[117,137,138],{},"UDP datagram: each send corresponds to one datagram.",[102,140,141,144],{},[117,142,143],{},"broadcast",[117,145,146],{},"send data to multiple devices on the local area network",[102,148,149,152],{},[117,150,151],{},"multicast",[117,153,154],{},"Send data to devices in the same multicast group",[102,156,157,160],{},[117,158,159],{},"packet loss",[117,161,162],{},"UDP does not guarantee data delivery",[102,164,165,168],{},[117,166,167],{},"Out of Order",[117,169,170],{},"UDP does not guarantee that data arrives in order.",[15,172,173],{},"The biggest difference between UDP and TCP is: TCP is a reliable byte stream, while UDP is an unreliable datagram.",[59,175,177],{"id":176},"common-udp-libraries-on-linux","Common UDP Libraries on Linux",[15,179,180],{},"There are multiple approaches for UDP communication under Linux, common ones include:",[96,182,183,199],{},[99,184,185],{},[102,186,187,190,193,196],{},[105,188,189],{},"solution",[105,191,192],{},"type",[105,194,195],{},"Features",[105,197,198],{},"Suitable scenarios",[112,200,201,215,229,243,257],{},[102,202,203,206,209,212],{},[117,204,205],{},"Linux socket API",[117,207,208],{},"Linux native interface",[117,210,211],{},"Lowest level, few dependencies, high versatility.",[117,213,214],{},"Want to deeply understand network communication mechanisms.",[102,216,217,220,223,226],{},[117,218,219],{},"boost::asio",[117,221,222],{},"General-purpose C++ networking library",[117,224,225],{},"Supports synchronous and asynchronous UDP, suitable for engineering encapsulation.",[117,227,228],{},"Recommended for C++ projects",[102,230,231,234,237,240],{},[117,232,233],{},"Qt Network",[117,235,236],{},"Qt Network Module",[117,238,239],{},"Easy to integrate with Qt interface programs.",[117,241,242],{},"Qt host computer",[102,244,245,248,251,254],{},[117,246,247],{},"Python socket",[117,249,250],{},"Python standard library",[117,252,253],{},"Simple and convenient, suitable for testing.",[117,255,256],{},"Python debugging script",[102,258,259,262,265,268],{},[117,260,261],{},"ROS 2 topic",[117,263,264],{},"ROS 2 communication mechanism",[117,266,267],{},"ROS 2 internal communication is convenient.",[117,269,270],{},"ROS 2 Internal Data Transfer",[15,272,273],{},"These solutions are essentially all for completing the sending and receiving of UDP datagrams, just with different encapsulation methods.",[59,275,277],{"id":276},"comparison-of-solutions","Comparison of Solutions",[96,279,280,292],{},[99,281,282],{},[102,283,284,286,289],{},[105,285,189],{},[105,287,288],{},"Advantages",[105,290,291],{},"Disadvantages",[112,293,294,304,314,324,334],{},[102,295,296,298,301],{},[117,297,205],{},[117,299,300],{},"native, stable, few dependencies, strong versatility",[117,302,303],{},"The code is relatively cumbersome, and asynchronous handling is troublesome.",[102,305,306,308,311],{},[117,307,219],{},[117,309,310],{},"C++ project-friendly, convenient asynchronous UDP, suitable for encapsulating a driver.",[117,312,313],{},"Need to understand concepts such as io_context, endpoint, socket.",[102,315,316,318,321],{},[117,317,233],{},[117,319,320],{},"Naturally integrates with Qt programs, suitable for the host computer.",[117,322,323],{},"Not suitable to be detached from Qt's underlying driver.",[102,325,326,328,331],{},[117,327,247],{},[117,329,330],{},"Quick to get started, suitable for testing UDP packets.",[117,332,333],{},"Not suitable as the main thread for C++ low-level",[102,335,336,338,340],{},[117,337,261],{},[117,339,267],{},[117,341,342],{},"Not suitable as a substitute for general UDP learning.",[59,344,346],{"id":345},"this-tutorial-recommends-selecting","This tutorial recommends selecting",[15,348,349],{},"This tutorial recommends prioritizing:",[73,351,354],{"className":352,"code":353,"language":78,"meta":79},[76],"boost::asio\n",[81,355,353],{"__ignoreMap":79},[15,357,358],{},"The reason is:",[28,360,361,364,367,370,373],{},[31,362,363],{},"Suitable for C++ engineering development",[31,365,366],{},"and TCP, serial port, and timers can use the same Boost.Asio programming model",[31,368,369],{},"Supports synchronous and asynchronous UDP sending and receiving.",[31,371,372],{},"Does not depend on ROS 2, making it easy to reuse in ordinary C++, OpenCV, Qt, and embedded Linux projects.",[31,374,375],{},"Suitable for encapsulating functions such as network sensors, remote control, status broadcast, etc.",[15,377,378],{},"The recommended project structure is:",[73,380,383],{"className":381,"code":382,"language":78,"meta":79},[76],"上层项目：ROS 2 / OpenCV / Qt / 普通 C++ 程序\n        ↓\n自己封装的 UdpSender / UdpReceiver 类\n        ↓\nboost::asio\n        ↓\nUDP socket\n        ↓\n雷达 / 网络设备 / 远程控制端\n",[81,384,382],{"__ignoreMap":79},[59,386,388],{"id":387},"how-to-choose-between-tcp-and-udp","How to choose between TCP and UDP",[15,390,391],{},"TCP and UDP are both commonly used, but they are suitable for different scenarios.",[96,393,394,407],{},[99,395,396],{},[102,397,398,401,404],{},[105,399,400],{},"Comparison item",[105,402,403],{},"TCP",[105,405,406],{},"UDP",[112,408,409,420,431,446,457,468],{},[102,410,411,414,417],{},[117,412,413],{},"Connect?",[117,415,416],{},"Need to establish a connection.",[117,418,419],{},"No need to establish a connection",[102,421,422,425,428],{},[117,423,424],{},"reliability",[117,426,427],{},"reliable transmission",[117,429,430],{},"Delivery is not guaranteed.",[102,432,433,436,443],{},[117,434,435],{},"order",[117,437,438,439,442],{},"您提到的“保证顺序”指的是在翻译过程中保持原文的段落、列表、代码块等结构顺序不变。请提供需要翻译的简化中文 Markdown 片段，我会严格按照此要求翻译为自然的美式英语，同时保留所有占位符（如 ",[81,440,441],{},"__I18N_PROTECTED_0__","）和术语。",[117,444,445],{},"Order not guaranteed.",[102,447,448,451,454],{},[117,449,450],{},"delay",[117,452,453],{},"relatively higher",[117,455,456],{},"relatively lower",[102,458,459,462,465],{},[117,460,461],{},"Suitable Data",[117,463,464],{},"Commands, Configuration, Files, Logs",[117,466,467],{},"High-frequency data, broadcast, real-time status",[102,469,470,473,476],{},[117,471,472],{},"Typical scenarios",[117,474,475],{},"Remote control, server communication, parameter configuration",[117,477,478],{},"radar data, remote control data, status broadcast",[15,480,481],{},"In simple terms:",[73,483,486],{"className":484,"code":485,"language":78,"meta":79},[76],"TCP：我要确保这条消息送到\nUDP：我要快速持续发送，偶尔丢一包也能接受\n",[81,487,485],{"__ignoreMap":79},[59,489,491],{"id":490},"relationship-with-ros-2","Relationship with ROS 2",[15,493,494],{},"Learning UDP does not mean you should replace ROS 2 topics with UDP.",[15,496,497],{},"Inside the ROS 2 system, communication between nodes typically prioritizes using ROS 2’s own communication mechanisms. UDP, on the other hand, is better suited for connecting to network devices outside the ROS 2 system or for implementing lightweight remote communication.",[15,499,500],{},"For example:",[73,502,505],{"className":503,"code":504,"language":78,"meta":79},[76],"激光雷达\n        ↓\nUDP 数据包\n        ↓\n自己封装的 UdpReceiver\n        ↓\nROS 2 节点发布点云 / LaserScan\n",[81,506,504],{"__ignoreMap":79},[15,508,509],{},"Can also be used for:",[73,511,514],{"className":512,"code":513,"language":78,"meta":79},[76],"远程遥控端\n        ↓\nUDP\n        ↓\n机器人主控程序\n",[81,515,513],{"__ignoreMap":79},[59,517,519],{"id":518},"chapter-learning-objectives","Chapter learning objectives",[15,521,522],{},"After completing this chapter, you should be able to:",[28,524,525,528,531,534,537,540,543],{},[31,526,527],{},"Basic Concepts of UDP Communication",[31,529,530],{},"Main differences between UDP and TCP",[31,532,533],{},"The meaning of IP address, port number, and endpoint.",[31,535,536],{},"Send and receive UDP data using C++",[31,538,539],{},"Understanding UDP packet loss, out-of-order delivery, broadcasting, and other characteristics",[31,541,542],{},"Wrapping a UDP Communication Class Using Boost.Asio",[31,544,545],{},"lay the foundation for subsequent radar data reception, remote control, and status broadcast",{"title":79,"searchDepth":547,"depth":547,"links":548},2,[549],{"id":12,"depth":547,"text":13,"children":550},[551,553,554,555,556,557,558],{"id":61,"depth":552,"text":62},3,{"id":176,"depth":552,"text":177},{"id":276,"depth":552,"text":277},{"id":345,"depth":552,"text":346},{"id":387,"depth":552,"text":388},{"id":490,"depth":552,"text":491},{"id":518,"depth":552,"text":519},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","13.4",13040000,"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/ch13-4-UDP通信",false,true,null,"en-US","en-us",{},{"title":5,"description":79},"/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/en-us/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信",1,"Iy7A9zDH45HNQEUXBwd4B-oHtFoFJUd1Oz6tVw4nTNw",[581,587,593,599,605,611,617,623,629,635,641,647,653,659,665,671,677,683,688,694,699,700,706,712,718,724,730,736,742,748,754,760,766,772,778,784,790,796,802,808,814,820,826,832,838,844,850,856,862,868,874,880,886,892,898,904,910,916,922,928],{"path":582,"stem":583,"title":584,"date":562,"chapter":585,"chapterSort":586,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":588,"stem":589,"title":590,"date":562,"chapter":591,"chapterSort":592,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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","10",10000000,{"path":594,"stem":595,"title":596,"date":562,"chapter":597,"chapterSort":598,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":600,"stem":601,"title":602,"date":562,"chapter":603,"chapterSort":604,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":606,"stem":607,"title":608,"date":562,"chapter":609,"chapterSort":610,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":612,"stem":613,"title":614,"date":562,"chapter":615,"chapterSort":616,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":618,"stem":619,"title":620,"date":562,"chapter":621,"chapterSort":622,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":624,"stem":625,"title":626,"date":562,"chapter":627,"chapterSort":628,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":630,"stem":631,"title":632,"date":562,"chapter":633,"chapterSort":634,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":636,"stem":637,"title":638,"date":562,"chapter":639,"chapterSort":640,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":642,"stem":643,"title":644,"date":562,"chapter":645,"chapterSort":646,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":648,"stem":649,"title":650,"date":562,"chapter":651,"chapterSort":652,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":654,"stem":655,"title":656,"date":562,"chapter":657,"chapterSort":658,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":660,"stem":661,"title":662,"date":562,"chapter":663,"chapterSort":664,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":666,"stem":667,"title":668,"date":562,"chapter":669,"chapterSort":670,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":672,"stem":673,"title":674,"date":562,"chapter":675,"chapterSort":676,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":678,"stem":679,"title":680,"date":562,"chapter":681,"chapterSort":682,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":684,"stem":685,"title":650,"date":562,"chapter":686,"chapterSort":687,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":689,"stem":690,"title":691,"date":562,"chapter":692,"chapterSort":693,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":695,"stem":696,"title":650,"date":562,"chapter":697,"chapterSort":698,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":559,"stem":577,"title":5,"date":562,"chapter":560,"chapterSort":561,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},{"path":701,"stem":702,"title":703,"date":562,"chapter":704,"chapterSort":705,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":707,"stem":708,"title":709,"date":562,"chapter":710,"chapterSort":711,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":713,"stem":714,"title":715,"date":562,"chapter":716,"chapterSort":717,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":719,"stem":720,"title":721,"date":562,"chapter":722,"chapterSort":723,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":725,"stem":726,"title":727,"date":562,"chapter":728,"chapterSort":729,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":731,"stem":732,"title":733,"date":562,"chapter":734,"chapterSort":735,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":737,"stem":738,"title":739,"date":562,"chapter":740,"chapterSort":741,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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-分布式搭建","Distributed setup","14.4",14040000,{"path":743,"stem":744,"title":745,"date":562,"chapter":746,"chapterSort":747,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":749,"stem":750,"title":751,"date":562,"chapter":752,"chapterSort":753,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":755,"stem":756,"title":757,"date":562,"chapter":758,"chapterSort":759,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":761,"stem":762,"title":763,"date":562,"chapter":764,"chapterSort":765,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":767,"stem":768,"title":769,"date":562,"chapter":770,"chapterSort":771,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":773,"stem":774,"title":775,"date":562,"chapter":776,"chapterSort":777,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":779,"stem":780,"title":781,"date":562,"chapter":782,"chapterSort":783,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":785,"stem":786,"title":787,"date":562,"chapter":788,"chapterSort":789,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":791,"stem":792,"title":793,"date":562,"chapter":794,"chapterSort":795,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":797,"stem":798,"title":799,"date":562,"chapter":800,"chapterSort":801,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":803,"stem":804,"title":805,"date":562,"chapter":806,"chapterSort":807,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":809,"stem":810,"title":811,"date":562,"chapter":812,"chapterSort":813,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":815,"stem":816,"title":817,"date":562,"chapter":818,"chapterSort":819,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":821,"stem":822,"title":823,"date":562,"chapter":824,"chapterSort":825,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":827,"stem":828,"title":829,"date":562,"chapter":830,"chapterSort":831,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":833,"stem":834,"title":835,"date":562,"chapter":836,"chapterSort":837,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":839,"stem":840,"title":841,"date":562,"chapter":842,"chapterSort":843,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":845,"stem":846,"title":847,"date":562,"chapter":848,"chapterSort":849,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":851,"stem":852,"title":853,"date":562,"chapter":854,"chapterSort":855,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":857,"stem":858,"title":859,"date":562,"chapter":860,"chapterSort":861,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":863,"stem":864,"title":865,"date":562,"chapter":866,"chapterSort":867,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":869,"stem":870,"title":871,"date":562,"chapter":872,"chapterSort":873,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":875,"stem":876,"title":877,"date":562,"chapter":878,"chapterSort":879,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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","2",2000000,{"path":881,"stem":882,"title":883,"date":562,"chapter":884,"chapterSort":885,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":887,"stem":888,"title":889,"date":562,"chapter":890,"chapterSort":891,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":893,"stem":894,"title":895,"date":562,"chapter":896,"chapterSort":897,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":899,"stem":900,"title":901,"date":562,"chapter":902,"chapterSort":903,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/en-us/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其他通信机制","ROS2 Other Communication Mechanisms","5",5000000,{"path":905,"stem":906,"title":907,"date":562,"chapter":908,"chapterSort":909,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":911,"stem":912,"title":913,"date":562,"chapter":914,"chapterSort":915,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":917,"stem":918,"title":919,"date":562,"chapter":920,"chapterSort":921,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":923,"stem":924,"title":925,"date":562,"chapter":926,"chapterSort":927,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":569},"/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":565,"stem":929,"title":930,"date":562,"chapter":571,"chapterSort":931,"docKey":564,"docRoot":565,"docTitle":566,"isWikiDoc":570,"isWikiIndex":570},"_i18n/en-us/wiki/2023-12-30-ros2-tutorial/index","ROS2 Robot Operating System Tutorial",0,{"variants":933},[934,935,938,941,944],{"path":559,"localeSlug":573,"i18nKey":568},{"path":936,"localeSlug":937,"i18nKey":568},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","zh-hant",{"path":939,"localeSlug":940,"i18nKey":568},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","zh-hk",{"path":942,"localeSlug":943,"i18nKey":568},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","zh-tw",{"path":945,"localeSlug":946,"i18nKey":568},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","zh-cn",[559,576,936,576,939,576,942,576,945,576],1780671803141]