[{"data":1,"prerenderedAt":980},["ShallowReactive",2],{"wiki-page-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin":3,"wiki-doc-items-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin":613,"language-switcher-data-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin":964,"wiki-i18n-paths-/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin":979},{"id":4,"title":5,"body":6,"canonicalPath":593,"chapter":594,"chapterSort":595,"date":596,"description":153,"docI18nKey":597,"docKey":598,"docRoot":599,"docTitle":600,"extension":601,"i18nKey":602,"isBlogPost":603,"isWikiDoc":604,"isWikiIndex":603,"layout":605,"legacyPath":605,"locale":606,"localeSlug":607,"meta":608,"navigation":604,"path":593,"seo":609,"sourcePath":610,"sourceStem":602,"stem":611,"wikiDepth":160,"__hash__":612},"content/_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信.md","CAN通信",{"type":7,"value":8,"toc":579},"minimark",[9,14,18,21,24,46,49,54,57,60,63,139,147,164,167,181,185,188,199,202,316,319,395,398,401,409,412,434,437,443,446,452,456,459,465,468,474,477,481,486,492,495,498,504,510,514,517,520,523,529,532,535,538,575],[10,11,13],"h2",{"id":12},"linux-can-通信","Linux CAN 通信",[15,16,17],"p",{},"CAN 通信是機器人、車輛、工業控制和電機驅動中非常常見的總線通信方式。",[15,19,20],{},"相比串口通信，CAN 更適合多個設備掛在同一條總線上進行通信。例如一個機器人底盤中，可能有多個電機驅動器、底盤控制板、傳感器節點共同連接在 CAN 總線上。",[15,22,23],{},"在實際項目中，CAN 通信常見於：",[25,26,27,31,34,37,40,43],"ul",{},[28,29,30],"li",{},"控制電機驅動器",[28,32,33],{},"讀取電機編碼器反饋",[28,35,36],{},"連接底盤控制板",[28,38,39],{},"多個控制節點之間通信",[28,41,42],{},"車輛總線通信",[28,44,45],{},"工業設備和運動控制系統",[15,47,48],{},"對於移動機器人底盤、電機控制、自動駕駛線控系統等方向來說，CAN 是非常重要的一類通信方式。",[50,51,53],"h3",{"id":52},"can-通信是什麼","CAN 通信是什麼",[15,55,56],{},"CAN，全稱 Controller Area Network，是一種多主機總線通信協議。",[15,58,59],{},"和串口點對點通信不同，CAN 總線上可以掛多個節點。每個節點都可以發送消息，其他節點根據 CAN ID 判斷是否需要處理這條消息。",[15,61,62],{},"CAN 通信中常見概念包括：",[64,65,66,79],"table",{},[67,68,69],"thead",{},[70,71,72,76],"tr",{},[73,74,75],"th",{},"概念",[73,77,78],{},"說明",[80,81,82,91,99,107,115,123,131],"tbody",{},[70,83,84,88],{},[85,86,87],"td",{},"CAN ID",[85,89,90],{},"用來標識一幀 CAN 消息的含義或來源",[70,92,93,96],{},[85,94,95],{},"標準幀",[85,97,98],{},"11 位 CAN ID",[70,100,101,104],{},[85,102,103],{},"擴展幀",[85,105,106],{},"29 位 CAN ID",[70,108,109,112],{},[85,110,111],{},"數據區",[85,113,114],{},"經典 CAN 一幀最多 8 字節數據",[70,116,117,120],{},[85,118,119],{},"CAN FD",[85,121,122],{},"CAN 的擴展版本，支持更長數據區和更高數據速率",[70,124,125,128],{},[85,126,127],{},"波特率",[85,129,130],{},"常見有 250K、500K、1M",[70,132,133,136],{},[85,134,135],{},"終端電阻",[85,137,138],{},"CAN 總線兩端通常需要 120Ω 終端電阻",[15,140,141,142,146],{},"在 Linux 中，CAN 設備通常不是 ",[143,144,145],"code",{},"/dev/ttyUSB0"," 這種設備文件，而是被抽象成網絡接口，例如：",[148,149,154],"pre",{"className":150,"code":151,"language":152,"meta":153,"style":153},"language-bash shiki shiki-themes github-light github-dark","can0\n","bash","",[143,155,156],{"__ignoreMap":153},[157,158,161],"span",{"class":159,"line":160},"line",1,[157,162,151],{"class":163},"sScJk",[15,165,166],{},"可以使用下面的命令查看：",[148,168,170],{"className":150,"code":169,"language":152,"meta":153,"style":153},"ip link\n",[143,171,172],{"__ignoreMap":153},[157,173,174,177],{"class":159,"line":160},[157,175,176],{"class":163},"ip",[157,178,180],{"class":179},"sZZnC"," link\n",[50,182,184],{"id":183},"linux-下常見-can-工具和庫","Linux 下常見 CAN 工具和庫",[15,186,187],{},"Linux 下 CAN 通信的核心是 SocketCAN。",[15,189,190,191,194,195,198],{},"SocketCAN 是 Linux 內核提供的 CAN 通信框架，它把 CAN 設備抽象成類似網絡接口的形式，例如 ",[143,192,193],{},"can0","、",[143,196,197],{},"can1","。",[15,200,201],{},"常見工具和庫包括：",[64,203,204,220],{},[67,205,206],{},[70,207,208,211,214,217],{},[73,209,210],{},"方案",[73,212,213],{},"類型",[73,215,216],{},"特點",[73,218,219],{},"適合場景",[80,221,222,236,260,274,288,302],{},[70,223,224,227,230,233],{},[85,225,226],{},"SocketCAN",[85,228,229],{},"Linux 原生 CAN 接口",[85,231,232],{},"Linux 標準方案，通用、穩定、工程常用",[85,234,235],{},"推薦作爲主線學習",[70,237,238,241,244,257],{},[85,239,240],{},"can-utils",[85,242,243],{},"SocketCAN 命令行工具集",[85,245,246,247,194,250,194,253,256],{},"提供 ",[143,248,249],{},"candump",[143,251,252],{},"cansend",[143,254,255],{},"cangen"," 等工具",[85,258,259],{},"調試 CAN 總線",[70,261,262,265,268,271],{},[85,263,264],{},"libsocketcan",[85,266,267],{},"SocketCAN 輔助庫",[85,269,270],{},"便於配置和管理 CAN 接口",[85,272,273],{},"需要程序內配置 CAN 參數時使用",[70,275,276,279,282,285],{},[85,277,278],{},"ros2_socketcan",[85,280,281],{},"ROS 2 封裝庫",[85,283,284],{},"將 SocketCAN 封裝進 ROS 2 生態",[85,286,287],{},"純 ROS 2 項目或參考實現",[70,289,290,293,296,299],{},[85,291,292],{},"ros2_canopen",[85,294,295],{},"ROS 2 CANopen 協議棧",[85,297,298],{},"適合 CANopen 設備",[85,300,301],{},"電機驅動器使用 CANopen 協議時",[70,303,304,307,310,313],{},[85,305,306],{},"廠商 SDK",[85,308,309],{},"廠商提供的驅動庫",[85,311,312],{},"和具體硬件綁定",[85,314,315],{},"使用特定 USB-CAN、PCIe-CAN 設備時",[50,317,318],{"id":318},"各方案對比",[64,320,321,333],{},[67,322,323],{},[70,324,325,327,330],{},[73,326,210],{},[73,328,329],{},"優點",[73,331,332],{},"缺點",[80,334,335,345,355,365,375,385],{},[70,336,337,339,342],{},[85,338,226],{},[85,340,341],{},"Linux 原生、通用、穩定、適合長期學習",[85,343,344],{},"需要理解 socket 編程和 CAN 幀結構",[70,346,347,349,352],{},[85,348,240],{},[85,350,351],{},"調試方便，命令簡單",[85,353,354],{},"主要用於命令行測試，不是完整工程封裝",[70,356,357,359,362],{},[85,358,264],{},[85,360,361],{},"配置 CAN 接口方便",[85,363,364],{},"不是主要的數據收發方案",[70,366,367,369,372],{},[85,368,278],{},[85,370,371],{},"和 ROS 2 生態結合方便",[85,373,374],{},"離開 ROS 2 後複用性較差",[70,376,377,379,382],{},[85,378,292],{},[85,380,381],{},"適合 CANopen 設備，協議棧完整",[85,383,384],{},"只適合 CANopen 場景，學習成本較高",[70,386,387,389,392],{},[85,388,306],{},[85,390,391],{},"對特定硬件支持好",[85,393,394],{},"通用性較差，容易綁定廠商",[50,396,397],{"id":397},"本教程建議選擇",[15,399,400],{},"本教程建議優先選擇：",[148,402,407],{"className":403,"code":405,"language":406,"meta":153},[404],"language-text","SocketCAN + can-utils\n","text",[143,408,405],{"__ignoreMap":153},[15,410,411],{},"原因是：",[25,413,414,417,420,425,428],{},[28,415,416],{},"SocketCAN 是 Linux 下 CAN 通信的標準方案",[28,418,419],{},"不依賴 ROS 2，適合普通 C++、OpenCV、Qt、嵌入式 Linux 項目",[28,421,422,424],{},[143,423,240],{}," 非常適合調試和驗證 CAN 設備",[28,426,427],{},"後續可以封裝成普通 C++ driver",[28,429,430,431],{},"可以自然接入 ",[143,432,433],{},"ros2_control hardware_interface",[15,435,436],{},"推薦的學習順序是：",[148,438,441],{"className":439,"code":440,"language":406,"meta":153},[404],"1. 使用 ip link 配置 can0\n2. 使用 candump 接收 CAN 帧\n3. 使用 cansend 发送 CAN 帧\n4. 理解 struct can_frame\n5. 使用 C++ SocketCAN 进行收发\n6. 封装自己的 CanDriver 类\n7. 接入 ROS 2 或 ros2_control\n",[143,442,440],{"__ignoreMap":153},[15,444,445],{},"推薦的工程結構是：",[148,447,450],{"className":448,"code":449,"language":406,"meta":153},[404],"上层项目：ROS 2 / OpenCV / Qt / 普通 C++ 程序\n        ↓\n自己封装的 CanDriver 类\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器 / STM32 / 底盘控制板\n",[143,451,449],{"__ignoreMap":153},[50,453,455],{"id":454},"與-ros-2-的關係","與 ROS 2 的關係",[15,457,458],{},"學習 SocketCAN，並不代表不用 ROS 2。",[15,460,461,462,464],{},"在 ROS 2 項目中，可以將 CAN 通信封裝成一個普通 C++ 類，然後在 ROS 2 節點或 ",[143,463,433],{}," 中調用。",[15,466,467],{},"例如：",[148,469,472],{"className":470,"code":471,"language":406,"meta":153},[404],"ros2_control controller\n        ↓\nhardware_interface\n        ↓\n自己封装的 CanDriver\n        ↓\nSocketCAN\n        ↓\ncan0\n        ↓\n电机驱动器\n",[143,473,471],{"__ignoreMap":153},[15,475,476],{},"這樣做的好處是，CAN 通信代碼不會和 ROS 2 強綁定。以後即使寫普通 C++ 項目、Qt 上位機或者 OpenCV 控制程序，也可以繼續複用同一套 CAN driver。",[50,478,480],{"id":479},"什麼時候使用-ros2_socketcan","什麼時候使用 ros2_socketcan",[15,482,483,485],{},[143,484,278],{}," 並不是不能用。",[15,487,488,489,491],{},"如果項目本身就是純 ROS 2 架構，並且希望快速把 CAN 幀轉換成 ROS 2 topic，那麼 ",[143,490,278],{}," 是一個可以考慮的方案。",[15,493,494],{},"但是對於底層驅動學習和長期工程複用來說，仍然建議先掌握 SocketCAN。",[15,496,497],{},"可以這樣理解：",[148,499,502],{"className":500,"code":501,"language":406,"meta":153},[404],"SocketCAN：底层能力\nros2_socketcan：ROS 2 封装\n",[143,503,501],{"__ignoreMap":153},[15,505,506,507,509],{},"先學 SocketCAN，再看 ",[143,508,278],{}," 會更容易理解。",[50,511,513],{"id":512},"什麼時候使用-ros2_canopen","什麼時候使用 ros2_canopen",[15,515,516],{},"如果你的電機驅動器或工業設備使用的是 CANopen 協議，那麼就不能只把它當作普通 CAN 幀通信來看待。",[15,518,519],{},"CANopen 是建立在 CAN 之上的高層協議，涉及對象字典、PDO、SDO、NMT 等概念。",[15,521,522],{},"這種情況下，可以考慮學習：",[148,524,527],{"className":525,"code":526,"language":406,"meta":153},[404],"ros2_canopen\n",[143,528,526],{"__ignoreMap":153},[15,530,531],{},"但如果你的設備只是自定義 CAN 協議，例如自己規定 CAN ID 和數據格式，那麼優先學習 SocketCAN 就足夠了。",[50,533,534],{"id":534},"本章學習目標",[15,536,537],{},"學習完本章後，應該能夠掌握：",[25,539,540,543,549,556,563,566,569,572],{},[28,541,542],{},"CAN 通信的基本概念",[28,544,545,546,548],{},"Linux 下 ",[143,547,193],{}," 設備的使用方式",[28,550,551,552,555],{},"使用 ",[143,553,554],{},"ip link"," 配置 CAN 波特率",[28,557,551,558,194,560,562],{},[143,559,249],{},[143,561,252],{}," 調試 CAN 總線",[28,564,565],{},"理解 CAN ID、標準幀、擴展幀、數據區等概念",[28,567,568],{},"使用 C++ SocketCAN 進行 CAN 幀收發",[28,570,571],{},"將 CAN 通信封裝成可複用的 C++ 類",[28,573,574],{},"爲後續接入 ROS 2、ros2_control、電機驅動器控制打基礎",[576,577,578],"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);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":153,"searchDepth":580,"depth":580,"links":581},2,[582],{"id":12,"depth":580,"text":13,"children":583},[584,586,587,588,589,590,591,592],{"id":52,"depth":585,"text":53},3,{"id":183,"depth":585,"text":184},{"id":318,"depth":585,"text":318},{"id":397,"depth":585,"text":397},{"id":454,"depth":585,"text":455},{"id":479,"depth":585,"text":480},{"id":512,"depth":585,"text":513},{"id":534,"depth":585,"text":534},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","13.2",13020000,"2023-12-30","wiki/2023-12-30-ros2-tutorial","zh-hant:2023-12-30-ros2-tutorial","/zh-hant/wiki/2023-12-30-ros2-tutorial","Ros2 Tutorial","md","wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信",false,true,null,"zh-Hant","zh-hant",{},{"title":5,"description":153},"/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-CAN通信","N3YYTFu66Gt8QQF9hFn0IYILa6LPr2bHF_1hECOE_NQ",[614,620,626,632,638,644,650,656,662,668,674,680,686,692,698,703,709,710,715,721,726,732,738,744,750,756,762,768,774,780,786,792,798,804,810,816,822,828,834,840,846,852,858,864,870,876,882,888,894,900,906,912,918,924,930,936,942,948,954,960],{"path":615,"stem":616,"title":617,"date":596,"chapter":618,"chapterSort":619,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ros2-jie-shao","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch1-ROS2介绍","ROS2介紹","1",1000000,{"path":621,"stem":622,"title":623,"date":596,"chapter":624,"chapterSort":625,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch10-stage-ros2-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch10-Stage_Ros2仿真平台","Stage_Ros2仿真平臺","10",10000000,{"path":627,"stem":628,"title":629,"date":596,"chapter":630,"chapterSort":631,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-1-gazeboclassic","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-1-GazeboClassic","Gezebo Classic","11.1",11010000,{"path":633,"stem":634,"title":635,"date":596,"chapter":636,"chapterSort":637,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-2-ignitiongazebo","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-2-IgnitionGazebo","Ignition Gazebo（Gazebo Fortress）","11.2",11020000,{"path":639,"stem":640,"title":641,"date":596,"chapter":642,"chapterSort":643,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-3-gazebosim","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-3-GazeboSim","Gz Sim（Gazebo Harmonic）","11.3",11030000,{"path":645,"stem":646,"title":647,"date":596,"chapter":648,"chapterSort":649,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-4-igngz2gzsim","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-4-Igngz2gzsim","將Ign Gazebo遷移至Gz Sim","11.4",11040000,{"path":651,"stem":652,"title":653,"date":596,"chapter":654,"chapterSort":655,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-gezebo-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch11-Gezebo仿真平台","Gezebo仿真平臺","11",11000000,{"path":657,"stem":658,"title":659,"date":596,"chapter":660,"chapterSort":661,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-1-humble-ban-ben","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-1-Humble版本","Humble導航仿真","12.1",12010000,{"path":663,"stem":664,"title":665,"date":596,"chapter":666,"chapterSort":667,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-2-jazzy-ban-ben","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-2-Jazzy版本","Jazzy導航仿真","12.2",12020000,{"path":669,"stem":670,"title":671,"date":596,"chapter":672,"chapterSort":673,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-3-humble2jazzy","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-3-Humble2Jazzy","Humble與Jazzy導航的差異","12.3",12030000,{"path":675,"stem":676,"title":677,"date":596,"chapter":678,"chapterSort":679,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-ji-qi-ren-dao-hang-navigation2-fang-zhen-pian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch12-机器人导航Navigation2(仿真篇)","機器人導航Navigation2(仿真篇)","12",12000000,{"path":681,"stem":682,"title":683,"date":596,"chapter":684,"chapterSort":685,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-1-Boost.Aiso","Boost.Asio庫","13.1.1",13010100,{"path":687,"stem":688,"title":689,"date":596,"chapter":690,"chapterSort":691,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2-serial-driver","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-2-ros2_serial_driver","ROS2 Serial Driver庫","13.1.2",13010200,{"path":693,"stem":694,"title":695,"date":596,"chapter":696,"chapterSort":697,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-chuan-kou-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-1-串口通信","UART串口通信","13.1",13010000,{"path":699,"stem":700,"title":226,"date":596,"chapter":701,"chapterSort":702,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-1-socketcan","13.2.1",13020100,{"path":704,"stem":705,"title":706,"date":596,"chapter":707,"chapterSort":708,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2-socketcan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-2-2-ros2_socketcan","ROS2_SocketCAN","13.2.2",13020200,{"path":593,"stem":611,"title":5,"date":596,"chapter":594,"chapterSort":595,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},{"path":711,"stem":712,"title":683,"date":596,"chapter":713,"chapterSort":714,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-1-Boost.Aiso","13.3.1",13030100,{"path":716,"stem":717,"title":718,"date":596,"chapter":719,"chapterSort":720,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-tcp-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-3-TCP通信","TCP通信","13.3",13030000,{"path":722,"stem":723,"title":683,"date":596,"chapter":724,"chapterSort":725,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-1-boost-aiso","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-1-Boost.Aiso","13.4.1",13040100,{"path":727,"stem":728,"title":729,"date":596,"chapter":730,"chapterSort":731,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-udp-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-4-UDP通信","UDP通信","13.4",13040000,{"path":733,"stem":734,"title":735,"date":596,"chapter":736,"chapterSort":737,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-linux-ying-jian-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch13-Linux硬件通信","Linux硬件通信","13",13000000,{"path":739,"stem":740,"title":741,"date":596,"chapter":742,"chapterSort":743,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-1-ji-qi-ren-zu-cheng","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-1-机器人组成","機器人組成","14.1",14010000,{"path":745,"stem":746,"title":747,"date":596,"chapter":748,"chapterSort":749,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-1-yuan-cheng-kai-fa-ssh","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-1-远程开发SSH","遠程開發SSH","14.2.1",14020100,{"path":751,"stem":752,"title":753,"date":596,"chapter":754,"chapterSort":755,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-2-yuan-cheng-fang-wen-zhuo-mian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-2-远程访问桌面","遠程訪問桌面","14.2.2",14020200,{"path":757,"stem":758,"title":759,"date":596,"chapter":760,"chapterSort":761,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-gong-kong-ji-zhi-yuan-cheng-kai-fa-huan-jing","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-2-工控机之远程开发环境","工控機之遠程開發環境","14.2",14020000,{"path":763,"stem":764,"title":765,"date":596,"chapter":766,"chapterSort":767,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-3-gong-kong-ji-zhi-wai-jie-usb-she-bei","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-3-工控机之外接USB设备","工控機之外接USB設備","14.3",14030000,{"path":769,"stem":770,"title":771,"date":596,"chapter":772,"chapterSort":773,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-4-fen-bu-shi-da-jian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-4-分布式搭建","分佈式搭建","14.4",14040000,{"path":775,"stem":776,"title":777,"date":596,"chapter":778,"chapterSort":779,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-5-you-hua-ri-zhi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-5-优化日志","優化日誌","14.5",14050000,{"path":781,"stem":782,"title":783,"date":596,"chapter":784,"chapterSort":785,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-1-li-cheng-ji-odom","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-1-里程计Odom","里程計Odom","14.6.1",14060100,{"path":787,"stem":788,"title":789,"date":596,"chapter":790,"chapterSort":791,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-2-guan-xing-ji-imu","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-2-惯性计IMU","慣性計IMU","14.6.2",14060200,{"path":793,"stem":794,"title":795,"date":596,"chapter":796,"chapterSort":797,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-3-ji-guang-lei-da-lidar","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-3-激光雷达LiDAR","激光雷達LiDAR","14.6.3",14060300,{"path":799,"stem":800,"title":801,"date":596,"chapter":802,"chapterSort":803,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-4-xiang-ji-camera","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-4-相机Camera","相機Camera","14.6.4",14060400,{"path":805,"stem":806,"title":807,"date":596,"chapter":808,"chapterSort":809,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-5-quan-qiu-ding-wei-gnss","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-5-全球定位GNSS","全球定位GNSS","14.6.5",14060500,{"path":811,"stem":812,"title":813,"date":596,"chapter":814,"chapterSort":815,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-6-shou-bing-joy","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-6-手柄joy","手柄JOY","14.6.6",14060600,{"path":817,"stem":818,"title":819,"date":596,"chapter":820,"chapterSort":821,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-7-jian-pan-kong-zhi-jie-dian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-7-键盘控制节点","鍵盤控制節點","14.6.7",14060700,{"path":823,"stem":824,"title":825,"date":596,"chapter":826,"chapterSort":827,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-ying-jian-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-6-硬件平台","硬件平臺","14.6",14060000,{"path":829,"stem":830,"title":831,"date":596,"chapter":832,"chapterSort":833,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-7-zuo-biao-xi-yu-hua-ti-guan-xi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-7-坐标系与话题关系","座標系與話題關係","14.7",14070000,{"path":835,"stem":836,"title":837,"date":596,"chapter":838,"chapterSort":839,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-lun-shi-li-cheng-ji-biao-ding","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-1-轮式里程计标定","輪式里程計標定","14.8.1.1",14080101,{"path":841,"stem":842,"title":843,"date":596,"chapter":844,"chapterSort":845,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-lun-shi-li-cheng-ji-yu-imu-rong-he","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-2-轮式里程计与IMU融合","輪式里程計與IMU融合","14.8.1.2",14080102,{"path":847,"stem":848,"title":849,"date":596,"chapter":850,"chapterSort":851,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-lun-shi-li-cheng-ji-biao-ding-yu-rong-he","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-1-轮式里程计标定与融合","輪式里程計標定與融合","14.8.1",14080100,{"path":853,"stem":854,"title":855,"date":596,"chapter":856,"chapterSort":857,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-2-ji-guang-lei-da-gong-ju","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-2-激光雷达工具","激光雷達工具","14.8.2",14080200,{"path":859,"stem":860,"title":861,"date":596,"chapter":862,"chapterSort":863,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-3-xiang-ji-shi-yong-jin-jie","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-3-相机使用进阶","相機使用進階","14.8.3",14080300,{"path":865,"stem":866,"title":867,"date":596,"chapter":868,"chapterSort":869,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-ying-jian-ping-tai-jin-jie","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-8-硬件平台进阶","硬件平臺進階","14.8",14080000,{"path":871,"stem":872,"title":873,"date":596,"chapter":874,"chapterSort":875,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-ji-qi-ren-ying-jian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch14-机器人硬件","機器人硬件","14",14000000,{"path":877,"stem":878,"title":879,"date":596,"chapter":880,"chapterSort":881,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch15-ros2-control","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch15-ROS2_Control","ROS2_Control","15",15000000,{"path":883,"stem":884,"title":885,"date":596,"chapter":886,"chapterSort":887,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch16-moveit2-gong-ye-ji-qi-ren-ji-xie-bi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch16-Moveit2工业机器人机械臂","Moveit2工業機器人機械臂","16",16000000,{"path":889,"stem":890,"title":891,"date":596,"chapter":892,"chapterSort":893,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch17-ji-qi-ren-dao-hang-navigation2-shi-ti-pian","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch17-机器人导航Navigation2(实体篇)","機器人導航Navigation2(實體篇)","17",17000000,{"path":895,"stem":896,"title":897,"date":596,"chapter":898,"chapterSort":899,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch18-microros","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch18-MicroROS","MicroROS","18",18000000,{"path":901,"stem":902,"title":903,"date":596,"chapter":904,"chapterSort":905,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch19-webots-fang-zhen-ping-tai","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch19-Webots仿真平台","Webots仿真平臺","19",19000000,{"path":907,"stem":908,"title":909,"date":596,"chapter":910,"chapterSort":911,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch2-ru-men-cao-zuo","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch2-入门操作","入門操作","2",2000000,{"path":913,"stem":914,"title":915,"date":596,"chapter":916,"chapterSort":917,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch20-opencv","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch20-OpenCV","OpenCV","20",20000000,{"path":919,"stem":920,"title":921,"date":596,"chapter":922,"chapterSort":923,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch3-gong-zuo-kong-jian-yu-gong-neng-bao","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch3-工作空间与功能包","工作空間與功能包","3",3000000,{"path":925,"stem":926,"title":927,"date":596,"chapter":928,"chapterSort":929,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch4-si-da-tong-xin","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch4-四大通信","四大通信","4",4000000,{"path":931,"stem":932,"title":933,"date":596,"chapter":934,"chapterSort":935,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch5-ros2-qi-ta-tong-xin-ji-zhi","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch5-ROS2其他通信机制","ROS2其他通信機制","5",5000000,{"path":937,"stem":938,"title":939,"date":596,"chapter":940,"chapterSort":941,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch6-launch","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch6-Launch","Launch","6",6000000,{"path":943,"stem":944,"title":945,"date":596,"chapter":946,"chapterSort":947,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch7-hui-su-rosbag2","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch7-回溯rosbag2","回溯rosbag2","7",7000000,{"path":949,"stem":950,"title":951,"date":596,"chapter":952,"chapterSort":953,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch8-zuo-biao-bian-huan-tf","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch8-坐标变换TF","座標變換TF","8",8000000,{"path":955,"stem":956,"title":957,"date":596,"chapter":958,"chapterSort":959,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":603},"/zh-hant/wiki/2023-12-30-ros2-tutorial/ch9-ke-shi-hua-ping-tai-rviz2-yu-urdf-jian-mo-yu-yan","_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/ch9-可视化平台RVIZ2与URDF建模语言","可視化平臺RVIZ2與URDF建模語言","9",9000000,{"path":599,"stem":961,"title":962,"date":596,"chapter":605,"chapterSort":963,"docKey":598,"docRoot":599,"docTitle":600,"isWikiDoc":604,"isWikiIndex":604},"_i18n/zh-hant/wiki/2023-12-30-ros2-tutorial/index","ROS2機器人操作系統教程",0,{"variants":965},[966,969,970,973,976],{"path":967,"localeSlug":968,"i18nKey":602},"/en-us/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","en-us",{"path":593,"localeSlug":607,"i18nKey":602},{"path":971,"localeSlug":972,"i18nKey":602},"/zh-hk/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","zh-hk",{"path":974,"localeSlug":975,"i18nKey":602},"/zh-tw/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","zh-tw",{"path":977,"localeSlug":978,"i18nKey":602},"/zh-cn/wiki/2023-12-30-ros2-tutorial/ch13-2-can-tong-xin","zh-cn",[967,610,593,610,971,610,974,610,977,610],1780671833013]