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