[{"data":1,"prerenderedAt":799},["ShallowReactive",2],{"wiki-page-\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":3,"wiki-doc-items-\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":489,"language-switcher-data-\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":783,"wiki-i18n-paths-\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin":798},{"id":4,"title":5,"body":6,"canonicalPath":469,"chapterDepth":470,"chapterOrder":471,"date":472,"description":76,"docI18nKey":473,"docKey":474,"docRoot":475,"docTitle":476,"extension":477,"i18nKey":478,"isBlogPost":479,"isWikiDoc":480,"isWikiIndex":479,"layout":481,"legacyPath":481,"locale":482,"localeSlug":483,"meta":484,"navigation":480,"path":469,"seo":485,"sourcePath":486,"sourceStem":478,"stem":487,"wikiDepth":470,"__hash__":488},"content\u002F_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信.md","TCP通信",{"type":7,"value":8,"toc":457},"minimark",[9,14,18,21,24,27,52,55,60,63,66,69,80,83,165,168,172,175,279,282,285,362,365,368,374,377,394,397,403,407,410,413,416,422,425,428,431],[10,11,13],"h2",{"id":12},"linux-tcp-通信","Linux TCP 通信",[15,16,17],"p",{},"TCP 通信是 Linux 網絡編程中最常見的通信方式之一。",[15,19,20],{},"在機器人和嵌入式 Linux 項目中，TCP 常用於上位機之間、機器人和服務器之間、機器人和調試軟件之間的可靠通信。",[15,22,23],{},"相比串口和 CAN，TCP 更偏向網絡通信。它通常運行在以太網、Wi-Fi 或本機迴環網絡上，適合傳輸控制命令、配置參數、日誌、狀態信息、文件數據等。",[15,25,26],{},"在實際項目中，TCP 通信常見於：",[28,29,30,34,37,40,43,46,49],"ul",{},[31,32,33],"li",{},"Qt 上位機和機器人主控通信",[31,35,36],{},"機器人和遠程服務器通信",[31,38,39],{},"工控機和網絡設備通信",[31,41,42],{},"多個程序之間進行可靠數據交換",[31,44,45],{},"遠程發送控制命令",[31,47,48],{},"上傳日誌、配置文件、地圖文件",[31,50,51],{},"和某些雷達、相機、工業設備的 SDK 通信",[15,53,54],{},"TCP 的特點是可靠、按順序傳輸、不容易丟數據，適合對數據完整性要求較高的場景。",[56,57,59],"h3",{"id":58},"tcp-通信是什麼","TCP 通信是什麼",[15,61,62],{},"TCP，全稱 Transmission Control Protocol，是一種面向連接的可靠傳輸協議。",[15,64,65],{},"在使用 TCP 通信之前，客戶端和服務端需要先建立連接。連接建立後，雙方就可以像讀寫文件一樣進行數據收發。",[15,67,68],{},"典型結構如下：",[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],{},"常見概念包括：",[84,85,86,99],"table",{},[87,88,89],"thead",{},[90,91,92,96],"tr",{},[93,94,95],"th",{},"概念",[93,97,98],{},"說明",[100,101,102,114,125,133,141,149,157],"tbody",{},[90,103,104,108],{},[105,106,107],"td",{},"IP 地址",[105,109,110,111],{},"用來定位網絡中的設備，例如 ",[78,112,113],{},"192.168.1.10",[90,115,116,119],{},[105,117,118],{},"端口號",[105,120,121,122],{},"用來區分同一設備上的不同服務，例如 ",[78,123,124],{},"8080",[90,126,127,130],{},[105,128,129],{},"Server",[105,131,132],{},"服務端，負責監聽端口並等待連接",[90,134,135,138],{},[105,136,137],{},"Client",[105,139,140],{},"客戶端，主動連接服務端",[90,142,143,146],{},[105,144,145],{},"Socket",[105,147,148],{},"網絡通信的抽象接口",[90,150,151,154],{},[105,152,153],{},"連接",[105,155,156],{},"TCP 通信前需要先建立連接",[90,158,159,162],{},[105,160,161],{},"粘包",[105,163,164],{},"TCP 是字節流協議，需要自己設計應用層協議",[15,166,167],{},"需要注意的是，TCP 不是一條消息對應一次接收。TCP 本質上是字節流協議，所以實際工程中通常需要設計自己的數據協議，例如幀頭、長度、命令字、數據區、校驗等。",[56,169,171],{"id":170},"linux-下常見-tcp-庫","Linux 下常見 TCP 庫",[15,173,174],{},"Linux 下進行 TCP 通信有多種方案，常見的包括：",[84,176,177,193],{},[87,178,179],{},[90,180,181,184,187,190],{},[93,182,183],{},"方案",[93,185,186],{},"類型",[93,188,189],{},"特點",[93,191,192],{},"適合場景",[100,194,195,209,223,237,251,265],{},[90,196,197,200,203,206],{},[105,198,199],{},"Linux socket API",[105,201,202],{},"Linux 原生接口",[105,204,205],{},"最底層、依賴少、通用性強",[105,207,208],{},"想深入理解網絡通信機制",[90,210,211,214,217,220],{},[105,212,213],{},"boost::asio",[105,215,216],{},"通用 C++ 網絡庫",[105,218,219],{},"支持同步\u002F異步，適合 C++ 工程封裝",[105,221,222],{},"推薦用於 C++ 項目",[90,224,225,228,231,234],{},[105,226,227],{},"Qt Network",[105,229,230],{},"Qt 網絡模塊",[105,232,233],{},"和 Qt 界面程序結合方便",[105,235,236],{},"Qt 上位機",[90,238,239,242,245,248],{},[105,240,241],{},"Poco Net",[105,243,244],{},"C++ 網絡庫",[105,246,247],{},"封裝完整，功能豐富",[105,249,250],{},"中大型 C++ 服務程序",[90,252,253,256,259,262],{},[105,254,255],{},"Python socket",[105,257,258],{},"Python 標準庫",[105,260,261],{},"簡單方便，適合測試",[105,263,264],{},"Python 調試腳本",[90,266,267,270,273,276],{},[105,268,269],{},"ROS 2 topic\u002Fservice\u002Faction",[105,271,272],{},"ROS 2 通信機制",[105,274,275],{},"適合 ROS 2 內部節點通信",[105,277,278],{},"ROS 2 系統內部通信",[15,280,281],{},"這些方案本質上都是為了完成 TCP 連接、發送和接收，只是封裝層次不同。",[56,283,284],{"id":284},"各方案對比",[84,286,287,299],{},[87,288,289],{},[90,290,291,293,296],{},[93,292,183],{},[93,294,295],{},"優點",[93,297,298],{},"缺點",[100,300,301,311,321,331,341,351],{},[90,302,303,305,308],{},[105,304,199],{},[105,306,307],{},"原生、穩定、依賴少、通用性強",[105,309,310],{},"代碼相對繁瑣，異步處理麻煩",[90,312,313,315,318],{},[105,314,213],{},[105,316,317],{},"C++ 工程友好，異步通信方便，適合封裝 driver",[105,319,320],{},"需要理解 io_context、socket、回調等概念",[90,322,323,325,328],{},[105,324,227],{},[105,326,327],{},"和 Qt 程序結合自然，信號槽使用方便",[105,329,330],{},"不適合脫離 Qt 的底層 driver",[90,332,333,335,338],{},[105,334,241],{},[105,336,337],{},"封裝完整，工程能力強",[105,339,340],{},"對初學者略重",[90,342,343,345,348],{},[105,344,255],{},[105,346,347],{},"上手快，適合測試",[105,349,350],{},"不適合作為 C++ 底層主線",[90,352,353,356,359],{},[105,354,355],{},"ROS 2 通信",[105,357,358],{},"ROS 2 內部集成方便",[105,360,361],{},"不適合替代通用 TCP 學習",[56,363,364],{"id":364},"本教程建議選擇",[15,366,367],{},"本教程建議優先選擇：",[70,369,372],{"className":370,"code":371,"language":75,"meta":76},[73],"boost::asio\n",[78,373,371],{"__ignoreMap":76},[15,375,376],{},"原因是：",[28,378,379,382,385,388,391],{},[31,380,381],{},"適合 C++ 工程開發",[31,383,384],{},"同時支持 TCP、UDP、串口、定時器等功能",[31,386,387],{},"可以寫同步代碼，也可以寫異步代碼",[31,389,390],{},"不依賴 ROS 2，方便在普通 C++、OpenCV、Qt、嵌入式 Linux 項目中複用",[31,392,393],{},"後續可以和串口、UDP、定時器形成統一的 I\u002FO 編程風格",[15,395,396],{},"推薦的工程結構是：",[70,398,401],{"className":399,"code":400,"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,402,400],{"__ignoreMap":76},[56,404,406],{"id":405},"與-ros-2-的關係","與 ROS 2 的關係",[15,408,409],{},"學習 TCP 通信，並不代表要用 TCP 替代 ROS 2 的 topic、service、action。",[15,411,412],{},"在 ROS 2 系統內部，節點之間通信通常優先使用 ROS 2 自己的通信機制。而 TCP 更適合用在 ROS 2 系統之外的設備、程序或服務之間。",[15,414,415],{},"例如：",[70,417,420],{"className":418,"code":419,"language":75,"meta":76},[73],"ROS 2 节点\n        ↓\n自己封装的 TcpClient\n        ↓\nboost::asio\n        ↓\n远程服务器 \u002F Qt 调试软件 \u002F 网络设备\n",[78,421,419],{"__ignoreMap":76},[15,423,424],{},"也就是說，ROS 2 負責機器人系統內部通信，TCP 負責和外部系統、網絡設備、遠程服務進行交互。",[56,426,427],{"id":427},"本章學習目標",[15,429,430],{},"學習完本章後，應該能夠掌握：",[28,432,433,436,439,442,445,448,451,454],{},[31,434,435],{},"TCP 通信的基本概念",[31,437,438],{},"IP 地址、端口號、服務端、客戶端的含義",[31,440,441],{},"Linux socket 和 Boost.Asio 的基本關係",[31,443,444],{},"使用 C++ 創建 TCP 客戶端和服務端",[31,446,447],{},"理解 TCP 字節流和粘包問題",[31,449,450],{},"設計簡單的 TCP 應用層協議",[31,452,453],{},"將 TCP 通信封裝成可複用的 C++ 類",[31,455,456],{},"為後續網絡設備通信、遠程控制、Qt 上位機打基礎",{"title":76,"searchDepth":458,"depth":458,"links":459},2,[460],{"id":12,"depth":458,"text":13,"children":461},[462,464,465,466,467,468],{"id":58,"depth":463,"text":59},3,{"id":170,"depth":463,"text":171},{"id":284,"depth":463,"text":284},{"id":364,"depth":463,"text":364},{"id":405,"depth":463,"text":406},{"id":427,"depth":463,"text":427},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin",1,"1300-0300","2023-12-30","wiki\u002F2023-12-30-ros2-tutorial","zh-tw:2023-12-30-ros2-tutorial","\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信",false,true,null,"zh-TW","zh-tw",{},{"title":5,"description":76},"\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-TCP通信","l52KbUFYwFz9dgEq-Ucyy8Sk5kIwZ0qXfgfmz1gOjYM",[490,496,501,506,511,516,521,526,531,536,541,546,551,556,561,566,571,576,581,586,591,596,601,606,611,616,620,621,625,630,635,640,645,650,655,660,665,670,675,680,685,690,695,700,705,710,715,720,725,730,735,740,745,750,755,760,765,770,775,780],{"path":491,"stem":492,"title":493,"date":472,"chapterOrder":494,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ros2-jie-shao","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0100-ROS2介绍","ROS2介紹","0100",0,{"path":497,"stem":498,"title":499,"date":472,"chapterOrder":500,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-ru-men-cao-zuo","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0200-入门操作","入門操作","0200",{"path":502,"stem":503,"title":504,"date":472,"chapterOrder":505,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0300-工作空间与功能包","工作空間與功能包","0300",{"path":507,"stem":508,"title":509,"date":472,"chapterOrder":510,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-si-da-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0400-四大通信","四大通信","0400",{"path":512,"stem":513,"title":514,"date":472,"chapterOrder":515,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ros2-qi-ta-tong-xin-ji-zhi","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0500-ROS2其他通信机制","ROS2其他通信機制","0500",{"path":517,"stem":518,"title":519,"date":472,"chapterOrder":520,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-launch","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0600-Launch","Launch","0600",{"path":522,"stem":523,"title":524,"date":472,"chapterOrder":525,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-hui-su-rosbag2","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0700-回溯rosbag2","回溯rosbag2","0700",{"path":527,"stem":528,"title":529,"date":472,"chapterOrder":530,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-zuo-biao-bian-huan-tf","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0800-坐标变换TF","座標變換TF","0800",{"path":532,"stem":533,"title":534,"date":472,"chapterOrder":535,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F0900-可视化平台RVIZ2与URDF建模语言","可視化平臺RVIZ2與URDF建模語言","0900",{"path":537,"stem":538,"title":539,"date":472,"chapterOrder":540,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-stage-ros2-fang-zhen-ping-tai","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1000-Stage_Ros2仿真平台","Stage_Ros2仿真平臺","1000",{"path":542,"stem":543,"title":544,"date":472,"chapterOrder":545,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-gazeboclassic","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0100-GazeboClassic","Gezebo Classic","1100-0100",{"path":547,"stem":548,"title":549,"date":472,"chapterOrder":550,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-ignitiongazebo","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0200-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","1100-0200",{"path":552,"stem":553,"title":554,"date":472,"chapterOrder":555,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-gazebosim","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0300-GazeboSim","Gz Sim（Gazebo Harmonic）","1100-0300",{"path":557,"stem":558,"title":559,"date":472,"chapterOrder":560,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-igngz2gzsim","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-0400-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","1100-0400",{"path":562,"stem":563,"title":564,"date":472,"chapterOrder":565,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-gezebo-fang-zhen-ping-tai","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1100-Gezebo仿真平台","Gezebo仿真平臺","1100",{"path":567,"stem":568,"title":569,"date":472,"chapterOrder":570,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-humble-ban-ben","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0100-Humble版本","Humble導航仿真","1200-0100",{"path":572,"stem":573,"title":574,"date":472,"chapterOrder":575,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-jazzy-ban-ben","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0200-Jazzy版本","Jazzy導航仿真","1200-0200",{"path":577,"stem":578,"title":579,"date":472,"chapterOrder":580,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-humble2jazzy","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-0300-Humble2Jazzy","Humble與Jazzy導航的差異","1200-0300",{"path":582,"stem":583,"title":584,"date":472,"chapterOrder":585,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1200-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","1200",{"path":587,"stem":588,"title":589,"date":472,"chapterOrder":590,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-boost-aiso","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0100-Boost.Aiso","Boost.Asio庫","1300-0100-0100",{"path":592,"stem":593,"title":594,"date":472,"chapterOrder":595,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2-serial-driver","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-0200-ros2_serial_driver","ROS2 Serial Driver庫","1300-0100-0200",{"path":597,"stem":598,"title":599,"date":472,"chapterOrder":600,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-chuan-kou-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0100-串口通信","UART串口通信","1300-0100",{"path":602,"stem":603,"title":604,"date":472,"chapterOrder":605,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0100-socketcan","SocketCAN","1300-0200-0100",{"path":607,"stem":608,"title":609,"date":472,"chapterOrder":610,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2-socketcan","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-0200-ros2_socketcan","ROS2_SocketCAN","1300-0200-0200",{"path":612,"stem":613,"title":614,"date":472,"chapterOrder":615,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-can-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0200-CAN通信","CAN通信","1300-0200",{"path":617,"stem":618,"title":589,"date":472,"chapterOrder":619,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-boost-aiso","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-0100-Boost.Aiso","1300-0300-0100",{"path":469,"stem":487,"title":5,"date":472,"chapterOrder":471,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},{"path":622,"stem":623,"title":589,"date":472,"chapterOrder":624,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-boost-aiso","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-0100-Boost.Aiso","1300-0400-0100",{"path":626,"stem":627,"title":628,"date":472,"chapterOrder":629,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-udp-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0400-UDP通信","UDP通信","1300-0400",{"path":631,"stem":632,"title":633,"date":472,"chapterOrder":634,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-linux-ying-jian-tong-xin","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-Linux硬件通信","Linux硬件通信","1300",{"path":636,"stem":637,"title":638,"date":472,"chapterOrder":639,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-ji-qi-ren-zu-cheng","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0100-机器人组成","機器人組成","1400-0100",{"path":641,"stem":642,"title":643,"date":472,"chapterOrder":644,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-yuan-cheng-kai-fa-ssh","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0100-远程开发SSH","遠程開發SSH","1400-0200-0100",{"path":646,"stem":647,"title":648,"date":472,"chapterOrder":649,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-yuan-cheng-fang-wen-zhuo-mian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-0200-远程访问桌面","遠程訪問桌面","1400-0200-0200",{"path":651,"stem":652,"title":653,"date":472,"chapterOrder":654,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0200-工控机之远程开发环境","工控機之遠程開發環境","1400-0200",{"path":656,"stem":657,"title":658,"date":472,"chapterOrder":659,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0300-工控机之外接USB设备","工控機之外接USB設備","1400-0300",{"path":661,"stem":662,"title":663,"date":472,"chapterOrder":664,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-fen-bu-shi-da-jian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0400-分布式搭建","分佈式搭建","1400-0400",{"path":666,"stem":667,"title":668,"date":472,"chapterOrder":669,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-you-hua-ri-zhi","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0500-优化日志","優化日誌","1400-0500",{"path":671,"stem":672,"title":673,"date":472,"chapterOrder":674,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-li-cheng-ji-odom","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0100-里程计Odom","里程計Odom","1400-0600-0100",{"path":676,"stem":677,"title":678,"date":472,"chapterOrder":679,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-guan-xing-ji-imu","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0200-惯性计IMU","慣性計IMU","1400-0600-0200",{"path":681,"stem":682,"title":683,"date":472,"chapterOrder":684,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-ji-guang-lei-da-lidar","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0300-激光雷达LiDAR","激光雷達LiDAR","1400-0600-0300",{"path":686,"stem":687,"title":688,"date":472,"chapterOrder":689,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-xiang-ji-camera","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0400-相机Camera","相機Camera","1400-0600-0400",{"path":691,"stem":692,"title":693,"date":472,"chapterOrder":694,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-quan-qiu-ding-wei-gnss","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0500-全球定位GNSS","全球定位GNSS","1400-0600-0500",{"path":696,"stem":697,"title":698,"date":472,"chapterOrder":699,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-shou-bing-joy","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0600-手柄joy","手柄JOY","1400-0600-0600",{"path":701,"stem":702,"title":703,"date":472,"chapterOrder":704,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-jian-pan-kong-zhi-jie-dian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-0700-键盘控制节点","鍵盤控制節點","1400-0600-0700",{"path":706,"stem":707,"title":708,"date":472,"chapterOrder":709,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-ying-jian-ping-tai","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0600-硬件平台","硬件平臺","1400-0600",{"path":711,"stem":712,"title":713,"date":472,"chapterOrder":714,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0700-坐标系与话题关系","座標系與話題關係","1400-0700",{"path":716,"stem":717,"title":718,"date":472,"chapterOrder":719,"chapterDepth":463,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-lun-shi-li-cheng-ji-biao-ding","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0100-轮式里程计标定","輪式里程計標定","1400-0800-0100-0100",{"path":721,"stem":722,"title":723,"date":472,"chapterOrder":724,"chapterDepth":463,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-0200-轮式里程计与IMU融合","輪式里程計與IMU融合","1400-0800-0100-0200",{"path":726,"stem":727,"title":728,"date":472,"chapterOrder":729,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0100-轮式里程计标定与融合","輪式里程計標定與融合","1400-0800-0100",{"path":731,"stem":732,"title":733,"date":472,"chapterOrder":734,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-ji-guang-lei-da-gong-ju","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0200-激光雷达工具","激光雷達工具","1400-0800-0200",{"path":736,"stem":737,"title":738,"date":472,"chapterOrder":739,"chapterDepth":458,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-xiang-ji-shi-yong-jin-jie","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-0300-相机使用进阶","相機使用進階","1400-0800-0300",{"path":741,"stem":742,"title":743,"date":472,"chapterOrder":744,"chapterDepth":470,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-ying-jian-ping-tai-jin-jie","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-0800-硬件平台进阶","硬件平臺進階","1400-0800",{"path":746,"stem":747,"title":748,"date":472,"chapterOrder":749,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-ji-qi-ren-ying-jian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1400-机器人硬件","機器人硬件","1400",{"path":751,"stem":752,"title":753,"date":472,"chapterOrder":754,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ros2-control","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1500-ROS2_Control","ROS2_Control","1500",{"path":756,"stem":757,"title":758,"date":472,"chapterOrder":759,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1600-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","1600",{"path":761,"stem":762,"title":763,"date":472,"chapterOrder":764,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1700-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","1700",{"path":766,"stem":767,"title":768,"date":472,"chapterOrder":769,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-microros","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1800-MicroROS","MicroROS","1800",{"path":771,"stem":772,"title":773,"date":472,"chapterOrder":774,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-webots-fang-zhen-ping-tai","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1900-Webots仿真平台","Webots仿真平臺","1900",{"path":776,"stem":777,"title":778,"date":472,"chapterOrder":779,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":479},"\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-opencv","_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F2000-OpenCV","OpenCV","2000",{"path":475,"stem":781,"title":782,"date":472,"chapterOrder":481,"chapterDepth":495,"docKey":474,"docRoot":475,"docTitle":476,"isWikiDoc":480,"isWikiIndex":480},"_i18n\u002Fzh-tw\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002Findex","ROS2機器人操作系統教程",{"variants":784},[785,788,791,794,795],{"path":786,"localeSlug":787,"i18nKey":478},"\u002Fen-us\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","en-us",{"path":789,"localeSlug":790,"i18nKey":478},"\u002Fzh-hant\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-hant",{"path":792,"localeSlug":793,"i18nKey":478},"\u002Fzh-hk\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-hk",{"path":469,"localeSlug":483,"i18nKey":478},{"path":796,"localeSlug":797,"i18nKey":478},"\u002Fzh-cn\u002Fwiki\u002F2023-12-30-ros2-tutorial\u002F1300-0300-tcp-tong-xin","zh-cn",[786,486,789,486,792,486,469,486,796,486],1784646881583]