[{"data":1,"prerenderedAt":861},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin":3,"wiki-doc-items-2023-12-30-ros2-tutorial":566},{"id":4,"title":5,"body":6,"chapterDepth":552,"chapterOrder":553,"date":554,"description":79,"docKey":555,"docRoot":556,"docTitle":557,"extension":558,"isWikiDoc":559,"isWikiIndex":560,"meta":561,"navigation":559,"path":562,"seo":563,"stem":564,"wikiDepth":552,"__hash__":565},"wiki\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信.md","UDP通信",{"type":7,"value":8,"toc":539},"minimark",[9,14,18,21,24,27,55,58,63,66,69,72,83,86,92,95,171,174,178,181,271,274,277,342,345,348,354,357,374,377,383,387,390,473,476,482,486,489,492,495,501,504,510,513,516],[10,11,13],"h2",{"id":12},"linux-udp-通信","Linux UDP 通信",[15,16,17],"p",{},"UDP 通信是 Linux 网络编程中非常常见的一种通信方式。",[15,19,20],{},"相比 TCP，UDP 不需要提前建立连接，发送方可以直接向指定 IP 和端口发送数据。它的特点是简单、延迟低、开销小，但不保证数据一定送达，也不保证顺序。",[15,22,23],{},"在机器人项目中，UDP 常用于高频、实时、允许少量丢包的数据传输场景。",[15,25,26],{},"在实际项目中，UDP 通信常见于：",[28,29,30,34,37,40,43,46,49,52],"ul",{},[31,32,33],"li",{},"激光雷达数据传输",[31,35,36],{},"网络相机或传感器数据流",[31,38,39],{},"机器人状态广播",[31,41,42],{},"局域网设备发现",[31,44,45],{},"遥控器或手柄数据传输",[31,47,48],{},"多机器人之间的简单通信",[31,50,51],{},"高频状态上报",[31,53,54],{},"对实时性要求高、但允许少量丢包的场景",[15,56,57],{},"UDP 的核心特点是快，但不可靠。因此它更适合“持续发送的数据流”，而不是“必须保证每条消息都送达”的场景。",[59,60,62],"h3",{"id":61},"udp-通信是什么","UDP 通信是什么",[15,64,65],{},"UDP，全称 User Datagram Protocol，是一种无连接的传输协议。",[15,67,68],{},"和 TCP 不同，UDP 通信不需要建立连接。只要知道目标 IP 和端口，就可以直接发送数据。",[15,70,71],{},"典型结构如下：",[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],{},"也可以是双向通信：",[73,87,90],{"className":88,"code":89,"language":78,"meta":79},[76],"程序 A  ←UDP→  程序 B\n",[81,91,89],{"__ignoreMap":79},[15,93,94],{},"常见概念包括：",[96,97,98,111],"table",{},[99,100,101],"thead",{},[102,103,104,108],"tr",{},[105,106,107],"th",{},"概念",[105,109,110],{},"说明",[112,113,114,123,131,139,147,155,163],"tbody",{},[102,115,116,120],{},[117,118,119],"td",{},"IP 地址",[117,121,122],{},"用来定位网络中的设备",[102,124,125,128],{},[117,126,127],{},"端口号",[117,129,130],{},"用来区分不同程序",[102,132,133,136],{},[117,134,135],{},"Datagram",[117,137,138],{},"UDP 数据报，一次发送对应一个数据报",[102,140,141,144],{},[117,142,143],{},"广播",[117,145,146],{},"向局域网内多个设备发送数据",[102,148,149,152],{},[117,150,151],{},"组播",[117,153,154],{},"向加入同一组播组的设备发送数据",[102,156,157,160],{},[117,158,159],{},"丢包",[117,161,162],{},"UDP 不保证数据一定送达",[102,164,165,168],{},[117,166,167],{},"乱序",[117,169,170],{},"UDP 不保证数据按顺序到达",[15,172,173],{},"UDP 和 TCP 最大的区别是：TCP 是可靠字节流，UDP 是不可靠数据报。",[59,175,177],{"id":176},"linux-下常见-udp-库","Linux 下常见 UDP 库",[15,179,180],{},"Linux 下进行 UDP 通信有多种方案，常见的包括：",[96,182,183,199],{},[99,184,185],{},[102,186,187,190,193,196],{},[105,188,189],{},"方案",[105,191,192],{},"类型",[105,194,195],{},"特点",[105,197,198],{},"适合场景",[112,200,201,215,229,243,257],{},[102,202,203,206,209,212],{},[117,204,205],{},"Linux socket API",[117,207,208],{},"Linux 原生接口",[117,210,211],{},"最底层、依赖少、通用性强",[117,213,214],{},"想深入理解网络通信机制",[102,216,217,220,223,226],{},[117,218,219],{},"boost::asio",[117,221,222],{},"通用 C++ 网络库",[117,224,225],{},"支持同步\u002F异步 UDP，适合工程封装",[117,227,228],{},"推荐用于 C++ 项目",[102,230,231,234,237,240],{},[117,232,233],{},"Qt Network",[117,235,236],{},"Qt 网络模块",[117,238,239],{},"和 Qt 界面程序结合方便",[117,241,242],{},"Qt 上位机",[102,244,245,248,251,254],{},[117,246,247],{},"Python socket",[117,249,250],{},"Python 标准库",[117,252,253],{},"简单方便，适合测试",[117,255,256],{},"Python 调试脚本",[102,258,259,262,265,268],{},[117,260,261],{},"ROS 2 topic",[117,263,264],{},"ROS 2 通信机制",[117,266,267],{},"ROS 2 内部通信方便",[117,269,270],{},"ROS 2 系统内部数据传输",[15,272,273],{},"这些方案本质上都是为了完成 UDP 数据报的发送和接收，只是封装方式不同。",[59,275,276],{"id":276},"各方案对比",[96,278,279,291],{},[99,280,281],{},[102,282,283,285,288],{},[105,284,189],{},[105,286,287],{},"优点",[105,289,290],{},"缺点",[112,292,293,303,313,323,333],{},[102,294,295,297,300],{},[117,296,205],{},[117,298,299],{},"原生、稳定、依赖少、通用性强",[117,301,302],{},"代码相对繁琐，异步处理麻烦",[102,304,305,307,310],{},[117,306,219],{},[117,308,309],{},"C++ 工程友好，异步 UDP 方便，适合封装 driver",[117,311,312],{},"需要理解 io_context、endpoint、socket 等概念",[102,314,315,317,320],{},[117,316,233],{},[117,318,319],{},"和 Qt 程序结合自然，适合上位机",[117,321,322],{},"不适合脱离 Qt 的底层 driver",[102,324,325,327,330],{},[117,326,247],{},[117,328,329],{},"上手快，适合测试 UDP 包",[117,331,332],{},"不适合作为 C++ 底层主线",[102,334,335,337,339],{},[117,336,261],{},[117,338,267],{},[117,340,341],{},"不适合替代通用 UDP 学习",[59,343,344],{"id":344},"本教程建议选择",[15,346,347],{},"本教程建议优先选择：",[73,349,352],{"className":350,"code":351,"language":78,"meta":79},[76],"boost::asio\n",[81,353,351],{"__ignoreMap":79},[15,355,356],{},"原因是：",[28,358,359,362,365,368,371],{},[31,360,361],{},"适合 C++ 工程开发",[31,363,364],{},"和 TCP、串口、定时器可以使用同一套 Boost.Asio 编程模型",[31,366,367],{},"支持同步和异步 UDP 收发",[31,369,370],{},"不依赖 ROS 2，方便在普通 C++、OpenCV、Qt、嵌入式 Linux 项目中复用",[31,372,373],{},"适合封装网络传感器、远程遥控、状态广播等功能",[15,375,376],{},"推荐的工程结构是：",[73,378,381],{"className":379,"code":380,"language":78,"meta":79},[76],"上层项目：ROS 2 \u002F OpenCV \u002F Qt \u002F 普通 C++ 程序\n        ↓\n自己封装的 UdpSender \u002F UdpReceiver 类\n        ↓\nboost::asio\n        ↓\nUDP socket\n        ↓\n雷达 \u002F 网络设备 \u002F 远程控制端\n",[81,382,380],{"__ignoreMap":79},[59,384,386],{"id":385},"tcp-和-udp-怎么选","TCP 和 UDP 怎么选",[15,388,389],{},"TCP 和 UDP 都很常用，但适合的场景不同。",[96,391,392,405],{},[99,393,394],{},[102,395,396,399,402],{},[105,397,398],{},"对比项",[105,400,401],{},"TCP",[105,403,404],{},"UDP",[112,406,407,418,429,440,451,462],{},[102,408,409,412,415],{},[117,410,411],{},"是否连接",[117,413,414],{},"需要建立连接",[117,416,417],{},"不需要建立连接",[102,419,420,423,426],{},[117,421,422],{},"可靠性",[117,424,425],{},"可靠传输",[117,427,428],{},"不保证送达",[102,430,431,434,437],{},[117,432,433],{},"顺序",[117,435,436],{},"保证顺序",[117,438,439],{},"不保证顺序",[102,441,442,445,448],{},[117,443,444],{},"延迟",[117,446,447],{},"相对更高",[117,449,450],{},"相对更低",[102,452,453,456,459],{},[117,454,455],{},"适合数据",[117,457,458],{},"命令、配置、文件、日志",[117,460,461],{},"高频数据、广播、实时状态",[102,463,464,467,470],{},[117,465,466],{},"典型场景",[117,468,469],{},"远程控制、服务器通信、参数配置",[117,471,472],{},"雷达数据、遥控数据、状态广播",[15,474,475],{},"简单理解：",[73,477,480],{"className":478,"code":479,"language":78,"meta":79},[76],"TCP：我要确保这条消息送到\nUDP：我要快速持续发送，偶尔丢一包也能接受\n",[81,481,479],{"__ignoreMap":79},[59,483,485],{"id":484},"与-ros-2-的关系","与 ROS 2 的关系",[15,487,488],{},"学习 UDP，并不代表要用 UDP 替代 ROS 2 的 topic。",[15,490,491],{},"在 ROS 2 系统内部，节点之间通信通常优先使用 ROS 2 自己的通信机制。而 UDP 更适合用来连接 ROS 2 系统之外的网络设备，或者实现轻量级的远程通信。",[15,493,494],{},"例如：",[73,496,499],{"className":497,"code":498,"language":78,"meta":79},[76],"激光雷达\n        ↓\nUDP 数据包\n        ↓\n自己封装的 UdpReceiver\n        ↓\nROS 2 节点发布点云 \u002F LaserScan\n",[81,500,498],{"__ignoreMap":79},[15,502,503],{},"也可以用于：",[73,505,508],{"className":506,"code":507,"language":78,"meta":79},[76],"远程遥控端\n        ↓\nUDP\n        ↓\n机器人主控程序\n",[81,509,507],{"__ignoreMap":79},[59,511,512],{"id":512},"本章学习目标",[15,514,515],{},"学习完本章后，应该能够掌握：",[28,517,518,521,524,527,530,533,536],{},[31,519,520],{},"UDP 通信的基本概念",[31,522,523],{},"UDP 和 TCP 的主要区别",[31,525,526],{},"IP 地址、端口号、endpoint 的含义",[31,528,529],{},"使用 C++ 发送和接收 UDP 数据",[31,531,532],{},"理解 UDP 丢包、乱序、广播等特性",[31,534,535],{},"使用 Boost.Asio 封装 UDP 通信类",[31,537,538],{},"为后续雷达数据接收、远程遥控、状态广播打基础",{"title":79,"searchDepth":540,"depth":540,"links":541},2,[542],{"id":12,"depth":540,"text":13,"children":543},[544,546,547,548,549,550,551],{"id":61,"depth":545,"text":62},3,{"id":176,"depth":545,"text":177},{"id":276,"depth":545,"text":276},{"id":344,"depth":545,"text":344},{"id":385,"depth":545,"text":386},{"id":484,"depth":545,"text":485},{"id":512,"depth":545,"text":512},1,"1300-0400","2023-12-30","2023-12-30-ros2-tutorial","\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md",true,false,{},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin",{"title":5,"description":79},"wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","OwIPFk4WzfDjh8DqGQyIFj5aZ6i2AVz3tTXYFnVwLxU",[567,573,578,583,588,593,598,603,608,613,618,623,628,633,638,643,648,653,658,663,668,673,678,683,688,693,697,702,706,707,712,717,722,727,732,737,742,747,752,757,762,767,772,777,782,787,792,797,802,807,812,817,822,827,832,837,842,847,852,857],{"path":568,"stem":569,"title":570,"date":554,"chapterOrder":571,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","wiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介绍","0100",0,{"path":574,"stem":575,"title":576,"date":554,"chapterOrder":577,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","wiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入门操作","0200",{"path":579,"stem":580,"title":581,"date":554,"chapterOrder":582,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","wiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空间与功能包","0300",{"path":584,"stem":585,"title":586,"date":554,"chapterOrder":587,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信","0400",{"path":589,"stem":590,"title":591,"date":554,"chapterOrder":592,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信机制","0500",{"path":594,"stem":595,"title":596,"date":554,"chapterOrder":597,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","wiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":599,"stem":600,"title":601,"date":554,"chapterOrder":602,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","wiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2","0700",{"path":604,"stem":605,"title":606,"date":554,"chapterOrder":607,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","wiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","坐标变换TF","0800",{"path":609,"stem":610,"title":611,"date":554,"chapterOrder":612,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","wiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可视化平台RVIZ2与URDF建模语言","0900",{"path":614,"stem":615,"title":616,"date":554,"chapterOrder":617,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平台","1000",{"path":619,"stem":620,"title":621,"date":554,"chapterOrder":622,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":624,"stem":625,"title":626,"date":554,"chapterOrder":627,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":629,"stem":630,"title":631,"date":554,"chapterOrder":632,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":634,"stem":635,"title":636,"date":554,"chapterOrder":637,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","将Ign Gazebo迁移至Gz Sim","1100-0400",{"path":639,"stem":640,"title":641,"date":554,"chapterOrder":642,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平台","1100",{"path":644,"stem":645,"title":646,"date":554,"chapterOrder":647,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble导航仿真","1200-0100",{"path":649,"stem":650,"title":651,"date":554,"chapterOrder":652,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy导航仿真","1200-0200",{"path":654,"stem":655,"title":656,"date":554,"chapterOrder":657,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble与Jazzy导航的差异","1200-0300",{"path":659,"stem":660,"title":661,"date":554,"chapterOrder":662,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","机器人导航Navigation2(仿真篇)","1200",{"path":664,"stem":665,"title":666,"date":554,"chapterOrder":667,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio库","1300-0100-0100",{"path":669,"stem":670,"title":671,"date":554,"chapterOrder":672,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver库","1300-0100-0200",{"path":674,"stem":675,"title":676,"date":554,"chapterOrder":677,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信","1300-0100",{"path":679,"stem":680,"title":681,"date":554,"chapterOrder":682,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":684,"stem":685,"title":686,"date":554,"chapterOrder":687,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":689,"stem":690,"title":691,"date":554,"chapterOrder":692,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信","1300-0200",{"path":694,"stem":695,"title":666,"date":554,"chapterOrder":696,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":698,"stem":699,"title":700,"date":554,"chapterOrder":701,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","TCP通信","1300-0300",{"path":703,"stem":704,"title":666,"date":554,"chapterOrder":705,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":562,"stem":564,"title":5,"date":554,"chapterOrder":553,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},{"path":708,"stem":709,"title":710,"date":554,"chapterOrder":711,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信","1300",{"path":713,"stem":714,"title":715,"date":554,"chapterOrder":716,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","机器人组成","1400-0100",{"path":718,"stem":719,"title":720,"date":554,"chapterOrder":721,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","远程开发SSH","1400-0200-0100",{"path":723,"stem":724,"title":725,"date":554,"chapterOrder":726,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","远程访问桌面","1400-0200-0200",{"path":728,"stem":729,"title":730,"date":554,"chapterOrder":731,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控机之远程开发环境","1400-0200",{"path":733,"stem":734,"title":735,"date":554,"chapterOrder":736,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控机之外接USB设备","1400-0300",{"path":738,"stem":739,"title":740,"date":554,"chapterOrder":741,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分布式搭建","1400-0400",{"path":743,"stem":744,"title":745,"date":554,"chapterOrder":746,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","优化日志","1400-0500",{"path":748,"stem":749,"title":750,"date":554,"chapterOrder":751,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程计Odom","1400-0600-0100",{"path":753,"stem":754,"title":755,"date":554,"chapterOrder":756,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","惯性计IMU","1400-0600-0200",{"path":758,"stem":759,"title":760,"date":554,"chapterOrder":761,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷达LiDAR","1400-0600-0300",{"path":763,"stem":764,"title":765,"date":554,"chapterOrder":766,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相机Camera","1400-0600-0400",{"path":768,"stem":769,"title":770,"date":554,"chapterOrder":771,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS","1400-0600-0500",{"path":773,"stem":774,"title":775,"date":554,"chapterOrder":776,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY","1400-0600-0600",{"path":778,"stem":779,"title":780,"date":554,"chapterOrder":781,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","键盘控制节点","1400-0600-0700",{"path":783,"stem":784,"title":785,"date":554,"chapterOrder":786,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平台","1400-0600",{"path":788,"stem":789,"title":790,"date":554,"chapterOrder":791,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","坐标系与话题关系","1400-0700",{"path":793,"stem":794,"title":795,"date":554,"chapterOrder":796,"chapterDepth":545,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","轮式里程计标定","1400-0800-0100-0100",{"path":798,"stem":799,"title":800,"date":554,"chapterOrder":801,"chapterDepth":545,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","轮式里程计与IMU融合","1400-0800-0100-0200",{"path":803,"stem":804,"title":805,"date":554,"chapterOrder":806,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","轮式里程计标定与融合","1400-0800-0100",{"path":808,"stem":809,"title":810,"date":554,"chapterOrder":811,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷达工具","1400-0800-0200",{"path":813,"stem":814,"title":815,"date":554,"chapterOrder":816,"chapterDepth":540,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相机使用进阶","1400-0800-0300",{"path":818,"stem":819,"title":820,"date":554,"chapterOrder":821,"chapterDepth":552,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平台进阶","1400-0800",{"path":823,"stem":824,"title":825,"date":554,"chapterOrder":826,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","wiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","机器人硬件","1400",{"path":828,"stem":829,"title":830,"date":554,"chapterOrder":831,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","wiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":833,"stem":834,"title":835,"date":554,"chapterOrder":836,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","wiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工业机器人机械臂","1600",{"path":838,"stem":839,"title":840,"date":554,"chapterOrder":841,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","wiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","机器人导航Navigation2(实体篇)","1700",{"path":843,"stem":844,"title":845,"date":554,"chapterOrder":846,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","wiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":848,"stem":849,"title":850,"date":554,"chapterOrder":851,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","wiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平台","1900",{"path":853,"stem":854,"title":855,"date":554,"chapterOrder":856,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":560},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","wiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":556,"stem":858,"title":859,"date":554,"chapterOrder":860,"chapterDepth":572,"docKey":555,"docRoot":556,"docTitle":557,"isWikiDoc":559,"isWikiIndex":559},"wiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2机器人操作系统教程",null,1784505231210]